W językach w stylu Lisp lista jest zwykle definiowana w następujący sposób:
(list 1 2 3)
Na potrzeby tego wyzwania wszystkie listy będą zawierać tylko dodatnie liczby całkowite lub inne listy. Na początku pomijamy również list
słowo kluczowe, więc lista będzie wyglądać następująco:
(1 2 3)
Pierwszy element listy możemy uzyskać za pomocą car
. Na przykład:
(car (1 2 3))
==> 1
I możemy uzyskać oryginalną listę z usuniętym pierwszym elementem za pomocą cdr
:
(cdr (1 2 3))
==> (2 3)
Ważne: cdr
zawsze zwróci listę, nawet jeśli ta lista zawiera jeden element:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Listy mogą znajdować się również na innych listach:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Napisz program, który zwraca kod, który używa car
i cdr
zwraca określoną liczbę całkowitą na liście. W kodzie, który zwraca program, możesz założyć, że lista jest przechowywana l
, docelowa liczba całkowita jest l
gdzieś i że wszystkie liczby całkowite są unikalne.
Przykłady:
Wejście: (6 1 3) 3
Wynik: (car (cdr (cdr l)))
Wejście: (4 5 (1 2 (7) 9 (10 8 14))) 8
Wynik: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Wejście: (1 12 1992) 1
Wynik: (car l)
(1 2 3) 16
wrócimy ()
?
(1 2 3) 16
nigdy się nie pojawi.