Advertisement
Guest User

tp1

a guest
Oct 12th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 1.39 KB | None | 0 0
  1. % 13.
  2. guardarBaseConhecimento(Nome) :-
  3.     tell(Nome),
  4.     listing(componente),
  5.     listing(elemento),
  6.     listing(custo),
  7.     told.
  8.  
  9. % 11.
  10. produto_arvore(Elemento, Elemento) :-
  11.     produto_base(Elemento), !.
  12.  
  13. produto_arvore(Elemento, (Elemento, LC)) :-
  14.     findall(L, (componente(Elemento, X, _),
  15.     produto_arvore(X, L)), LC).
  16.  
  17. % 10.
  18. descendente_quantidade(Elem, D, Qtd, C) :-
  19.     componente(Elem, D, Qtd), custo(D, C).
  20.  
  21. descendente_quantidade(Elem, D, Qtd, C) :-
  22.     componente(Elem, F, Qtd1),
  23.     descendente_quantidade(F, D, Qtd2, C),
  24.     Qtd is Qtd1 * Qtd2.
  25.  
  26. lista_materiais(Elemento) :-
  27.     findall((X,Qtd, C), (
  28.                 descendente_quantidade(Elemento, X, Qtd, C),
  29.                 produto_base(X)
  30.             ), L),
  31.     findall((C1, R, X), (
  32.                 member((X, _, C), L),
  33.                 quantidade(X, L, R),
  34.                 C1 is C * R
  35.             ), Qtds),
  36.     sort(0, @>, Qtds, NQtds),
  37.     write("Elemento : Qtd"),
  38.     nl,
  39.     write("------------------------------------"),
  40.     nl,
  41.     escrever_lista(NQtds).
  42.  
  43. quantidade(_, [], 0).
  44.  
  45. quantidade(X, [(X,Qtd,_)|T], R) :-
  46.     quantidade(X, T, R1),
  47.     R is R1 + Qtd,
  48.     !.
  49.  
  50. quantidade(X, [_|T], R) :-
  51.     quantidade(X, T, R).
  52.  
  53. escrever_lista([]).
  54.  
  55. escrever_lista([(C, Qtd, Elem)|T]) :-
  56.     write(Elem),
  57.     write(","),
  58.     write(Qtd),
  59.     write(","),
  60.     write(C),
  61.     nl,
  62.     escrever_lista(T).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement