ट्रैक
/
Factor
Factor
/
अभ्यास
/
मिक्सटेप बनाने वाला
मिक्सटेप बनाने वाला

मिक्सटेप बनाने वाला

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

परिचय

math.combinatorics वोकैबुलरी चीज़ों के समूह से जुड़े दो तरह के सवालों के जवाब देती है:

  • संचय: क्रम को अनदेखा करते हुए किसी समूह को चुनने के कितने तरीके हैं, या कौन-कौन से तरीके हैं?
  • क्रमचय: जहाँ क्रम मायने रखता है, वहाँ चीज़ों को व्यवस्थित करने के कितने तरीके हैं, या कौन-कौन से तरीके हैं?

हर सवाल के लिए एक गिनती वाला शब्द है जो संख्या लौटाता है, और एक सूची वाला शब्द है जो असल चयन लौटाता है।

गिनती

nCk (यानी "n में से k चुनना") बताता है कि n चीज़ों में से k एलिमेंट वाले कितने संचय चुने जा सकते हैं:

nCk ( n k -- m )
USING: math.combinatorics prettyprint ;

5 2 nCk .    ! => 10
6 3 nCk .    ! => 20
5 5 nCk .    ! => 1

nPk बताता है कि n चीज़ों में से k एलिमेंट वाले क्रमबद्ध चयन (क्रमचय) कितने बनाए जा सकते हैं। चूँकि यहाँ क्रम मायने रखता है, इसलिए इसकी गिनती उसी nCk से कम नहीं होती:

nPk ( n k -- m )
5 2 nPk .    ! => 20
6 3 nPk .    ! => 120

संचय की सूची बनाना

all-combinations किसी सीक्वेंस का हर k एलिमेंट वाला सबसेट लौटाता है। हर संचय के अंदर मौजूद एलिमेंट अपना मूल क्रम बनाए रखते हैं, और संचय लेक्सिकोग्राफिक क्रम में लौटते हैं:

all-combinations ( seq k -- combinations )
{ 1 2 3 } 2 all-combinations .
! => { { 1 2 } { 1 3 } { 2 3 } }

जब आप हर संचय को बनते ही प्रोसेस करना चाहते हैं, सबको इकट्ठा करना नहीं, तब स्ट्रीमिंग रूप each-combination इस्तेमाल कीजिए, जो हर संचय के साथ एक कोटेशन कॉल करता है:

each-combination ( seq k quot -- )
{ 1 2 3 } 2 [ . ] each-combination
! => { 1 2 }
! => { 1 3 }
! => { 2 3 }

क्रमचय की सूची बनाना

all-permutations किसी सीक्वेंस का हर क्रम लौटाता है:

all-permutations ( seq -- permutations )
{ 1 2 } all-permutations .
! => { { 1 2 } { 2 1 } }

{ 1 2 3 } all-permutations .
! => { { 1 2 3 } { 1 3 2 } { 2 1 3 } { 2 3 1 } { 3 1 2 } { 3 2 1 } }

इसका स्ट्रीमिंग वाला रूप each-permutation है, जो हर क्रम के साथ एक कोटेशन कॉल करता है:

each-permutation ( seq quot -- )
{ 1 2 } [ . ] each-permutation
! => { 1 2 }
! => { 2 1 }

निर्देश

Ozan एक बेहतरीन मिक्सटेप तैयार कर रहा है: पहले वह तय करता है कि उसमें कौन से गाने शामिल होंगे, और फिर यह कि वे किस क्रम में बजेंगे। आप उसकी इन पसंदों के पीछे काम करने वाले कॉम्बिनेटरिक्स के मददगार फंक्शन mixtape-maker वोकैबुलरी में बनाएँगे।

1. संचयों की गिनती कीजिए

count-combinations को ऐसे बनाइए कि वह क्रम को अनदेखा करते हुए n में से k चीज़ें चुनने के तरीकों की संख्या लौटाए।

5 2 count-combinations .
! => 10

2. क्रमचयों की गिनती कीजिए

count-permutations को ऐसे बनाइए कि वह उस समय n में से k चीज़ें चुनने के तरीकों की संख्या लौटाए जब क्रम महत्वपूर्ण हो।

5 2 count-permutations .
! => 20

3. संचयों की सूची बनाइए

list-combinations को ऐसे बनाइए कि वह किसी सीक्वेंस के सभी k-एलिमेंट वाले संचय लौटाए।

{ 1 2 3 } 2 list-combinations .
! => { { 1 2 } { 1 3 } { 2 3 } }

4. क्रमचयों की सूची बनाइए

list-permutations को ऐसे बनाइए कि वह किसी सीक्वेंस के सभी क्रमचय लौटाए।

{ 1 2 } list-permutations .
! => { { 1 2 } { 2 1 } }

5. लक्ष्य के बराबर जोड़ने वाले संचय

combinations-summing-to को ऐसे बनाइए कि वह किसी सीक्वेंस के केवल उन्हीं k संचयों को लौटाए जिनके एलिमेंट जोड़कर target बनाते हैं।

{ 1 2 3 4 } 2 5 combinations-summing-to .
! => { { 1 4 } { 2 3 } }
GitHub के ज़रिए संपादित करें यह लिंक एक नई विंडो या टैब में खुलता है
Factor Exercism

मिक्सटेप बनाने वाला शुरू करने के लिए तैयार हैं?

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