ในภาษาสไตล์เสียงกระเพื่อมรายการมักจะถูกกำหนดเช่นนี้:
(list 1 2 3)
สำหรับจุดประสงค์ของการท้าทายรายการทั้งหมดจะมีจำนวนเต็มบวกหรือรายการอื่น ๆ เท่านั้น เราจะไม่ใส่list
คำหลักในตอนเริ่มต้นดังนั้นรายการจะมีลักษณะดังนี้:
(1 2 3)
car
เราจะได้รับองค์ประกอบแรกของรายการโดยใช้ ตัวอย่างเช่น:
(car (1 2 3))
==> 1
และเราสามารถรับรายการต้นฉบับโดยลบองค์ประกอบแรกด้วยcdr
:
(cdr (1 2 3))
==> (2 3)
สำคัญ: cdr
จะส่งคืนรายการเสมอแม้ว่ารายการนั้นจะมีองค์ประกอบเดียว:
(cdr (1 2))
==> (2)
(car (cdr (1 2)))
==> 2
รายการสามารถอยู่ในรายการอื่น ๆ :
(cdr (1 2 3 (4 5 6)))
==> (2 3 (4 5 6))
เขียนโปรแกรมที่ส่งคืนรหัสที่ใช้car
และcdr
ส่งคืนจำนวนเต็มในรายการ ในโค้ดที่โปรแกรมของคุณส่งคืนคุณสามารถสันนิษฐานได้ว่ารายการนั้นถูกเก็บไว้l
จำนวนเต็มเป้าหมายนั้นอยู่ที่l
ใดที่หนึ่งและจำนวนเต็มทั้งหมดนั้นไม่ซ้ำกัน
ตัวอย่าง:
การป้อนข้อมูล: (6 1 3) 3
เอาท์พุท: (car (cdr (cdr l)))
การป้อนข้อมูล: (4 5 (1 2 (7) 9 (10 8 14))) 8
เอาท์พุท: (car (cdr (car (cdr (cdr (cdr (cdr (car (cdr (cdr l))))))))))
การป้อนข้อมูล: (1 12 1992) 1
เอาท์พุท: (car l)
(1 2 3) 16
เราจะกลับมา()
?
(1 2 3) 16
นี้จะไม่ปรากฏขึ้น