IvoSilva

PLOG - PLS5

Nov 24th, 2014
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.97 KB | None | 0 0
  1. :- use_module(library(lists)).
  2. :- use_module(library(clpfd)).
  3.  
  4. %cor(amarelo, 1).
  5. %cor(azul, 2).
  6. %cor(preto, 3).
  7. %cor(verde, 4).
  8.  
  9. search_car(Cor, Tam) :-
  10.     % def vars
  11.     Cor = [C1, C2, C3, C4],
  12.     Tam = [T1, T2, T3, T4],
  13.    
  14.     % dominios
  15.     domain(Cor, 1, 4),
  16.     domain(Tam, 1, 4),
  17.    
  18.     % carro antes do azul é maior do que o a seguir ao azul
  19.     element(PosAzul, Cor, 2),
  20.     PosAntesAzul #= PosAzul - 1,
  21.     PosSeguirAzul #= PosAzul + 1,
  22.     element(PosAntesAzul, Tam, TamAntes),
  23.     element(PosSeguirAzul, Tam, TamSeguir),
  24.     TamAntes #< TamSeguir,
  25.    
  26.     % carro verde tem o tamanho mais pequeno
  27.     element(PosVerde, Cor, 4),
  28.     element(PosVerde, Tam, 1),
  29.    
  30.     % o carro verde está depois do carro azul
  31.     PosVerde #> PosAzul,
  32.    
  33.     %  o carro amarelo está depois do preto
  34.     element(PosAmarelo, Cor, 1),
  35.     element(PosPreto, Cor, 3),
  36.     PosAmarelo #> PosPreto,
  37.    
  38.     % tamanhos todos diferentes
  39.     all_different(Cor),
  40.     all_different(Tam),
  41.    
  42.     % labeling
  43.     append(Tam, Cor, Vars),
  44.     labeling([], Vars).
Advertisement
Add Comment
Please, Sign In to add comment