ट्रैक
/
Common Lisp
Common Lisp
/
अभ्यास
/
लोगन का संख्यात्मक विभाजन
लोगन का संख्यात्मक विभाजन

लोगन का संख्यात्मक विभाजन

सीखने का अभ्यास

परिचय

रिड्यूसिंग

रिड्यूसिंग में किसी सीक्वेंस के हर एलिमेंट पर एक फंक्शन बार-बार लगाया जाता है और उनके परिणामों को किसी तरह जमा किया जाता है। जो फंक्शन लगाया जाता है, वह दो पैरामीटर लेता है: अब तक जमा हुई वैल्यू और वह आइटम जिस पर काम करना है। इस फंक्शन का मान नई जमा हुई वैल्यू होना चाहिए।

Common Lisp में यह काम reduce फंक्शन से किया जाता है। इसका सबसे सरल रूप ऐसा दिखता है:

(reduce #'function-to-apply sequence :initial-value value)

ध्यान दीजिए कि यहाँ एक शुरुआती वैल्यू दी जाती है। जब पहला एलिमेंट प्रोसेस होता है, तो यही 'अब तक जमा हुई वैल्यू' फंक्शन को दी जाती है।

यहाँ एक उदाहरण है जो ऐरे की संख्याओं को जोड़ता है और 10 की शुरुआती वैल्यू से शुरू करता है:

(reduce #'+ '(1 2 3 4) :initial-value 10) ; => 20

ध्यान रखिए कि अगर सीक्वेंस खाली है, तो फंक्शन कभी कॉल नहीं होता और उस फॉर्म का मान initial-value ही होता है।

निर्देश

Lisp एलियन लोगान को संख्याएँ पसंद हैं और चीज़ों को व्यवस्थित करना भी।

वे चाहते हैं कि आप उनकी मदद करें और एक ऐसा फंक्शन लिखें जो संख्याओं का एक ऐरे लेकर दो ऐरे का जोड़ा बनाए। इनमें पहला ऐरे सारी विषम संख्याओं का होता है और दूसरा सारी सम संख्याओं का।

1. संख्या को श्रेणी में रखना

सबसे पहले आपको एक फंक्शन बनाना है जो दो ऐरे का जोड़ा और एक संख्या लेता है और यह देखकर कि वह संख्या विषम है या सम, उसे सही उप-ऐरे में डाल देता है:

(categorize-number '((1) . (2)) 23) ; => ((23 1) . (2))
(categorize-number '((1) . (2)) 42) ; => ((1) . (42 2))

2. ढेर सारी संख्याओं को श्रेणी में रखना

अब, जो फंक्शन आपने अभी बनाया है उसका उपयोग करके आप एक और फंक्शन लिख सकते हैं, जो संख्याओं का एक ऐरे लेता है और ऊपर की तरह उन्हें श्रेणी में रख देता है:

(partition-numbers '(1 2 3 4))     ; => ((3 1) . (4 2))
(partition-numbers '(42 31 24 13)) ; => ((13 31) . (24 42))
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Common Lisp Exercism

लोगन का संख्यात्मक विभाजन शुरू करने के लिए तैयार हैं?

Exercism पर साइन अप कीजिए और Common Lisp को 27 कॉन्सेप्ट92 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।