список( Хвост).

9. 2

принадлежит( X, X затем ЧтоУгодно).

принадлежит( X, Y затем Спис) :-

    принадлежит( X, Спис).

9. 3

преобр( [ ], ничего_не_делать).

преобр( [Первый | Хвост], Первый затем Остальные):-

    преобр( Хвост, Остальные).

9. 4

преобр( [ ], ПустСпис, _, ПустСпис).

                                % Случай пустого списка

преобр( [Первый | Хвост], НовСпис, Функтор, Пустой) :-

    НовСпис =.. [Функтор, Первый, НовХвост],

    преобр( Хвост, НовХвост, Функтор, Пустой).

9. 8

сорт1( [ ], [ ]).

сорт1( [X], [X]).

сорт1( Спис, УпорСпис) :-

    разбить( Спис, Спис1, Спис2),

                            % Разбить на 2 прибл. равных списка

    сорт1( Спис1, Упор1),

    сорт1( Спис2, Упор2),

    слить( Упор1, Упор2, УпорСпис).

                            % Слить отсортированные списки

разбить( [ ], [ ], [ ]).

разбить( [X], [X], [ ]).

разбить( [X, Y | L], [X | L1], [Y | L2]) :-

                            % X и Y помещаются в разные списки

    разбить( L, L1, L2).

9. 9

(а)    двдерево( nil).

        двдерево( д( Лев, Кор, Прав) ) :-

            двдерево( Лев),

            двдерево( Прав).

9. 10

глубина( пусто, 0).

глубина( д( Лев, Кор, Прав), Г) :-

    глубина( Лев, ГЛ),

    глубина( Прав, ГП),

    макс( ГЛ, ГП, МГ),

    Г is МГ + 1.

макс( А, В, А) :-

    А >= В,  !.

макс( А, В, В).

9. 11

линеаризация( nil, [ ]).

линеаризация( д( Лев, Кор, Прав), Спис) :-

    линеаризация( Лев, Спис1),

    линеаризация( Прав, Спис2),

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату