Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.53 KB | None | 0 0
  1. %Presentes
  2. go :- regra([GA1, GA2, GA3, GA4, GA4, GA5]),
  3.             writeIn("\n GA1":GA1),
  4.             writeIn("\n GA2":GA2),
  5.             writeIn("\n GA3":GA3),
  6.             writeIn("\n GA4":GA4),
  7.             writeIn("\n GA5":GA5).
  8.        
  9.        /* O comando go nao ta funcionando :(           
  10.  
  11.        Consultando regra(X) no tkEclipse, I2 aparece como 9 e I3 como 9
  12.        tambem. Nao consegui fazer o debug disso. De resto ta tudo certo.
  13.        Soh conferir na tabela. :) Se tu conseguir achar onde ta o bug
  14.        ficarei muito felis! */
  15.  
  16. regra( [(N1, I1, S1, P1, PR1, CR1),
  17.         (N2, I3, S2, P2, PR2, CR2),
  18.         (N3, I3, S3, P3, PR3, CR3),
  19.         (N4, I4, S4, P4, PR4, CR4),
  20.         (N5, I5, S5, P5, PR5, CR5)]):-
  21.        
  22.    
  23.     /* INFO CONHECIDA SOBRE NOMES */
  24.     (nome(N1), nome(N2), nome(N3), nome(N4), nome(N5),
  25.     alldifferent([N1, N2, N3, N4, N5]),
  26.    
  27.     /* INFO CONHECIDA SOBRE IDADES */
  28.     idade(I1), idade(I2), idade(I3), idade(I4), idade(I5),
  29.     alldifferent([I1, I2, I3, I4, I5]),
  30.    
  31.     /* INFO CONHECIDA SOBRE SUCOS */
  32.     suco(S1), suco(S2), suco(S3), suco(S4), suco(S5),
  33.     alldifferent([S1, S2, S3, S4, S5]),
  34.    
  35.     /* INFO CONHECIDA SOBRE PROFISSOES */
  36.     profissao(P1), profissao(P2), profissao(P3), profissao(P4), profissao(P5),
  37.     alldifferent([P1, P2, P3, P4, P5]),
  38.    
  39.     /* INFO CONHECIDA SOBRE PRESENTES */
  40.     presente(PR1), presente(PR2), presente(PR3), presente(PR4), presente(PR5),
  41.     alldifferent([PR1, PR2, PR3, PR4, PR5]),
  42.    
  43.     /* INFO CONHECIDA SOBRE CORES */
  44.     cor(CR1), cor(CR2), cor(CR3), cor(CR4), cor(CR5),
  45.     alldifferent([CR1, CR2, CR3, CR4, CR5]),
  46.    
  47.     /* RESOLVENDO OS PROBLEMAS */
  48.    
  49.     %1.O garoto que quer ser Bombeiro mora em alguma das casas das pontas.
  50.     ((P1 == bombeiro);(P5 == bombeiro)),
  51.    
  52.     %2.Quem gosta de Maracujá quer ser Médico.
  53.     ((S1 == maracuja, P1 == medico);(S2 == maracuja, P2 == medico);
  54.      (S3 == maracuja, P3 == medico);(S4 == maracuja, P4 == medico);
  55.      (S5 == maracuja, P5 == medico)),
  56.      
  57.     %3. Na terceira casa está o garoto que quer ser Professor.
  58.     (P3 == professor),
  59.    
  60.     %4. Em uma das pontas mora o menino que quer ser Policial.
  61.     ((P1 == policial);(P5 == policial)),
  62.    
  63.     %5. Na quinta casa está o garoto que deseja ser Bombeiro quando crescer.
  64.     (P5 == bombeiro),
  65.    
  66.     %6. O menino que gosta de suco de laranja esta em uma das pontas
  67.     ((S1 == laranja);(S5 == laranja)),
  68.    
  69.     %7.O garoto que gosta de limonada está exatamente à esquerda do que gosta de suco de Morango.
  70.     ((S1 == limao, S2 == morango);(S2 == limao, S3 == morango);
  71.      (S3 == limao, S4 == morango);(S4 == limao, S5 == morango)),
  72.    
  73.     %8.Quem quer ser Médico está exatamente à direita de quem gosta de suco de Abacaxi.
  74.     ((S1 == abacaxi, P2 == medico);(S2 == abacaxi, P3 == medico);
  75.      (S3 == abacaxi, P4 == medico);(S4 == abacaxi, P5 == medico)),
  76.    
  77.     %9.Cristian gosta de suco de Limão.
  78.     ((N1 == willian, S1 == limao);(N2 == willian, S2 == limao);
  79.      (N3 == wilian, S3 == limao);(N4 == willian, S4 == limao);
  80.      (N5 == willian, S5 == limao)),
  81.    
  82.     %10. O menino de 8 anos mora ao lado do que quer um Computador de presente.
  83.     ((I1 == 8, PR2 == computador);
  84.      (I2 == 8, (PR1 == computador ; PR3 == computador));
  85.      (I3 == 8, (PR2 == computador ; PR4 == computador));
  86.      (I4 == 8, (PR3 == computador ; PR5 == computador));
  87.      (I5 == 8, PR4 == computador)),
  88.    
  89.    
  90.     %11. O garoto que quer um Skate está exatamente à esquerda da casa do Alex.
  91.     ((PR1 == skate, N2 == paul);(PR2 == skate, N3 == paul);
  92.      (PR3 == skate, N4 == paul);(PR4 == skate, N5 == paul)),
  93.    
  94.     %12. Na casa de cor Branca mora o menino que deseja um Vídeo Game de natal.
  95.     ((PR1 == videogame, CR1 == branca);(PR2 == videogame, CR2 == branca);
  96.      (PR3 == videogame, CR3 == branca);(PR4 == videogame, CR4 == branca);
  97.      (PR5 == videogame, CR5 == branca)),
  98.      
  99.     %13. Na primeira casa mora o garoto que quer uma Bola de presente de natal.
  100.    
  101.     (PR1 == bola),
  102.    
  103.     %14. Quem quer uma Bicicleta mora ao lado de quem deseja um Vídeo Game de presente.
  104.     ((PR1 == bicicleta, PR2 == videogame);
  105.      (PR2 == bicicleta, (PR1 == videogame ; PR3 == videogame));
  106.      (PR3 == bicicleta, (PR2 == videogame ; PR4 == videogame));
  107.      (PR4 == bicicleta, (PR3 == videogame ; PR5 == videogame));
  108.      (PR5 == bicicleta, PR4 == bicicleta)),
  109.      
  110.     %15. O menino mais novo mora na quinta casa.
  111.     (I5 == 6),
  112.    
  113.     %16. O garoto de 10 anos está em algum lugar entre o de 7 e o de 9 anos, nessa ordem.
  114.     ((I1 == 7, I2 == 10, I3 == 9);
  115.      (I2 == 7, I3 == 10, I4 == 9);
  116.      (I3 == 7, I4 == 10, I5 == 9)),
  117.    
  118.     %17. O garoto de 9 anos quer ser Professor quando crescer.
  119.     ((I1 == 9, P1 == professor);
  120.      (I2 == 9, P2 == professor);
  121.      (I3 == 9, P3 == professor);
  122.      (I4 == 9, P4 == professor);
  123.      (I5 == 9, P5 == professor)),
  124.      
  125.     %18. Pedro mora na terceira casa.
  126.     (N3 == vitor),
  127.    
  128.     %19. Eduardo mora exatamente à direita de Pedro. Eduardo == vinicius , Pedro == vitor.
  129.     ((I1 == vitor, I2 == vinicius);
  130.      (I2 == vitor, I3 == vinicius);
  131.      (I3 == vitor, I4 == vinicius);
  132.      (I4 == vitor, I5 == vinicius)),
  133.    
  134.     %20. Eduardo mora na casa de cor Verde.
  135.     ((N1 == vinicius, CR1 == verde);
  136.      (N2 == vinicius, CR2 == verde);
  137.      (N3 == vinicius, CR3 == verde);
  138.      (N4 == vinicius, CR4 == verde);
  139.      (N5 == vinicius, CR5 == verde)),
  140.    
  141.     %21. A casa de cor Branca está exatamente à esquerda da casa do menino que gosta de suco de Maracujá.
  142.     ((CR1 == branca, S2 == maracuja);
  143.      (CR2 == branca, S3 == maracuja);
  144.      (CR3 == branca, S4 == maracuja);
  145.      (CR4 == branca, S5 == maracuja)),
  146.    
  147.     %22. A casa de cor Azul está exatamente à esquerda da casa do garoto que quer um Vídeo Game.
  148.     ((CR1 == azul, PR2 == videogame);
  149.      (CR2 == azul, PR3 == videogame);
  150.      (CR3 == azul, PR4 == videogame);
  151.      (CR4 == azul, PR5 == videogame)),
  152.      
  153.     %23. A primeira casa é Amarela.
  154.     (CR1 == amarela)).
  155.    
  156.    
  157.    
  158.    
  159.    
  160.    
  161.    
  162.            
  163.  
  164.  
  165. %-----FATOS-----
  166.  
  167.  
  168. cor(amarela).
  169. cor(azul).
  170. cor(branca).
  171. cor(verde).
  172. cor(vermelha).
  173.  
  174. %Nomes
  175.  
  176. nome(willian).
  177. nome(marcos).
  178. nome(vitor).
  179. nome(vinicius).
  180. nome(paul).
  181.  
  182. /*
  183. willian = cristian
  184. marcos = mario
  185. vitor = pedro
  186. vinicius = eduardo
  187. paul = alex
  188. */
  189.  
  190. idade(6).
  191. idade(7).
  192. idade(8).
  193. idade(9).
  194. idade(10).
  195.  
  196. presente(bola).
  197. presente(bicicleta).
  198. presente(videogame).
  199. presente(skate).
  200. presente(computador).
  201.  
  202. suco(limao).
  203. suco(maracuja).
  204. suco(morango).
  205. suco(abacaxi).
  206. suco(laranja).
  207.  
  208. profissao(policial).
  209. profissao(astronauta).
  210. profissao(professor).
  211. profissao(medico).
  212. profissao(bombeiro).
  213. %-------------------
  214. alldifferent([]).
  215. alldifferent([H|T]):- not(member(H,T)),
  216.                       alldifferent(T).
  217.  
  218. imprime_lista([]):- write('\n FIM \n').
  219. imprime_lista([H|T]):- write('\n.............\n'),
  220.                        write(H),
  221.                        imprime_lista(T).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement