Guest User

Untitled

a guest
Apr 21st, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. :-use_module(library(clpfd)).
  2.  
  3. %encaixe para fora - 1; encaixe para dentro - 0; A representacao comeca da face esquerda e da a volta no sentido horario
  4. peca(1,[0,1,1,1]).
  5. peca(2,[0,0,1,0]).
  6. peca(3,[1,0,0,0]).
  7. peca(4,[0,1,0,1]).
  8. peca(5,[1,1,1,1]).
  9. peca(6,[0,0,0,1]).
  10. peca(7,[1,1,0,1]).
  11. peca(8,[0,0,1,1]).
  12. peca(9,[1,1,1,0]).
  13. peca(10,[1,0,1,1]).
  14. peca(11,[1,1,0,0]).
  15. peca(12,[0,1,0,0]).
  16.  
  17. %pecas "virtuais", encaixe para dentro do tabuleiro - 0, encaixe para fora - 1
  18. %pecaEsquerdaBaixo([1,_,_,1]).
  19. %pecaEsquerdaMeio([1,_,_,_]).
  20. %pecaEsquerdaCima([1,1,_,_]).
  21. %PecaCimaEsquerda([_,0,_,_]).
  22. %PecaCimaDireita([_,0,_,_]).
  23. %pecaDireitaCima([_,0,0,_]).
  24. %pecaDireitaMeio([_,_,0,_]).
  25. %pecaDireitaBaixo([_,_,0,1]).
  26. %pecaBaixoDireita([_,_,_,0]).
  27. %pecaBaixoEsquerda([_,_,_,0]).
  28.  
  29. test([7,12,9,2,4,1,5,3,6,8,10,11]).
  30. coiso:- test(X), rapids(X).
  31. getPeca(Vars,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10,P11,P12):-
  32.  
  33. element(1,Vars,P1),
  34. element(2,Vars,P2),
  35. element(3,Vars,P3),
  36. element(4,Vars,P4),
  37. element(5,Vars,P5),
  38. element(6,Vars,P6),
  39. element(7,Vars,P8),
  40. element(8,Vars,P8),
  41. element(9,Vars,P9),
  42. element(10,Vars,P10),
  43. element(11,Vars,P11),
  44. element(12,Vars,P12).
  45.  
  46.  
  47.  
  48.  
  49.  
  50. encaixaDireita(PE,PD):-
  51. element(3,PE,E),
  52. element(1,PD,D),
  53. E+D #= 1.
  54. encaixaCima(PC,PB):-
  55. element(4,PC,C),
  56. element(2,PB,B),
  57. C #= B.
  58.  
  59.  
  60.  
  61. rapids(Vars):-
  62. %0 - orientacao para a direita
  63. %write('Insere orientacao 0 ou 1: '),
  64. %read(O),
  65. %length(Vars,12),
  66. %domain(Vars,1,12),
  67. %all_distinct(Vars),
  68.  
  69. element(1,Vars,P1),
  70. element(2,Vars,P2),
  71. element(3,Vars,P3),
  72. element(4,Vars,P4),
  73. element(5,Vars,P5),
  74. element(6,Vars,P6),
  75. element(7,Vars,P8),
  76. element(8,Vars,P8),
  77. element(9,Vars,P9),
  78. element(10,Vars,P10),
  79. element(11,Vars,P11),
  80. element(12,Vars,P12),
  81. write(P1),nl,
  82. peca(P1,C1),
  83. peca(P2,C2),
  84. peca(P3,C3),
  85. peca(P4,C4),
  86. peca(P5,C5),
  87. peca(P6,C6),
  88. peca(P7,C7),
  89. peca(P8,C8),
  90. peca(P9,C9),
  91. peca(P10,C10),
  92. peca(P11,C11),
  93. peca(P12,C12),
  94.  
  95. %%%%encaixe lateral
  96. encaixaDireita(C1,C2),
  97. encaixaDireita(C2,C3),
  98. encaixaDireita(C3,C4),
  99. encaixaDireita(C5,C6),
  100. encaixaDireita(C6,C7),
  101. encaixaDireita(C7,C8),
  102. encaixaDireita(C9,C10),
  103. encaixaDireita(C11,C12),
  104.  
  105. %%%%Encaixes Cima
  106. encaixaCima(C1,C5),
  107. encaixaCima(C2,C6),
  108. encaixaCima(C3,C7),
  109. encaixaCima(C4,C8),
  110. encaixaCima(C5,C9),
  111. encaixaCima(C6,C10),
  112. encaixaCima(C7,C11),
  113. encaixaCima(C8,C12),
  114. labeling([],Vars).
Add Comment
Please, Sign In to add comment