Guest User

Untitled

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