Programm zum Lösen von the Bright

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 :smile:

MfG Olli

Hallo,

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.

diese Infos sind unzureichend. Du müsstest mindestens auch noch verraten, worin das Ziel des Spiels besteht. Wann hat man einen Level gelöst? Ist es ein Computerspiel (wenn ja: WWW-Homepage? Download?) oder eins, das mit Legesteinen oder wie auch immer gespielt wird? Wie ist der Name „The Bright“ motiviert? Ohne genaue Kenntnis aller Regeln des Spiels wird Dir kein Mensch irgendetwas zu Deinem Programm sagen können. Also: More details, please!

Gruß
Martin

Hallo,

es ist ein Spiel für Android. Ziel des Spiels ist es das alle Felder weiß sind. Am Anfang sind alle schwarz. Wird ein Feld gedrückt, wird dieses Feld eine Stufe hoch gesetzt, ebenso wie die Felder rechts, links, oben und unten davon. Hochsetzen bedeutet: War es schwarz, wird es grad. Ist es grad wird es weiß. War es weiß wird es wieder schwarz. Das ist eigentlich alles was man zum Lösen des Problems wissen muss. Mein aktuelles Programm sieht wie folgt aus:

program thebright;
uses crt;
var
f : array[0…10,0…10] of integer;
x, y, z, i, j : integer;
begin
randomize;
while true do
begin
for i := 0 to 9 do
begin
for j := 0 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;
f[x+1,y] := (f[x+1,y] +1) mod 3;
f[x-1,y] := (f[x-1,y] +1) mod 3;
f[x,y+1] := (f[x,y+1] +1) mod 3;
f[x,y-1] := (f[x,y-1] +1) mod 3;
writeln(x,’ ',y);
end;
if (f[3,1] = 2 ) and (f[2,2] = 2 ) and (f[3,2] = 2 ) and (f[4,2] = 2 ) and (f[1,3] = 2 ) and (f[2,3] = 2 ) and (f[3,3] = 2 ) and (f[4,3] = 2 ) and (f[5,3] = 2) and (f[2,4] = 2 ) and (f[3,4] = 2 ) and (f[4,4] = 2 ) then
begin
readln;
end;
end;
end.

MfG Olli

grad = grau im vorigen Beitrag, sry.