लिस्प शैली की भाषाओं में, एक सूची को आमतौर पर इस तरह परिभाषित किया जाता है:
(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कभी नहीं दिखाई देगा।