Nelle lingue in stile Lisp, un elenco è generalmente definito come questo:
(list 1 2 3)
Ai fini di questa sfida, tutte le liste conterranno solo numeri interi positivi o altre liste. Tralasceremo anche la listparola chiave all'inizio, quindi l'elenco apparirà così:
(1 2 3)
Possiamo ottenere il primo elemento di un elenco usando car. Per esempio:
(car (1 2 3))
==> 1
E possiamo ottenere l'elenco originale con il primo elemento rimosso con cdr:
(cdr (1 2 3))
==> (2 3)
Importante: cdrrestituirà sempre un elenco, anche se tale elenco avrebbe un singolo elemento:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Gli elenchi possono anche essere all'interno di altri elenchi:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Scrivi un programma che restituisce il codice che utilizza care cdrper restituire un certo numero intero in un elenco. Nel codice restituito dal programma, si può presumere che l'elenco sia archiviato l, che il numero intero di destinazione si trovi lda qualche parte e che tutti i numeri interi siano univoci.
Esempi:
Ingresso: (6 1 3) 3
Produzione: (car (cdr (cdr l)))
Ingresso: (4 5 (1 2 (7) 9 (10 8 14))) 8
Produzione: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Ingresso: (1 12 1992) 1
Produzione: (car l)
(1 2 3) 16, dovremmo tornare ()?
(1 2 3) 16non verrà mai visualizzato.