3. 1

(a)    конк( L1, [ _, _, _ ], L)

(b)    конк( [ _, _, _ ], L1, L),

                        % Удалить 3 первые элемента L

        конк( L2, [ _, _, _ ], L1)

                        % Удалить 3 последние элемента L1

Вот более короткий вариант, предложенный I. Tvrdy:

        конк( [ _, _, _ | L2], [ _, _, _ ], L)

3. 2

(а)    последний( Элемент, Список) :-

        конк( _, [Элемент], Список).

(b)    последний( Элемент, [Элемент]).

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

        последний( Элемент, Остальные).

3. 3

четнаядлина( [ ] ).

четнаядлина( [Первый | Остальные] ) :-

    нечетнаядлина( Остальные).

нечетнаядлина( [ _ ] ).

нечетнаядлина( [Первый | Остальные] ) :-

    четнаядлина( Остальные).

3. 4

обращение( [ ], [ ]).

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

    обращение( Остальные, ОбращСписОстальных),

конк( О6ращСписОстальных, [Первый], ОбращСпис).

3. 5

% Такой предикат легко определить при помощи отношения обратить

палиндром( Список) :-

    обратить( Список, Список).

% Вот другое решение, не использующее обратить

палиндром1( [ ] ).

палиндром1( [ _ ] ).

палиндром1 [Первый | Остальные] ) :-

    конк( Середина, [Первый], Остальные),

    палиндром1( Середина).

3. 6

сдвиг( [Первый | Остальные], Сдвинут) :-

    конк( Остальные, [Первый], Сдвинут).

3. 7

перевод( [ ], [ ]).

перевод( [Голова | Хвост], [Голова1 | Хвост1]) :-

    означает( Голова, Голова1),

    перевод( Хвост, Хвост1).

3. 8

подмножество( [ ], [ ] ).

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

0

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

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