![]() |
Re: Problem im Umgang mit Sets
Zitat:
Hab nicht geprüft ob das so funktioniert. Ich meine du solltest erst dann "auf Single" prüfen, wenn von der Menge der Zahlen einer Zelle die Mengen der anderen Zellen dieser Zeile abgezogen wurden. Die Geschichte mit der Verschiebung und Mod 9 finde ich nicht so glücklich. Ist unklar und teuer..... Und, nach RestMengeNeuZuOrdnen(i,Spalte,Zeile) meine ich sollte die Prüfung abgebrochen werden, weil sich die Voraussetzungen geändert haben.
Delphi-Quellcode:
procedure HiddenSingles;
var i,Spalte,xSpalte,Zeile,Anfangszelle,Verschiebung:integer; RestMenge:Zahlen; begin //Zeilenweise for Zeile:=0 to 8 do for Spalte:=0 to 8 do begin RestMenge:=FeldMenge[Spalte,Zeile]; For xSpalte:=0 to 8 do if xSpalte<>Spalte then RestMenge:=RestMenge-FeldMenge[xSpalte,Zeile]; For i:=1 to 9 do If RestMenge=[i] then begin StringGrid1.cells[Spalte,Zeile]:=Inttostr(i); RestMengeNeuZuOrdnen(i,Spalte,Zeile); exit; end; end; //Spaltenweise //Blockweise end; |
Re: Problem im Umgang mit Sets
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
Wie man ja auch meinem Post zur Grundüberlegung von NakedSingles entnehmen kann, wollte ich es ja auch so machen, dass zuerst alle FeldMengen abgezogen werden und DANN die Restmenge überprüft wird, so wie du es vorgesclagen hast funktionierts
Delphi-Quellcode:
For Zeile:=0 to 8 do
For Spalte:=0 to 8 do begin RestMenge:=FeldMenge[Spalte,Zeile]; For Verschiebung:=1 to 8 do begin RestMenge:=RestMenge-FeldMenge[(Spalte+Verschiebung) mod 9,Zeile]; end; For i:=1 to 9 do If RestMenge=[i] then begin StringGrid1.Cells[Spalte,Zeile]:=inttostr(i); RestMengeNeuZuOrdnen(i,Spalte,Zeile); end; end; Zitat:
Zitat:
Dein Exit würde nur 'etwas' Leistung sparen, oder? PS: Heißt das then-Block, ich habe kurz überlegt ob ich Schleifenkörper schreibe, aber if ist ja keine Schleife ? |
Re: Problem im Umgang mit Sets
Zitat:
Mit unklar meine ich schlecht lesbar. Deine Absicht ist, von der Menge einer Zelle die Mengen aller anderen Zellen der Zeile abzuziehen, und das sollte man dann dem Sourcecode auch entnehmen : Wenn nicht die selbe Zelle dann ... Mit teuer meine ich, daß das MOD vergleichsweise viel Rechenzeit kostet. Zitat:
Da RestMengeNeuZuOrdnen eh' wieder HiddenSingles aufruft, ist es (m.E.) unnötig, die Prüfung fortzusetzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz