fork download
  1. :- set_prolog_flag(verbose,silent).
  2. :- prompt(_, '').
  3. :- use_module(library(readutil)).
  4.  
  5. cor(amarelo).
  6. cor(azul).
  7. cor(branco).
  8. cor(verde).
  9. cor(vermelho).
  10.  
  11. motorista(vinicius).
  12. motorista(joao).
  13. motorista(limao).
  14. motorista(carol).
  15. motorista(leo).
  16.  
  17. destino(amazonas).
  18. destino(bahia).
  19. destino(mato_grosso).
  20. destino(minas_gerais).
  21. destino(parana).
  22.  
  23. carga(adubo).
  24. carga(carvao).
  25. carga(enxofre).
  26. carga(soda_caustica).
  27. carga(trigo).
  28.  
  29. placa('AAA-1111').
  30. placa('BBB-2222').
  31. placa('CCC-3333').
  32. placa('DDD-4444').
  33. placa('EEE-5555').
  34.  
  35. km(50).
  36. km(100).
  37. km(150).
  38. km(200).
  39. km(250).
  40.  
  41. % Definindo alldiferent
  42. alldifferent([]).
  43. alldifferent([H|T]):- not(member(H,T)),
  44. alldifferent(T).
  45.  
  46.  
  47. start:- caminhoes([C1, C2, C3, C4,C5]),
  48. writeln("\n CAMINHAO 1: ":C1),
  49. writeln("\n CAMINHAO 2: ":C2),
  50. writeln("\n CAMINHAO 3: ":C3),
  51. writeln("\n CAMINHAO 4: ":C4),
  52. writeln("\n CAMINHAO 5: ":C5).
  53.  
  54.  
  55. caminhoes([(COR1, MOTORISTA1, DESTINO1, CARGA1, PLACA1, KM1),
  56. (COR2, MOTORISTA2, DESTINO2, CARGA2, PLACA2, KM2),
  57. (COR3, MOTORISTA3, DESTINO3, CARGA3, PLACA3, KM3),
  58. (COR4, MOTORISTA4, DESTINO4, CARGA4, PLACA4, KM4),
  59. (COR5, MOTORISTA5, DESTINO5, CARGA5, PLACA5, KM5)]):-
  60.  
  61. %%O número 1 fala que Jorge é o motorista do caminhão de placa DDD-4444.
  62. (
  63. (MOTORISTA1=limao,PLACA1='DDD-4444');
  64. (MOTORISTA2=limao,PLACA2='DDD-4444');
  65. (MOTORISTA3=limao,PLACA3='DDD-4444');
  66. (MOTORISTA4=limao,PLACA4='DDD-4444');
  67. (MOTORISTA5=limao,PLACA5='DDD-4444')
  68. ),
  69.  
  70. %%O número 15 fala que Stênio está dirigindo para Minas Gerais.
  71.  
  72. (
  73. (MOTORISTA1=leo,DESTINO1=minas_gerais);
  74. (MOTORISTA2=leo,DESTINO2=minas_gerais);
  75. (MOTORISTA3=leo,DESTINO3=minas_gerais);
  76. (MOTORISTA4=leo,DESTINO4=minas_gerais);
  77. (MOTORISTA5=leo,DESTINO5=minas_gerais)
  78. ),
  79.  
  80. %%O 19 fala que Antônio é o motorista do caminhão de placa EEE-5555.
  81.  
  82. (
  83. (MOTORISTA1=vinicius,PLACA1='EEE-5555');
  84. (MOTORISTA2=vinicius,PLACA2='EEE-5555');
  85. (MOTORISTA3=vinicius,PLACA3='EEE-5555');
  86. (MOTORISTA4=vinicius,PLACA4='EEE-5555');
  87. (MOTORISTA5=vinicius,PLACA5='EEE-5555')
  88. ),
  89.  
  90. %%O número 21 fala que Pedro está ao lado do caminhão que vai para
  91. %%o Mato Grosso.
  92.  
  93. (
  94. (MOTORISTA1=carol,DESTINO2=mato_grosso);
  95. (MOTORISTA2=carol,(DESTINO1=mato_grosso;DESTINO3=mato_grosso));
  96. (MOTORISTA3=carol,(DESTINO2=mato_grosso;DESTINO4=mato_grosso));
  97. (MOTORISTA4=carol,(DESTINO3=mato_grosso;DESTINO5=mato_grosso));
  98. (MOTORISTA5=carol,DESTINO4=mato_grosso)
  99. ),
  100.  
  101. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  102.  
  103. %%O número 4 diz que o caminhão Vermelho está em algum lugar à esquerda
  104. %%do caminhão que vai para o Amazonas.
  105.  
  106. (
  107. (COR1=vermelho,(DESTINO2=amazonas;DESTINO3=amazonas;DESTINO4=amazonas;DESTINO5=amazonas));
  108. (COR2=vermelho,(DESTINO3=amazonas;DESTINO4=amazonas;DESTINO5=amazonas));
  109. (COR3=vermelho,(DESTINO4=amazonas;DESTINO5=amazonas));
  110. (COR4=vermelho,DESTINO5=amazonas)
  111. ),
  112.  
  113. %%O número 6 fala que o caminhão Vermelho está em algum lugar entre o
  114. %%caminhão que está carregando Enxofre e o caminhão Azul, nessa ordem.
  115.  
  116. (
  117. (CARGA1=enxofre,COR3=azul,(COR2=vermelho));
  118. (CARGA1=enxofre,COR4=azul,(COR2=vermelho;COR3=vermelho));
  119. (CARGA1=enxofre,COR5=azul,(COR2=vermelho;COR3=vermelho;COR4=vermelho));
  120. (CARGA2=enxofre,COR4=azul,(COR3=vermelho));
  121. (CARGA2=enxofre,COR5=azul,(COR3=vermelho;COR4=vermelho));
  122. (CARGA3=enxofre,COR5=azul,(COR4=vermelho))
  123. ),
  124.  
  125. %%O número 10 fala que o caminhão Branco está em algum lugar à direita do caminhão Verde.
  126.  
  127. (
  128. (COR1=verde,(COR2=branco;COR3=branco;COR4=branco;COR5=branco));
  129. (COR2=verde,(COR3=branco;COR4=branco;COR5=branco));
  130. (COR3=verde,(COR4=branco;COR5=branco));
  131. (COR4=verde,COR5=branco)
  132. ),
  133.  
  134. %%O número 13 fala que o caminhão Amarelo está exatamente à esquerda do
  135. %%caminhão que tem 200 mil Km rodados.
  136.  
  137. (
  138. (COR1=amarelo,KM2=200);
  139. (COR2=amarelo,KM3=200);
  140. (COR3=amarelo,KM4=200);
  141. (COR4=amarelo,KM5=200)
  142. ),
  143.  
  144. %%O número 17 fala que o veículo Azul está em algum lugar à direita do
  145. %%veículo de placa AAA-1111.
  146.  
  147. (
  148. (PLACA1='AAA-1111',(COR2=azul;COR3=azul;COR4=azul;COR5=azul));
  149. (PLACA2='AAA-1111',(COR3=azul;COR4=azul;COR5=azul));
  150. (PLACA3='AAA-1111',(COR4=azul;COR5=azul));
  151. (PLACA4='AAA-1111',COR5=azul)
  152. ),
  153.  
  154. %%O número 20 fala que o caminhão Azul está em algum lugar à
  155. %%esquerda do caminhão Branco.
  156.  
  157. (
  158. (COR5=branco,(COR4=azul;COR3=azul;COR2=azul;COR1=azul));
  159. (COR4=branco,(COR3=azul;COR2=azul;COR1=azul));
  160. (COR3=branco,(COR2=azul;COR1=azul));
  161. (COR2=branco,COR1=azul)
  162. ),
  163.  
  164. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  165.  
  166. %%O número 2 fala que na quarta posição está o caminhão que vai
  167. %%para Belo Horizonte.
  168. %%LEMBRANDO que Belo Horizonte fica em Minas Gerais.
  169.  
  170. DESTINO4=minas_gerais,
  171.  
  172. %%O número 5 fala que o veículo que vai para a região Centro-oeste
  173. %% está ao lado do caminhão que já rodou 100 mil Km.
  174. %%LEMBRANDO que o Mato Grosso fica no centro-oeste.
  175.  
  176. (
  177. (DESTINO1=mato_grosso,KM2=100);
  178. (DESTINO2=mato_grosso,(KM1=100;KM3=100));
  179. (DESTINO3=mato_grosso,(KM2=100;KM4=100));
  180. (DESTINO4=mato_grosso,(KM3=100;KM5=100));
  181. (DESTINO5=mato_grosso,KM4=100)
  182. ),
  183.  
  184. %%O número 12 fala que quem vai para a região Nordeste está em
  185. %%algum lugar à direita do caminhão Vermelho.
  186. %%LEMBRANDO que a Bahia fica no nordeste.
  187.  
  188. (
  189. (DESTINO2=bahia,COR1=vermelho);
  190. (DESTINO3=bahia,(COR1=vermelho;COR2=vermelho));
  191. (DESTINO4=bahia,(COR1=vermelho;COR2=vermelho;COR3=vermelho));
  192. (DESTINO5=bahia,(COR1=vermelho;COR2=vermelho;COR3=vermelho;COR4=vermelho))
  193. ),
  194.  
  195. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  196.  
  197. %%O número 9 fala que o caminhão de placa DDD-4444 está transportando Soda cáustica.
  198.  
  199. (
  200. (PLACA1='DDD-4444',CARGA1=soda_caustica);
  201. (PLACA2='DDD-4444',CARGA2=soda_caustica);
  202. (PLACA3='DDD-4444',CARGA3=soda_caustica);
  203. (PLACA4='DDD-4444',CARGA4=soda_caustica);
  204. (PLACA5='DDD-4444',CARGA5=soda_caustica)
  205. ),
  206.  
  207. %%O número 16 fala que o caminhão com Adubo está em algum lugar entre o caminhão
  208. %%que vai para Bahia e o caminhão com Carvão, nessa ordem.
  209.  
  210. (
  211. (DESTINO1=bahia,CARGA3=carvao,(CARGA2=adubo));
  212. (DESTINO1=bahia,CARGA4=carvao,(CARGA2=adubo;CARGA3=adubo));
  213. (DESTINO1=bahia,CARGA5=carvao,(CARGA2=adubo;CARGA3=adubo;CARGA4=adubo));
  214. (DESTINO2=bahia,CARGA4=carvao,(CARGA3=adubo));
  215. (DESTINO2=bahia,CARGA5=carvao,(CARGA3=adubo;CARGA4=adubo));
  216. (DESTINO3=bahia,CARGA5=carvao,(CARGA4=adubo))
  217. ),
  218.  
  219. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  220.  
  221. %%O número 8 fala que em uma das pontas está o caminhão de placa AAA-1111.
  222.  
  223. (PLACA1='AAA-1111';PLACA5='AAA-1111'),
  224.  
  225. %%O número 11 fala que o veículo de placa BBB-2222 está ao lado
  226. %%do veículo mais rodado.
  227.  
  228. (
  229. (PLACA1='BBB-2222',KM2=250);
  230. (PLACA2='BBB-2222',(KM1=250;KM3=250));
  231. (PLACA3='BBB-2222',(KM2=250;KM4=250));
  232. (PLACA4='BBB-2222',(KM3=250;KM5=250));
  233. (PLACA5='BBB-2222',KM4=250)
  234. ),
  235.  
  236. %%O número 14 fala que o veículo de placa CCC-3333 está exatamente
  237. %%à direita do veículo de placa DDD-4444.
  238.  
  239. (
  240. (PLACA1='DDD-4444',PLACA2='CCC-3333');
  241. (PLACA2='DDD-4444',PLACA3='CCC-3333');
  242. (PLACA3='DDD-4444',PLACA4='CCC-3333');
  243. (PLACA4='DDD-4444',PLACA5='CCC-3333')
  244. ),
  245.  
  246. %%O número 18 fala que o caminhão de placa DDD-4444 está ao lado do
  247. %%caminhão que já rodou 100 mil Km.
  248.  
  249. (
  250. (PLACA1='DDD-4444',KM2=100);
  251. (PLACA2='DDD-4444',(KM1=100;KM3=100));
  252. (PLACA3='DDD-4444',(KM2=100;KM4=100));
  253. (PLACA4='DDD-4444',(KM3=100;KM5=100));
  254. (PLACA5='DDD-4444',KM4=100)
  255. ),
  256.  
  257. %%O número 22 fala que em uma das pontas está o caminhão de placa EEE-5555.
  258.  
  259. (PLACA1='EEE-5555';PLACA5='EEE-5555'),
  260.  
  261. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  262.  
  263. %%O número 3 diz que o caminhão menos rodado está transportando Carvão.
  264.  
  265. (
  266. (KM1=50,CARGA1=carvao);
  267. (KM2=50,CARGA2=carvao);
  268. (KM3=50,CARGA3=carvao);
  269. (KM4=50,CARGA4=carvao);
  270. (KM5=50,CARGA5=carvao)
  271. ),
  272.  
  273. %%O número 7 diz que na primeira posição está o caminhão que
  274. %%tem 150 mil Km rodados.
  275.  
  276. KM1=150,
  277.  
  278. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  279.  
  280. %% Só no final unifica o que faltar
  281.  
  282. %%Vamos lidar com os motoristas
  283.  
  284. motorista(MOTORISTA1), motorista(MOTORISTA2), motorista(MOTORISTA3),
  285. motorista(MOTORISTA4), motorista(MOTORISTA5),
  286. alldifferent([MOTORISTA1, MOTORISTA2, MOTORISTA3, MOTORISTA4, MOTORISTA5]),
  287.  
  288. %%Vamos lidar com as cores
  289.  
  290. cor(COR1), cor(COR2), cor(COR3), cor(COR4), cor(COR5),
  291. alldifferent([COR1, COR2, COR3, COR4, COR5]),
  292.  
  293. %%Vamos lidar com os destinos
  294.  
  295.  
  296. destino(DESTINO1), destino(DESTINO2), destino(DESTINO3),
  297. destino(DESTINO4), destino(DESTINO5),
  298. alldifferent([DESTINO1, DESTINO2, DESTINO3, DESTINO4, DESTINO5]),
  299.  
  300. %%Vamos lidar com as cargas
  301.  
  302. carga(CARGA1), carga(CARGA2), carga(CARGA3), carga(CARGA4),
  303. carga(CARGA5),
  304. alldifferent([CARGA1, CARGA2, CARGA3, CARGA4, CARGA5]),
  305.  
  306. %%Vamos lidar com as placas
  307.  
  308. placa(PLACA1), placa(PLACA2), placa(PLACA3), placa(PLACA4),
  309. placa(PLACA5),
  310.  
  311. alldifferent([PLACA1, PLACA2, PLACA3, PLACA4, PLACA5]),
  312.  
  313. %%Vamos lidar com as quilometragem
  314.  
  315. km(KM1), km(KM2), km(KM3), km(KM4), km(KM5),
  316.  
  317. alldifferent([KM1, KM2, KM3, KM4, KM5]),
  318.  
  319.  
  320. main:-
  321. start,
  322.  
  323. process:-
  324. /* your code goes here */
  325.  
  326. :- main.
Success #stdin #stdout 0.04s 6708KB
stdin
Standard input is empty
stdout
 CAMINHAO 1: : (verde,joao,mato_grosso,enxofre,AAA-1111,150)

 CAMINHAO 2: : (vermelho,carol,parana,trigo,BBB-2222,100)

 CAMINHAO 3: : (amarelo,limao,bahia,soda_caustica,DDD-4444,250)

 CAMINHAO 4: : (azul,leo,minas_gerais,adubo,CCC-3333,200)

 CAMINHAO 5: : (branco,vinicius,amazonas,carvao,EEE-5555,50)