Dalam bahasa gaya Lisp, daftar biasanya didefinisikan seperti ini:
(list 1 2 3)
Untuk keperluan tantangan ini, semua daftar hanya akan berisi bilangan bulat positif atau daftar lainnya. Kami juga akan meninggalkan list
kata kunci di awal, sehingga daftar sekarang akan terlihat seperti ini:
(1 2 3)
Kita bisa mendapatkan elemen pertama dari daftar dengan menggunakan car
. Sebagai contoh:
(car (1 2 3))
==> 1
Dan kita bisa mendapatkan daftar asli dengan elemen pertama dihapus dengan cdr
:
(cdr (1 2 3))
==> (2 3)
Penting: cdr
akan selalu mengembalikan daftar, meskipun daftar itu memiliki satu elemen:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
Daftar juga dapat berada di dalam daftar lain:
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
Tulis program yang mengembalikan kode yang menggunakan car
dan cdr
untuk mengembalikan integer tertentu dalam daftar. Dalam kode yang dikembalikan oleh program Anda, Anda dapat mengasumsikan bahwa daftar tersebut disimpan l
, bilangan bulat target ada di l
suatu tempat, dan bahwa semua bilangan bulat itu unik.
Contoh:
Memasukkan: (6 1 3) 3
Keluaran: (car (cdr (cdr l)))
Memasukkan: (4 5 (1 2 (7) 9 (10 8 14))) 8
Keluaran: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
Memasukkan: (1 12 1992) 1
Keluaran: (car l)
(1 2 3) 16
kita kembali ()
?
(1 2 3) 16
ini tidak akan pernah muncul.