in meinem derzeitigem Projekt (einen Schachcomputer from scratch), habe Ich ein Problem mit dem Speichern meines Varianten-Baums, Ich kann alle möglichen Stellungen aus einer Stellung erzeugen und in ein Array of pposition speichern.
Code: Alles auswählen
Tposition = array[0..7] of array[0..7] of integer;
pposition = Tposition;
allerdings weiß Ich nicht wie diese Stellungen nun speichern und den vorherigen Stellungen zuordnen kann. Meine Idee für so etwas war ein Zahlencode im index des Arrays
Code: Alles auswählen
var
tree := array of pposition;
begin
tree[011] := position; //Stellung 1 von Stellung 1 von Stellung 0 soll gespeichert werden
tree[011] := position; //Stellung 11 von Stellung 0 soll gespeichert werden
//diese beiden Positionen würden sich also überschreiben. Deswegen habe Ich auf ein Array mit variabler Dimensionsanzahl gehofft. Ungefähr so:
setdimensions(tree,depth); //depth ist die Suchtiefe (also beim ersten zug 1 beim 2ten 2 usw.)
tree[0,1,1] := position; //Stellung 1 von Stellung 1 von Stellung 0 soll gespeichert werden
tree[0,11] := position; //Stellung 11 von Stellung 0 soll gespeichert werden
//diese Methode würde für 2 verschiedene Speicherorte sorgen.
end;
Leider geht dies wahrscheinlich nicht (zumindest habe ich nur Quellen gefunden die es für unmöglich erklärt haben).
Also brauch Ich eine andere Art des Speicherns.
Zurzeit benutze Ich einen Workaround der aber extrem inefficient ist.
Kennt irgendjemand eine Möglichkeit so einen Baum zu speichern?
Danke im Vorraus.