Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :- dynamic(edge/3).
- :- dynamic(node/1).
- start :- write('\n1. Insert node'),
- write('\n2. Delete node'),
- write('\n3. Insert edge'),
- write('\n4. Delete edge'),
- write('\n5. Show graph'),
- write('\n6. Exit'),
- write('\nChoose option: '),
- read(X),
- start_program(X).
- start_program(1) :- write('\nInput the name of the node: '), read(Node), assert(node(Node)), start.
- start_program(2) :- write('\nInput the name of the node: '), read(Node), retractall(edge(Node, _, _)), retractall(edge(_, Node, _)), retract(node(Node)), start.
- start_program(3) :- write('\nInput the first node: '),
- read(A),
- node(A),
- write('\nInput the second node: '),
- read(B),
- node(B),
- write('\nInput the cost: '),
- read(Cost),
- assert(edge(A, B, Cost)),
- start.
- start_program(4) :- write('\nInput the name of the first node: '),
- read(A),
- write('\nInput the name of the second node: '),
- read(B),
- retractall(edge(A, B, _)),
- start.
- start_program(5) :- display_graph(), start.
- start_program(6).
- display_graph() :- findall(X, node(X), NodeList), display_graph(NodeList).
- display_graph([]) :- !, true.
- display_graph([Item|Tail]):- findall(X, edge(Item, X, _), EdgeNodesList), display_edges(Item, EdgeNodesList), display_graph(Tail).
- display_edges(_, []) :- true.
- 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