Hey eindelijk heb ik zelf echt een vraag.. dus laat ik deze kans niet voorbij gaan om jullie brain ook eens ff lekker te pijndigen ...
De bedoeling is een programma die de zogenaamde "happy Cube"
hieronder 2 methodes... de 1e is het belangrijkste.. het is de bedoeling dat de 5 overgeblevens stukjes op alle 8 mogelijkheden worden geprobeerd...
de 1e 8 gaan helemaal super.. maar daarna krijg ik ipv een mooie array een adres terug ofzo het is iig een enorme trash bende ... wat ik dus denk ik dat door de recursie mijn Queue of List dus danig naar zijn grootje gaat dat het niet meer om aan te zien is... ( ik weet omschrijving is vaag .. maareh .. probleem ook)
De bedoeling is een programma die de zogenaamde "happy Cube"
hieronder 2 methodes... de 1e is het belangrijkste.. het is de bedoeling dat de 5 overgeblevens stukjes op alle 8 mogelijkheden worden geprobeerd...
de 1e 8 gaan helemaal super.. maar daarna krijg ik ipv een mooie array een adres terug ofzo het is iig een enorme trash bende ... wat ik dus denk ik dat door de recursie mijn Queue of List dus danig naar zijn grootje gaat dat het niet meer om aan te zien is... ( ik weet omschrijving is vaag .. maareh .. probleem ook)
procedure TWirrelWarrel.BaseConnect(Array1 : TMyArray; kant1,
kant2, stap : Integer; MyQueue: TQueue);
var
firstArray : TSmallArray;
Array2 : TMyArray;
p : ^TMyArray;
i,j,q,max : integer;
begin
firstArray := GetSide(Array1,kant1);
max := MyQueue.Count;
for q := 1 to max do
begin
p := MyQueue.peek;
Array2 := p^;
List.add(@Array2);
MyQueue.pop;
for i := 1 to 4 do
begin
Array2 := RotateArray(Array2);
if(stap = 1) then
begin
ListBox1.Items.Add(ArrayToString(Array2));
end;
if((CheckConnection(firstArray, GetSide(Array2,(kant2)))) = true) then
begin
Logistiek(MyQueue, (stap + 1));
end;
end;
Array2 := MirrorArray(Array2);
for j := 1 to 4 do
begin
Array2 := RotateArray(Array2);
if(stap = 1) then
begin
ListBox1.Items.Add(ArrayToString(Array2));
end;
if((CheckConnection(firstArray, GetSide(Array2,(kant2)))) = true) then
begin
Logistiek(MyQueue, (stap + 1));
end;
end;
MyQueue.push(List.Extract(List.Last));
end;
end;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
procedure TWirrelWarrel.Logistiek(MyQueue: TQueue; stap : Integer);
var
Array1, Array2, Array3 : TMyArray;
p : ^TMyArray;
begin
if(stap < 13) then
begin
case stap of
1 : begin
// AB/BA
p := List.Items[0];
Array1 := p^;
BaseConnect(Array1,4,2,stap,MyQueue);
end;
2 : begin
// AC/CA
p := List.Items[0];
Array1 := p^;
BaseConnect(Array1,3,1,stap,MyQueue);
end;