Thursday, January 20, 2011

KNIGHT TOUR TRACE

DO
N = cint(InputBox("Masukkan Ukuran Papan Catur"))
LOOP UNTIL N>=3 AND N<=30 REDIM Papan(N+4,N+4) FOR i=1 TO N+4 FOR j=1 TO N+4 IF i<3 OR j<3 OR i>N+2 OR j>N+2 THEN
Papan(i,j)=99
ELSE
Papan(i,j)=0
END IF
NEXT
NEXT

V = Array(,-2,-1,1,2,2,1,-1,-2)
H = Array(,1,2,2,1,-1,-2,-2,-1)

DO
yAw = cint(InputBox("Masukkan Nomor Baris Awal Kuda"))
xAw = cint(InputBox("Masukkan Nomor Kolom Awal Kuda"))
LOOP UNTIL xAw<=N AND xAw>=1 AND yAw<=N AND yAw>=1
y = yAw+2
x = xAw+2
NoStep=1
Papan(y,x)=NoStep
NoStep=NoStep+1

sukses = false
CALL Try(NoStep, y, x, sukses)
IF sukses=TRUE THEN
CALL CetakPapan()
ELSE
document.write "Tidak Ada Solusinya!!!
"
END IF

SUB Try(byVal i, byVal y, byVal x, byRef sukses)
document.write "Coba Langkah " & i & "
"
p = 0
DO
p = p + 1
document.write "
Coba Prioritas " & p & " "
suksesBerikut = FALSE
IF Papan(y+v(p),x+h(p))=0 THEN
document.write " ---> SUKSES
"
yNext = y+v(p)
xNext = x+h(p)
Papan(yNext,xNext) = i
IF i< n ^ 2 THEN CALL Try(i+1, yNext, xNext, suksesBerikut) IF suksesBerikut = FALSE THEN Papan(yNext,xNext) = 0 END IF ELSE suksesBerikut = TRUE END IF END IF LOOP UNTIL suksesBerikut = TRUE OR p = 8 IF p=8 THEN document.write "Langkah " & i & " Backtrack, karena semua gagal " sukses = suksesBerikut END SUB SUB CetakPapan() document.write "Papan Catur :
"
document.write "" FOR i=3 TO N+2 document.write " " FOR j=3 TO N+2 document.write "" NEXT document.write " " NEXT document.write "
" & Papan(i,j) & "
"
END SUB

No comments:

Post a Comment