
encallado en esta regla, me devuelve false siempre que ejecuto la llamada recursiva
Publicado por alex (7 intervenciones) el 19/04/2017 00:11:16
Muy buenas, estoy haciendo una práctica en prolog para la asignatura de teoría de los lenguajes y estoy encallado en esta regla, me devuelve false siempre que la ejecuto, y es la llamada recursiva, llevo varios días sin saber que hacer, ayuda please.
validSquare se ocupa de devolver si F1 y r1 son válidos, y jump me da una serie de moviemientosque son los que haría un caballo en un tablero, mi problema viene con recorrerBT1, al hacer la llamada recursiva me manda un false, y no se el motivo, lo que quiero es que me de el node() que contendrá el camino completo de movimientos, pero siempre me dá false, bueno a ver si alguien puede ayudarme, por que toy desesperadito.
1
2
3
4
5
6
7
8
9
10
11
12
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F+2,R1 is R+1, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F+1,R1 is R+2, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F-1,R1 is R+2, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F-2,R1 is R+1, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F-2,R1 is R-1, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F-1,R1 is R-2, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F+1,R1 is R-2, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
jump(node(N,L,Board,s(F,R),Fr),nnode(N,L1,BoardNuevo,s(F1,R1),[s(F1,R1)|Fr])):-F1 is F+2,R1 is R-1, validSquare(N,s(F1,R1),Board,BoardNuevo),L1 is L + 1.
recorrerBT1(node(N,L,Board,s(F,R),Fr),Nodo):-N1 is N*N, L==N1,Nodo=node(N,L,Board,s(F,R),Fr),!.
recorrerBT1(node(N,L,Board,s(F,R),Fr),Nodo):- jump(node(N,L,Board,s(F,R),Fr),nodo1(N,L1,Board1,s(F1,R1),Fr1)),recorrerBT1(nodo1(N,L1,Board1,s(F1,R1),Fr1),Nodo).
validSquare se ocupa de devolver si F1 y r1 son válidos, y jump me da una serie de moviemientosque son los que haría un caballo en un tablero, mi problema viene con recorrerBT1, al hacer la llamada recursiva me manda un false, y no se el motivo, lo que quiero es que me de el node() que contendrá el camino completo de movimientos, pero siempre me dá false, bueno a ver si alguien puede ayudarme, por que toy desesperadito.
Valora esta pregunta


0