Ik heb groots probleem:
Hier Zit het hem in ( denk ik ) ... myBlokjes list bevat 6 items.. Dit zou dan ook de max van position en oplossing list moeten zijn... maar op een wonderelijke manier lopen die op tot over de 1000 ...
Normaal als ik een hele simpele functie zou maken als:
dan zou je een uitkomst krijgen als:
1
3
4
2
3
4
Dit is dus precies wat ik ook wil ( 1 ( 3,4 ) en dan verder met waar je meer bezig was in dit geval 2,3,4)... Wat doe ik fout aan mijn code ??
Wie ziet het wel ???
Hier Zit het hem in ( denk ik ) ... myBlokjes list bevat 6 items.. Dit zou dan ook de max van position en oplossing list moeten zijn... maar op een wonderelijke manier lopen die op tot over de 1000 ...
Normaal als ik een hele simpele functie zou maken als:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| ArrayA[0] := 1;
ArrayA[1] := 2;
ArrayB[0] := 3;
ArrayB[1] := 4;
Queue := TQueue.Create;
Queue.Push(@ArrayA);
Queue.Push(@ArrayB);
List := TList.Create
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
procedure TQueueForm.DoeIets(MyQueue: TQueue; stap: Integer);
var
uitkomst : TMyArray;
x : ^TMyArray;
begin
x := MYQueue.Peek;
List.Add(MyQueue.Peek);
uitkomst := x^;
ShowMessage('stap = ' + IntToStr(stap) + ' ' + IntToStr(uitkomst[0]));
if(MyQueue.Count > 1) then
begin
MyQueue.pop;
DoeIets(MyQueue,(stap-1));
end;
ShowMessage('stap = ' + IntToStr(stap) + ' ' + IntToStr(uitkomst[1]));
MyQueue.push(List.Last);
end; |
dan zou je een uitkomst krijgen als:
1
3
4
2
3
4
Dit is dus precies wat ik ook wil ( 1 ( 3,4 ) en dan verder met waar je meer bezig was in dit geval 2,3,4)... Wat doe ik fout aan mijn code ??
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| procedure TForm1.VindBlokje(myBlokVerzameling: TVerzameling; Positie, kant1, kant2,
stap: Integer; myBlokjesList, myOplossing, myPositieList: TList);
var
zijde1,zijde2 : TKant;
tempVerzameling : TVerzameling;
position, blokje : integer;
begin
if(gevonden = false) then
begin
zijde1 := GeefKant(myBlokVerzameling,Positie,kant1);
for blokje := 0 to (myBlokjesList.Count - 1) do
for position := 0 to 7 do
begin
tempVerzameling := myBlokjesList.Items[blokje];
zijde2 := GeefKant(tempVerzameling,position,kant2);
if(KantenControle(zijde1,zijde2)= true) then
begin
myOplossing.Add(tempVerzameling);
myPositieList.Add(@position);
ZoekOplossing(myBlokjesList,myOplossing,myPositieList,(stap + 1));
end;
end;
end;
end; |
Wie ziet het wel ???
[ Voor 0% gewijzigd door whoami op 06-11-2002 09:58 ]