Nas linguagens de estilo Lisp, uma lista é geralmente definida assim:
(list 1 2 3)
Para os propósitos deste desafio, todas as listas conterão apenas números inteiros positivos ou outras listas. Também deixaremos de fora a list
palavra-chave no início; portanto, a lista ficará assim:
(1 2 3)
Podemos obter o primeiro elemento de uma lista usando car
. Por exemplo:
(car (1 2 3))
==> 1
E podemos obter a lista original com o primeiro elemento removido com cdr
:
(cdr (1 2 3))
==> (2 3)
Importante: cdr
sempre retornará uma lista, mesmo que essa lista tenha um único elemento:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
As listas também podem estar em outras listas:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Escreva um programa que retorne o código que usa car
e cdr
retorne um determinado número inteiro em uma lista. No código que seu programa retorna, você pode assumir que a lista está armazenada l
, o número inteiro de destino está em l
algum lugar e todos os números inteiros são exclusivos.
Exemplos:
Entrada: (6 1 3) 3
Resultado: (car (cdr (cdr l)))
Entrada: (4 5 (1 2 (7) 9 (10 8 14))) 8
Resultado: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Entrada: (1 12 1992) 1
Resultado: (car l)
(1 2 3) 16
voltarmos ()
?
(1 2 3) 16
nunca aparecerá.