Witam.
Ostatnio natknąłem się na ciekawy problem: otóż czy skoczek będąc na jednym polu tylko raz "zwiedzić cala" tablice.
Napisałem program w Javie, który to sprawdza. Jednakże tablica nie wypełnia się do końca, gdy skoczek nie ma gdzie skoczyć program się kończy.
Wydruk tablicy:
10001010
00101110
10111111
10111111
11111111
01111111
11111111
10111111
Fragment "Algorytmu" służący do poruszania się konia po tablicy:
public void skocz(){
if(czyMozliwe(1,2) && sza.czyWolne((x + 1), (y + 2)) && lastUse != 1){
//TODO SKOK 1
x++;
y += 2;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 1;
}
else if(czyMozliwe(1,-2) && sza.czyWolne(x + 1, y - 2) && lastUse != 2){
//TODO SKOK 2
x++;
y -= 2;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 2;
}
else if(czyMozliwe(2,1) && sza.czyWolne(x + 2, y + 1) && lastUse != 3){
//TODO SKOK 3
x += 2;
y++;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 3;
}
else if(czyMozliwe(2,-1) && sza.czyWolne(x + 2, y - 1) && lastUse != 4){
//TODO SKOK 4
x += 2;
y--;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 4;
}
else if(czyMozliwe(-1,2) && sza.czyWolne(x - 1, y + 2) && lastUse != 5){
//TODO SKOK 5
x--;
y += 2;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 5;
}
else if(czyMozliwe(-1,-2) && sza.czyWolne(x - 1, y - 2) && lastUse != 6){
//TODO SKOK 6
x--;
y -= 2;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 6;
}
else if(czyMozliwe(-2,1) && sza.czyWolne(x - 2, y + 1) && lastUse != 7){
//TODO SKOK 7
x -= 2;
y++;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 7;
}
else if(czyMozliwe(-2,-1) && sza.czyWolne(x - 2, y - 1) && lastUse != 8){
//TODO SKOK 8
x -= 2;
y--;
System.out.println("Ruch na: " + x + ", "+ y);
lastUse = 8;
}
else {
System.out.println("KONIEC");
brakTablicy = true;
}
}
(Dopiero się uczę javy proszę wybaczyć mi zapewne prymitywny "język")