In Sprachen im Lisp-Stil wird eine Liste normalerweise folgendermaßen definiert:
(list 1 2 3)
Für die Zwecke dieser Herausforderung enthalten alle Listen nur positive ganze Zahlen oder andere Listen. Wir lassen das list
Schlüsselwort auch am Anfang weg , daher sieht die Liste jetzt so aus:
(1 2 3)
Wir können das erste Element einer Liste erhalten, indem wir verwenden car
. Beispielsweise:
(car (1 2 3))
==> 1
Und wir können die ursprüngliche Liste mit dem ersten Element erhalten, das mit entfernt wird cdr
:
(cdr (1 2 3))
==> (2 3)
Wichtig: cdr
Gibt immer eine Liste zurück, auch wenn diese Liste ein einzelnes Element enthalten würde:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Listen können sich auch in anderen Listen befinden:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Schreiben Sie ein Programm, das Code zurückgibt, der eine bestimmte Ganzzahl in einer Liste verwendet car
und zurückgibt cdr
. In dem Code, den Ihr Programm zurückgibt, können Sie davon ausgehen, dass die Liste gespeichert ist l
, dass sich die Ziel-Ganzzahl l
irgendwo befindet und dass alle Ganzzahlen eindeutig sind.
Beispiele:
Eingang: (6 1 3) 3
Ausgabe: (car (cdr (cdr l)))
Eingang: (4 5 (1 2 (7) 9 (10 8 14))) 8
Ausgabe: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Eingang: (1 12 1992) 1
Ausgabe: (car l)
(1 2 3) 16
, sollen wir zurückkehren ()
?
(1 2 3) 16
dieser niemals angezeigt wird.