Skip to content

Instantly share code, notes, and snippets.

@Dietr1ch
Last active December 31, 2015 09:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Dietr1ch/7969323 to your computer and use it in GitHub Desktop.
Save Dietr1ch/7969323 to your computer and use it in GitHub Desktop.
Versión corregida
color(C):- color(C,Y,X), fila(Y),columna(X).
casilla(C,Y,X):- color(C,Y,X).
vecinos(Y1,X1,Y2,X2):- 1{#abs(X1-X2)==1,#abs(Y1-Y2)==1}1, 1{#abs(X1-X2)==0,#abs(Y1-Y2)==0}1, fila(Y1;Y2), columna(X1;X2).
1{casilla(C,Y,X):color(C)}1:- fila(Y), columna(X).
1{camino(C,Y1,X1,Y2,X2):fila(Y2):columna(X2)}1:- color(C,Y1,X1), color(C), fila(Y1), columna(X1).
1{camino(C,Y2,X2,Y1,X1):fila(Y2):columna(X2):color(C)}1:- color(C,Y1,X1), fila(Y1), columna(X1).
2{camino(C,Y1,X1,Y2,X2):fila(Y2):columna(X2):color(C)}2:- {color(C0,Y1,X1):color(C0)}0, casilla(C,Y1,X1), fila(Y1), columna(X1).
2{camino(C,Y2,X2,Y1,X1):fila(Y2):columna(X2):color(C)}2:- {color(C0,Y1,X1):color(C0)}0, fila(Y1), columna(X1).
camino(C,Y1,X1,Y2,X2) :- camino(C,Y2,X2,Y1,X1).
conectado(Y1,X1,Y2,X2):- 1{camino(C,Y1,X1,Y2,X2), camino(C,Y2,X2,Y1,X1)},fila(Y1;Y2),columna(X1;X2),color(C).
conectado(Y1,X1,Y2,X2):- conectado(Y1,X1,Y3,X3), conectado(Y3,X3,Y2,X2), fila(Y1;Y2;Y3), columna(X1;X2;X3).
conectado(Y2,X2,Y1,X1):-conectado(Y1,X1,Y2,X2).
:- camino(C,Y1,X1,Y2,X2), not vecinos(Y1,X1,Y2,X2), fila(Y1;Y2), columna(X1;X2), color(C).
:- camino(C,Y1,X1,Y2,X2), casilla(C,Y1,X1), casilla(C1,Y2,X2), C1!=C.
:- not conectado(Y1,X1,Y2,X2), casilla(C1,Y1,X1), casilla(C2,Y2,X2), C1==C2, color(C1;C2), fila(Y1;Y2),columna(X1;X2).
#hide. #show camino/5.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment