math.combinatorics ভোকাবুলারি একগুচ্ছ আইটেম নিয়ে দুই ধরনের প্রশ্নের উত্তর দেয়:
প্রতিটি প্রশ্নের জন্য একটি গণনা-ধরনের শব্দ থাকে যা একটি সংখ্যা রিটার্ন করে, আর একটি তালিকা-ধরনের শব্দ থাকে যা সত্যিকার নির্বাচনগুলো রিটার্ন করে।
nCk ("n choose 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টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।