Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :-use_module(library(clpfd)).
- %encaixe para fora - 1; encaixe para dentro - 0; A representacao comeca da face esquerda e da a volta no sentido horario
- peca(1,[0,1,1,1]).
- peca(2,[0,0,1,0]).
- peca(3,[1,0,0,0]).
- peca(4,[0,1,0,1]).
- peca(5,[1,1,1,1]).
- peca(6,[0,0,0,1]).
- peca(7,[1,1,0,1]).
- peca(8,[0,0,1,1]).
- peca(9,[1,1,1,0]).
- peca(10,[1,0,1,1]).
- peca(11,[1,1,0,0]).
- peca(12,[0,1,0,0]).
- %pecas "virtuais", encaixe para dentro do tabuleiro - 0, encaixe para fora - 1
- %pecaEsquerdaBaixo([1,_,_,1]).
- %pecaEsquerdaMeio([1,_,_,_]).
- %pecaEsquerdaCima([1,1,_,_]).
- %PecaCimaEsquerda([_,0,_,_]).
- %PecaCimaDireita([_,0,_,_]).
- %pecaDireitaCima([_,0,0,_]).
- %pecaDireitaMeio([_,_,0,_]).
- %pecaDireitaBaixo([_,_,0,1]).
- %pecaBaixoDireita([_,_,_,0]).
- %pecaBaixoEsquerda([_,_,_,0]).
- test([7,12,9,2,4,1,5,3,6,8,10,11]).
- coiso:- test(X), rapids(X).
- getPeca(Vars,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12):-
- element(1,Vars,P1),
- element(2,Vars,P2),
- element(3,Vars,P3),
- element(4,Vars,P4),
- element(5,Vars,P5),
- element(6,Vars,P6),
- element(7,Vars,P8),
- element(8,Vars,P8),
- element(9,Vars,P9),
- element(10,Vars,P10),
- element(11,Vars,P11),
- element(12,Vars,P12).
- encaixaDireita(PE,PD):-
- element(3,PE,E),
- element(1,PD,D),
- E+D #= 1.
- encaixaCima(PC,PB):-
- element(4,PC,C),
- element(2,PB,B),
- C #= B.
- rapids(Vars):-
- %0 - orientacao para a direita
- %write('Insere orientacao 0 ou 1: '),
- %read(O),
- %length(Vars,12),
- %domain(Vars,1,12),
- %all_distinct(Vars),
- element(1,Vars,P1),
- element(2,Vars,P2),
- element(3,Vars,P3),
- element(4,Vars,P4),
- element(5,Vars,P5),
- element(6,Vars,P6),
- element(7,Vars,P8),
- element(8,Vars,P8),
- element(9,Vars,P9),
- element(10,Vars,P10),
- element(11,Vars,P11),
- element(12,Vars,P12),
- write(P1),nl,
- peca(P1,C1),
- peca(P2,C2),
- peca(P3,C3),
- peca(P4,C4),
- peca(P5,C5),
- peca(P6,C6),
- peca(P7,C7),
- peca(P8,C8),
- peca(P9,C9),
- peca(P10,C10),
- peca(P11,C11),
- peca(P12,C12),
- %%%%encaixe lateral
- encaixaDireita(C1,C2),
- encaixaDireita(C2,C3),
- encaixaDireita(C3,C4),
- encaixaDireita(C5,C6),
- encaixaDireita(C6,C7),
- encaixaDireita(C7,C8),
- encaixaDireita(C9,C10),
- encaixaDireita(C11,C12),
- %%%%Encaixes Cima
- encaixaCima(C1,C5),
- encaixaCima(C2,C6),
- encaixaCima(C3,C7),
- encaixaCima(C4,C8),
- encaixaCima(C5,C9),
- encaixaCima(C6,C10),
- encaixaCima(C7,C11),
- encaixaCima(C8,C12),
- labeling([],Vars).
Add Comment
Please, Sign In to add comment