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 listSchlü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: cdrGibt 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 carund 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 lirgendwo 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) 16dieser niemals angezeigt wird.