![]() |
Alternative zu vielen Arrays ?
Hallöchen mal von mir,
Ich wollte euch als relativen Delphi Neuling um Rat bitten. Und zwar, ich arbeite gerade an einem Sudokulöser und stehe nun davor, für jedes leere Feld ein array zu deklarieren, was bei einem leeren Sudoku 81 stk wären. In jedes dieser arrays sollen nun die Möglichkeiten der Zahlen, welche passen können, hineingeschrieben werden. Da ich mir ziemlich sicher bin das man jedes array deklarieren muss, wollte ich nun fragen ob ihr Vorschläge für eine bessere Lösung hättet. So weit von mir, ich freue mich auf Hilfe sowie eine schöne Zeit hier im Forum^^ |
Re: Alternative zu vielen Arrays ?
Hallo Olga,
Willkommen in der DP :dp: Hier mal ein Ansatz:
Delphi-Quellcode:
Wenn du noch Fragen hast, immer her damit.
type
TDigit = 0..9; TPossibleDigits = array of TDigit; // Alternativ (weiß nicht, was günstiger ist): // TPossibleDigits = set of TDigit; TSudokuArray = array[0..9-1, 0..9-1] of TPossibleDigits; var SudokuArray: TSudokuArray; |
Re: Alternative zu vielen Arrays ?
Die Alternative
![]() |
Re: Alternative zu vielen Arrays ?
Zitat:
|
Re: Alternative zu vielen Arrays ?
Du kannst die möglichen Zahlen in einem Sudoku-Feld als Array deklarieren:
Delphi-Quellcode:
Wenn du Speicher sparen möchtest, dann kannst du das Schlüsselwort packed benützen.
type
TErlaubteZahlen = {packed} array[1..9] of Boolean; Es gäbe auch die Möglichkeit du erlaubten Zahlen bitcodiert in einem Integer oder Short unterzubringen oder die Klasse TBits zu benützen. Das Boolean-Array ist aber die einfachste Möglichkeit. Man kann den Anfangszustand (alle Zahlen von 1 bis 9 erlaubt) so herstellen:
Delphi-Quellcode:
Man erspart sich dadurch eine Schleife von 1 bis 9, die die Werte im Array auf True setzt.
const
AlleErlaubtenZahlen: TErlaubteZahlen= (True,True,True,True,True,True,True,True,True); ... ErlaubteZahlen := AlleErlaubtenZahlen; |
Re: Alternative zu vielen Arrays ?
Zitat:
|
Re: Alternative zu vielen Arrays ?
Sets drängen sich geradezu auf ... nimm Sets ... kaufe 80 und bekomme eins gratis :mrgreen:
|
Re: Alternative zu vielen Arrays ?
VIELEN Dank für die vielen schnellen Antworten. :)
Ich werde mich dann sofort an diese Sets setzen um diese zu verstehen und sie folglich richtig anzuwenden :) Danke nochmal, mal sehen wann ich euch das nächste mal behelligen muss :) (villeicht ja sogar zu den sets?^^) |
Re: Alternative zu vielen Arrays ?
Zitat:
Delphi-Quellcode:
type
TZiffer = 1..9; TZiffernset = set of TZiffer; function AnzahlErlaubterZahlen(x:TZiffernset):integer; var i : TZiffer; begin Result := 0; for i:=1 to 9 do if i in x then Inc(Result); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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