En los idiomas de estilo Lisp, una lista generalmente se define así:
(list 1 2 3)
Para los propósitos de este desafío, todas las listas solo contendrán enteros positivos u otras listas. También dejaremos de lado la list
palabra clave al principio, por lo que la lista ahora se verá así:
(1 2 3)
Podemos obtener el primer elemento de una lista usando car
. Por ejemplo:
(car (1 2 3))
==> 1
Y podemos obtener la lista original con el primer elemento eliminado con cdr
:
(cdr (1 2 3))
==> (2 3)
Importante: cdr
siempre devolverá una lista, incluso si esa lista tuviera un solo elemento:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Las listas también pueden estar dentro de otras listas:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Escriba un programa que devuelva el código que usa car
y cdr
para devolver cierto número entero en una lista. En el código que devuelve su programa, puede suponer que la lista está almacenada l
, el entero objetivo está enl
algún lugar y que todos los enteros son únicos.
Ejemplos:
Entrada: (6 1 3) 3
Salida: (car (cdr (cdr l)))
Entrada: (4 5 (1 2 (7) 9 (10 8 14))) 8
Salida: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Entrada: (1 12 1992) 1
Salida: (car l)
(1 2 3) 16
si regresamos ()
?
(1 2 3) 16
lo que nunca se mostrará un caso como .