Algorytm wypisujacy ruchy skoczka(szachy) w tablicy 8x8

0

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")

3
mike aka wolf napisał(a)

Dopiero się uczę javy proszę wybaczyć mi zapewne prymitywny "język"

Nie przejmuj się. Przecież to nie Twoja wina, że Java to prymitywny język :D

Natknąłeś się na ten problem, ale to zadanie na napisanie algorytmu, a nie serii if'ów :D I to nie chodzi o to, że dopiero uczysz się języka, ważne jest, żeby opracować dobry algorytm. Tu masz co nieco :) - http://www.algorytm.org/inne/problem-skoczka-konika-szachowego.html

1 użytkowników online, w tym zalogowanych: 0, gości: 1