Лабораторная работа 1
-
Представить следующие списки в виде списочных ячеек:
'(open close halph)'((TOOL) (call))'((open1) (close2) (halph3))'(((TOOL1) (call2)) ((sell)))'((one) for all (and(me(for you))))'((TOOL) (call)) ((sell)))
-
Используя только функции CAR и CDR, написать выражения, возвращающие
- второй
- третий
- четвертый элементы заданного списка.
Лабораторная работа 2
-
Что будет в результате вычисления выражений?
(CAADR ' ((blue cube) (red pyramid)))(CDAR '((abc) (def) (ghi)))(CADR ' ((abc) (def) (ghi)))(CADDR ' ((abc) (def) (ghi)))
-
Напишите результат вычисления выражений:
(list 'Fred 'and 'Wilma)(list 'Fred ' (and Wilma))(cons Nil Nil)(cons T Nil)(cons Nil T)(list Nil)(cons ' (T) Nil)(list ' (one two) ' (free temp))(cons 'Fred '(and Wilma))(cons 'Fred '(Wilma))(list Nil Nil)(list T Nil)(list Nil T)(cons T (list Nil))(list '(T) Nil)(cons '(one two) '(free temp))
-
Написать функции
(f arl ar2 ar3 ar4), возвращающую список:((arl ar2) (ar3 ar4)).(f arl ar2), возвращающую((arl) (ar2)).(f arl), возвращающую(((arl))).
Представить результаты в виде списочных ячеек.
Лабораторная работа 3
-
Составить диаграмму вычисления следующих выражений
(equal 3 (abs - 3))(equal (+ 1 2) 3)(equal (* 4 7) 21)(equal (* 2 3) (+ 7 2))(equal (- 7 3) (* 3 2))(equal (abs (- 2 4)) 3))
-
Написать функцию, вычисляющую гипотенузу прямоугольного треугольника по заданным катетам и составить диаграмму её вычисления.
-
Написать функцию, вычисляющую объем параллелепипеда по 3-м его сторонам, и составить диаграмму ее вычисления.
-
Каковы результаты вычисления следующих выражений?
(list 'a c)(cons'a (b c))(cons'a '(b c))(caddy (1 2 3 4 5))(cons'a'b'c)(list 'a (b c))(list a '(b c))(list (+ 1 '(length '(1 2 3))))
-
Написать функцию
longer_thenот двух списков-аргументов, которая возвращаетТ, если первый аргумент имеет большую длину. -
Каковы результаты вычисления следующих выражений?
(cons 3 (list 5 6))(list 3 'from 9 'lives (- 9 3))(+ (length for 2 too)) (car '(21 22 23)))(cdr ' (cons is short for ans))(car (list one two))(cons 3 '(list 5 6))(car (list 'one 'two))
Лабораторная работа 4
-
Дана функция
(defun mystery (x) (list (second x) (first x))). Какие результаты вычисления следующих выражений?(mystery (one two))(mystery (last one two))(mystery free)(mystery one 'two))
-
Написать функцию, которая переводит температуру в системе Фаренгейта температуру по Цельсию
(defum f-to-c (temp)...).
Формулы: c = 5/9*(f-320); f= 9/5*c+32.0.
Как бы назывался роман Р.Брэдбери "+451 по Фаренгейту" в системе по Цельсию?
-
Что получится при вычисления каждого из выражений?
(list 'cons t NIL)(eval (eval (list 'cons t NIL)))(apply #cons '(t NIL))(list 'eval NIL)(eval (list 'cons t NIL))(eval NIL)(eval (list 'eval NIL))
-
Написать функцию, вычисляющую катет по заданной гипотенузе и другому катету прямоугольного треугольника, и составить диаграмму ее вычисления.
-
Написать функцию, вычисляющую площадь трапеции по ее основаниям и высоте, и составить диаграмму ее вычисления.
Лабораторная работа 5
-
Написать функцию, которая принимает целое число и возвращает первое четное число, не меньшее аргумента.
-
Написать функцию, которая принимает число и возвращает число того же знака, но с модулем на 1 больше модуля аргумента.
-
Написать функцию, которая принимает два числа и возвращает список из этих чисел, расположенный по возрастанию.
-
Написать функцию, которая принимает три числа и возвращает Т только тогда, когда первое число расположенно между вторым и третьим.
-
Каков результат вычисления следующих выражений?
(and ’fee ’fie ’foe)(or nil ’fie ’foe)(and (equal ’abc ’abc) ’yes)(or ’fee ’fie ’foe)(and nil ’fie ’foe)(or (equal ’abc ’abc) ’yes)
-
Написать предикат, который принимает два числа-аргумента и возвращает Т, если первое число не меньше второго.
-
Какой из следующих двух вариантов предиката ошибочен и почему?
(defun pred1 (x)
(and (numberp x) (plusb x))
)
(defun pred2 (x)
(and (plusp x) (numberp x))
)- Решить задачу 4, используя для ее решения конструкции IF, COND, AND/OR.
Лабораторная работа 6
Дано два списка: первый список название стран, второй – столиц.
- из двух списков создать список из двухэлементных списков
- из двух списков создать список из точечных пар
По полученным спискам по стране найти столицу и наоборот.
Лабораторная работа 7
-
Чем принципиально отличаются функции cons, lisp, append?
-
Каковы результаты вычисления следующих выражений?
(reverse ())(last ())(reverse ’(a))(last ’(a))(reverse ’((a b c)))(last ’((a b c)))
-
Написать два варианта функции, которая возвращает последний элемент своего списка-аргумента.
-
Написать два варианта функции, которая возвращает свой список-аргумент без последнего элемента.
-
Написать простой вариант игры в кости, в котором бросаются две правильные кости. Если сумма выпавших очков равна 7 или 11 – выигрыш, если выпало (1, 1) или (6, 6) – игрок получает право снова бросить кости, во всех остальных случаях ход переходит ко второму игроку, но запоминается сумма выпавших очков. Если второй игрок не выигрывает абсолютно, то выигрывает тот игрок, у которого больше очков. Результат игры и значения выпавших костей выводить на экран с помощью функции print.
Лабораторная работа 8
-
Написать функцию, которая по своему списку-аргументу lst определяет является ли он полиндромом (то есть равны ли lst и (reverse lst)).
-
Напишите функцию swap-first-last, которая переставляет в списке-аргументе первый и последний элементы.
-
Напишите функцию swap-tow-elements, которая переставляет в списке-аргументе два указанных своими порядковыми номерами элемента в этом списке.
-
Напишите две функции, swap-to-left и swap-to-right, которые производят круговую перестановку в списке-аргументе влево и вправо, соотвественно (на k позиций).
-
Напишите функцию, которая умножает на заданное число-аргумент все числа из заданного списка-аргумента, когда
- все элементы списка – числа,
- элементы списка – любые объекты.
-
Напишите функцию, select-between, которая из списка-аргумента, содержащего только числа, выбирает только те, которые расположены между двумя указанными границами-аргументами и возращает их в виде списка (упорядоченного по возрастанию списка чисел).
Лабораторная работа 9
-
Написать предикат set-equal, который возвращает t, если два его множества-аргумента содержат одни и те же элементы, порядок которых не имеет значения.
-
Напишите необходимые функции, которые обрабатывают таблицу из точечных пар: (страна. столица), и возвращают по стране - столицу, а по столице - страну.
-
Напишите функцию, которая умножает на заданное число-аргумент все числа из заданного списка-аргумента, когда
- все элементы списка – числа,
- элементы списка – любые объекты.
-
Напишите функцию, которая уменьшает на 10 все числа из списка аргумента этой функции.
-
Написать функцию, которая возвращает первый аргумент списка-аргумента. который сам является непустым списком.
-
Написать функцию, которая выбирает из заданного списка только те числа, которые больше 1 и меньше 10. (Вариант: между двумя заданными границами.)
-
Написать функцию, вычисляющую декартово произведение двух своих списков-аргументов.
-
Почему так реализовано reduce, в чем причина?
(reduce #’+ ()) -> 0
Лабораторная работа 10
- Пусть list-of-list список, состоящий из списков. Написать функцию, которая вычисляет сумму длин всех элементов list-of-list.
- Написать рекурсивную версию (с именем reg-add) вычисления суммы чисел заданного списка.
- Написать рекурсивную версию с именем recnth функции nth.
- Написать рекурсивную функцию alloddr, которая возвращает t когда все элементы списка нечетные.
- Написать рекурсивную функцию, относящуюся к хвостовой рекурсии с одним тестом завершения, которая возвращает последний элемент списка-аргумента.
- Написать рекурсивную функцию, относящуюся к дополняемой рекурсии с одним тестом завершения, которая вычисляет сумму всех чисел от 0 до n-ого аргумента функции.
- Написать рекурсивную функцию, которая возвращает последнее нечетное число из числового списка, возможно создавая некоторые вспомогательные функции.
- Используя cons-дополняемую рекурсию с одним тестом завершения, написать функцию которая получает как аргумент список чисел, а возвращает список квадратов этих чисел в том же порядке.
- Написать функцию с именем select-odd, которая из заданного списка выбирает все нечетные числа. (Вариант 1: select-even, вариант 2: вычисляет сумму всех нечетных чисел(sum-all-odd) или сумму всех четных чисел (sum-all-even) из заданного списка.)