28 сент. 2010 г.

Prolog & Lisp исходники

Задачи на Lisp и Prolog с решениями

Для начала - огромное количество задач в необработанном виде - ЗДЕСЬ

Это типичные задачи из университетского курса на языках Лисп и Пролог.
GNU Prolog - интерпретатор, на котором выполняются примеры на прологе.
mLisp - интерпретатор Лиспа. Загрузка исходного файла производится следующей командой: (LOAD ‘filename)
Например: (LOAD ‘test.lsp)
Либо производится из коммандной строки (cmd.exe): mulisp file.txt, в таком случае текст программы должен заканчиваться командой (system).

Задача (PRLG01): На доске 4х4 расставить 4 слона так, чтобы они все находились не под ударом друг друга.Решения: Лисп

Задача (PRLG02):Написать программу решения головоломки про Волка, Козу и Капусту.Решения: Лисп (поиск в ширину)

Задача (PRLG03):Операции со списками. Создать функцию на языке Лисп, которая выполняет следующие действия: перегруппирует элементы заданного списка так, чтобы одинаковые элементы, если они есть в списке, стояли все подряд.Решения: Лисп Запуск: (l8 ‘(1 2 1 3 2 5 7 1))

Задача (PRLG04): Написать функцию, упорядочивающую список, заданный в качестве ее первого аргумента, переставляя его элементы в той последовательности, в какой они встречаются в списке, являющемся значением второго аргумента.Решения: Лисп

Задача (PRLG05): Написать программу, которая печатает все перестановки чисел от 1 до n.Решения: Лисп

Задача (PRLG06): Написать программу вычисления значения многочлена в точке по схеме Горнера:  Рn = (…( ( a0x + a1)x + а2)x + … + аn-1)x + аn.Схема Горнера: Р0 = a0; p1 = Р0 • x + a1 = a0x + a1; p2 = Р1 • x + a2 = a0×2 + a1x + a2;Решения: Лисп

Задача (PRLG07): Написать программу обращения списка с подсписками.Решения: Лисп

Задача (PRLG08): Написать программу сортировки списка чисел методом Quick Sort (Быстрой сортировки).Решения: Лисп

Задача (PRLG09): Написать программу, которая преобразует представление числа из десятичной в двоичную систему.Решения: Лисп

Задача (PRLG10): Написать программу, которая объединяет два отсортированных списка в один, тоже отсортированный.Например: (2, 3, 6, 8) и (1, 4, 5, 7, 10) -> (1, 2, 3, 4, 5 ,6 ,7, 8, 10).Решения: Пролог, Лисп

Задача (PRLG11): Написати на Пролозi програму, яка друкує всi пiдмножини заданої множини.Ідея розв’язку грунтується на спiввiдношеннi:Boolean(X) = Boolean(X\{y}) U {y} U { (S U {y}) | S множина з Boolean(X\{y})}.Побудову множини { (S U {y}) | S множина з Boolean(X\{y})} здiйснює функцiя comb. Функцiя обчислює вищенаведене рекурентне спiввiдношення.
Решения: Пролог

Задача (PRLG12): Напишите функцию, которая сортирует список чисел, используя алгоритм простого выбора.Решения: Лисп

Задача (PRLG13): Определите функцию f(s), результатом которой является список, получающийся из списка списков s после удаления всех подсписков, содержащих числа (Lisp).Решения: Лисп

Задача (PRLG14): Напишите функцию на Lisp, осуществляющую циклическую перестановку элементов в списке,т.е. (f g h j) -> (g h j f). Вариант 1 решения: Лисп
Вариант 2 решения: Лисп
Напишите функцию, осуществляющую циклическую перестановку N следующих подряд элементов в списке. Например, при N=3 и исходном списке (a b c d e f g h) должно получиться (f g h a b c d e).
Вариант обратной перестановки решения: Лисп

Задача (PRLG15): Напишите функцию (Lisp), которая из данного одноуровнего списка строит список списков его элементов, например, (a b) -> ((a) (b)).Решения: Лисп

Задача (PRLG16): Определите функцию (Lisp), зависящую от двух аргументов u и v, являющихся списками, которая вычисляет список всех элементов u, не содержащихся в v.РешенияЛисп

Задача (PRLG17): Написать программу реализующую игру в “Шашки”РешенияПролог

Задача (PRLG18): Определить функцию, которая любой исходный список преобразует в список с одним уровнем скобок, например: (a (b c) a b (c (c)))) -> (a b c a b c c). РешенияЛисп

Задачи, предоставленные посетителями сайта. В этом разделе представлены задачи, решения которых были любезно предоставлены посетителями сайта.

Задача 1. Разработать класс для создания объектов-словарей на языке Лисп.. Ключи элементов уникальны и представлены атомами-символами. Класс должен включать методы для включения элементов в словарь, вычеркивания их из словаря, поиска по ключу или отображения списка всех ключей, которым соответствуют одинаковые значения. Учесть, что значения, соответствующие ключам, могут быть как атомами так и списками. Должны быть определены тестовые последовательности для отладки программы, проверки ее работоспособности и тестирования при граничных значениях исходных данных.


Решение: Лисп