Ниже приведена программа на Прологе, реализующая REPL-подобную среду для работы со списками.
process(Input) :-
write('> '),
read(Command),
perform(Command,Input,Output),
process(Output).
perform(show,X,X) :- write(X),nl.
perform(add(Item),Before,After) :- append(Before,[Item],After).Пример использования:
> show.
[]
> add(1).
> add(2).
> show.
[1,2]
> add(3).
> show.
[1,2,3]
> exit.
no
Реализовать дополнительные команды для REPL:
clear.— удалить все элементы из списка;set(NewList).— заменить все элементы на данные;getlen.— вывести на экран длину списка;push(X).— добавить элемент в конец списка;pop.— извлечь элемент с конца списка и вывести на экран.
Реализовать команду my. По номеру в журнале её смысл:
- Поменять местами первый и последний элементы списка.
- Удалить все элементы из списка, кроме первого и последнего.
- Переместить N элементов из начала списка в конец.
- Скопировать N элементов из начала списка в конец.
- Удалить первые N элементов списка.
- Удалить последние N элементов списка.
- Подсчитать сумму значений чётных элементов.
- Разместить элементы списка в обратном порядке, кроме первого и последнего.
- Увеличить значение каждого элемента в списке на 1.
- Увеличить значение последнего элемента в списке на 1.
- Вставить в список заданный элеменет по заданному индексу.
- Удалить из списка элемент с заданным индексом.
- Удалить первую половину элементов из списка.
- Поменять местами чётные и нечётные элементы списка.
- Продублировать каждый элемент в списке.
- Вывести средний или левый средний элемент списка на экран.
- Найти в списке элемент с самым большим значением.