На мовах стилю Lisp список зазвичай визначається так:
(list 1 2 3)
Для цілей цього виклику всі списки містять лише додатні цілі чи інші списки. Ми також залишимо list
ключове слово на початку, тому список тепер буде виглядати приблизно так:
(1 2 3)
Ми можемо отримати перший елемент списку за допомогою car
. Наприклад:
(car (1 2 3))
==> 1
І ми можемо отримати оригінальний список із видаленим першим елементом cdr
:
(cdr (1 2 3))
==> (2 3)
Важливо: cdr
список завжди повертається, навіть якщо цей список матиме один елемент:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Списки також можуть бути в інших списках:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Написати програму, яка повертає код, який використовує car
таcdr
повертає певне ціле число у списку. У коді, який повертає ваша програма, ви можете припустити, що список зберігається l
, ціле ціле число l
десь і що всі цілі числа є унікальними.
Приклади:
Вхід: (6 1 3) 3
Вихід: (car (cdr (cdr l)))
Вхід: (4 5 (1 2 (7) 9 (10 8 14))) 8
Вихід: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Вхід: (1 12 1992) 1
Вихід: (car l)
(1 2 3) 16
же ми повернемось ()
?
(1 2 3) 16
ніколи, не з’явиться.