Hallo, ein Kollege und ich sitzen jetzt schon seit längerem daran ein Level bei einem Spiel namens „The Bright“ zu lösen. Leider bekommen wir ein speziellles Level nicht hin. Aus Spaß hab ich geschaut obs einen Pascal Compiler für Android gibt und siehe da, ich hatte einen gefunden. Jetzt haben wir uns jeder für sich einen Spaß daraus gemacht ein Programm zum Lösen des Spiels auf dem Handy zu programmieren. Für leichtere Level funktioniert mein Programm, bei diesem speziellen kommt es aber zu keinem Ergebnis, habs auch schon auf den PC übertragen und diesen 2 Stunden ca rechnen lassen und es gab immer noch kein Ergebnis. Das Prinzip des Spieles ist wie folgt: Man klickt auf ein Feld, und das Feld selbst, das Feld rechts und links davon und das Feld oben und unten davon (alles von dem angeklickten Feld ausgehend) werden grau. Ist ein Feld bereits grau wird es weiß. War es weiß wird es wieder schwarz. Am Anfang sind alle Felder schwarz.
Für ein Level der Geometrie: Feld bei 1/1;1/2;2/1;2/2 habe ich zum Test dann folgendes Programm geschrieben, das mir eine Lösung für den Fall geben soll das oben rechts der Stein weiß und unten links der Stein weiß sein soll bei 4 Zügen:
program thebright;
uses crt;
var
f : array[1…10,1…10] of integer;
x, y, z, i, j : integer;
begin
randomize;
while true do
begin
for i := 1 to 9 do
begin
for j := 1 to 9 do
begin
f[i,j] := 0
end;
end;
clrscr;
for i := 1 to 4 do
begin
x := random(2) + 1;
y := random(2) +1;
f[x,y] := (f[x,y] +1) mod 3;
writeln(x,’ ',y);
end;
if (f[1,2] = 2) and (f[2,1] = 2 ) then
begin
readln;
end;
end;
end.
Und mein Programm für das Level mit der ungelösten Geometrie 1/3 2/2 2/3 2/4 3/1 3/2 3/3 3/4 3/5 4/2 4/3 4/4 sieht wie folgt aus:
program thebright;
uses crt;
var
f : array[1…10,1…10] of integer;
x, y, z, i, j : integer;
begin
randomize;
while true do
begin
for i := 1 to 9 do
begin
for j := 1 to 9 do
begin
f[i,j] := 0
end;
end;
clrscr;
for i := 1 to 18 do
begin
x := random(5)+1;
if (x = 1) or (x =5) then
begin
y := 3;
end;
if (x = 2) or (x = 4) then
begin
y := random(3)+2;
end;
if x = 3 then
begin
y := random(4)+1;
end;
f[x,y] := (f[x,y] +1) mod 3;
writeln(x,’ ',y);
end;
if (f[1,3] = 2) and (f[2,2] = 2 ) and (f[2,3] = 2 ) and (f[2,4] = 2 ) and (f[3,1] = 2 ) and (f[3,2] = 2 ) and (f[3,3] = 2 ) and (f[3,4] = 2 ) and (f[3,5] = 2 ) and (f[4,2] = 2 ) and (f[4,3] = 2 ) and (f[4,4] = 2 ) then
begin
readln;
end;
end;
end.
Hab ich nen Fehler, oder ist die Methode alle Möglichkeiten zufällig zu probieren einfach zu zeitintensiv? Für Verbesserungen des Programms würde ich mich sehr freuen
MfG Olli