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