Advertisement
Tavi33

BIA

May 5th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. :- dynamic(edge/3).
  2. :- dynamic(node/1).
  3.  
  4. start :- write('\n1. Insert node'),
  5. write('\n2. Delete node'),
  6. write('\n3. Insert edge'),
  7. write('\n4. Delete edge'),
  8. write('\n5. Show graph'),
  9. write('\n6. Exit'),
  10. write('\nChoose option: '),
  11. read(X),
  12. start_program(X).
  13.  
  14. start_program(1) :- write('\nInput the name of the node: '), read(Node), assert(node(Node)), start.
  15.  
  16. start_program(2) :- write('\nInput the name of the node: '), read(Node), retractall(edge(Node, _, _)), retractall(edge(_, Node, _)), retract(node(Node)), start.
  17.  
  18. start_program(3) :- write('\nInput the first node: '),
  19. read(A),
  20. node(A),
  21. write('\nInput the second node: '),
  22. read(B),
  23. node(B),
  24. write('\nInput the cost: '),
  25. read(Cost),
  26. assert(edge(A, B, Cost)),
  27. start.
  28.  
  29. start_program(4) :- write('\nInput the name of the first node: '),
  30. read(A),
  31. write('\nInput the name of the second node: '),
  32. read(B),
  33. retractall(edge(A, B, _)),
  34. start.
  35.  
  36. start_program(5) :- display_graph(), start.
  37.  
  38. start_program(6).
  39.  
  40. display_graph() :- findall(X, node(X), NodeList), display_graph(NodeList).
  41. display_graph([]) :- !, true.
  42. display_graph([Item|Tail]):- findall(X, edge(Item, X, _), EdgeNodesList), display_edges(Item, EdgeNodesList), display_graph(Tail).
  43. display_edges(_, []) :- true.
  44. display_edges(Node, [Item|Tail]) :- edge(Node, Item, Cost), write('\n'), write(Node), write(' to '), write(Item), write(' with cost '), write(Cost), display_edges(Node, Tail).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement