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 वोकैबुलरी में बनाएँगे।
count-combinations को ऐसे बनाइए कि वह क्रम को अनदेखा करते हुए n में से k चीज़ें चुनने के तरीकों की संख्या लौटाए।
5 2 count-combinations .
! => 10
count-permutations को ऐसे बनाइए कि वह उस समय n में से k चीज़ें चुनने के तरीकों की संख्या लौटाए जब क्रम महत्वपूर्ण हो।
5 2 count-permutations .
! => 20
list-combinations को ऐसे बनाइए कि वह किसी सीक्वेंस के सभी k-एलिमेंट वाले संचय लौटाए।
{ 1 2 3 } 2 list-combinations .
! => { { 1 2 } { 1 3 } { 2 3 } }
list-permutations को ऐसे बनाइए कि वह किसी सीक्वेंस के सभी क्रमचय लौटाए।
{ 1 2 } list-permutations .
! => { { 1 2 } { 2 1 } }
combinations-summing-to को ऐसे बनाइए कि वह किसी सीक्वेंस के केवल उन्हीं k संचयों को लौटाए जिनके एलिमेंट जोड़कर target बनाते हैं।
{ 1 2 3 4 } 2 5 combinations-summing-to .
! => { { 1 4 } { 2 3 } }
Exercism पर साइन अप कीजिए और Factor को 47 कॉन्सेप्ट163 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।