.


:




:

































 

 

 

 





 

. , ,

tree (Left, Root, Right),

Left , , tree (), Root (- , , ), Right , tree ().

. :

: tree (end, X, end).

: tree (Left, Root, Right) , , .

1. , Root, .

2. , Root, .

. insert(), :

insert (end, X, tree (end, X, end)).

insert (tree (Left, Root, Right), X, tree (LeftNew, Root, Right)) :- X < Root, insert (Left, X, LeftNew).

insert (tree (Left, Root, Right), X, tree (Left, Root, RightNew)) :- X > Root, insert (Right, X, RightNew).

. insert() . , , :

list_to_tree ([], end).

list_to_tree ([ H | T ], AllTree) :- list_to_tree (T, Tree), insert (Tree, H, AllTree).

. ' .

: (end) [].

: ³ tree (Left, Root, Right), Left L1, a Right L2, [ Root | L2 ] L1.

tree_to_list (end,[]).

tree_to_list (tree (Left, Root, Right), List) :- tree_to_list (Left, L1), tree_to_list (Right, L2), append (L1,[ Root | L2 ], List).

-, .

/* 5_2 */

domains

worker = symbol

listworker = worker*

tree = tree (tree, worker, tree); end

predicates

db1 (tree)

db2 (listworker)

record (worker, tree)

append (listworker, listworker, listworker)

insert (tree, worker, tree)

list_to_tree (listworker, tree)

tree_to_list (tree, listworker)

goal1

goal2

goal3

goal4

goal5

goal6

goal7

goal8

clauses

goal1:- db1 (DB), write (DB).

goal2:- db1 (DB), record (R, DB), write (R), nl, fail.

goal3:- db1 (DB), write ( ), readln (E1), insert (DB, E1, DBnew), write (DBnew).

goal4:- db1 (DB), write ( ), readln (E1), insert (DB, E1, DBnew), record (R, DBnew), write (R), nl, fail.

goal5:- db2 (List), list_to_tree (List, Tree), write (Tree).

goal6:- db2 (List), list_to_tree (List, Tree), record (R, Tree), write (R), nl, fail.

goal7:- db1 (Tree), tree_to_list (Tree, List), write (List).

goal8:- db2 (List), write (List), nl, list_to_tree (List, Tree), write (Tree), nl, tree_to_list (Tree, NewList), write (NewList), nl.

insert (end, X, tree (end, X, end)).

insert (tree (L, Root, R), X, tree (LNew, Root, R)) :- X < Root, insert (L, X, Lnew).

insert (tree (L, Root, R), X, tree (L, Root, RNew)) :- X > Root, insert (R, X, RNew).

list_to_tree ([], end).

list_to_tree ([ H | T ], AllTree) :- list_to_tree (T, Tree), insert (Tree, H, AllTree).

tree_to_list (end,[]).

tree_to_list (tree (L, Root, R), List) :- tree_to_list (L, L1), tree_to_list (R, L2), append (L1,[ Root | L2 ], List).

record (R, tree (LeftTree, _, _)) :- record (R, LeftTree).

record (R, tree (_, R, _)).

record (R, tree (_, _, RightTree)) :- record (R, RightTree).

append ([], L2, L3).

append ([ H | L1 ], L2,[ H | L3 ]) :- append (L1, L2, L3).

db1 (tree (tree (end, a, end), c, tree (end, e, end))).

db2 ([ c, e, a ]).

, . 5_2 . : . , , .

db1() db2(). , . .

(goal1) , .

(goal2) , record().

(goal3 goal4) .

' (goal5 goal6) , , , .

(goal7) .

(goal8) . . . , , .





:


: 2015-11-05; !; : 379 |


:

:

,
==> ...

1903 - | 1735 -


© 2015-2024 lektsii.org - -

: 0.016 .