কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে অ্যারে এলিমেন্টের সব সম্ভাব্য কম্বিনেশন বের করা


সমস্যা বিবরণ

স্ট্রিং লিটারেলের একটি অ্যারে দেওয়া আছে। সব সম্ভাব্য কম্বিনেশন (সাবসিকোয়েন্স, অবশ্য কনটিগুয়াস নয়) জেনারেট করতে হবে।

ইনপুট: ['a', 'b', 'c', 'd']

আউটপুট: ["a", "ab", "abc", "abcd", "abd", "ac", "acd", "ad", "b", "bc", "bcd", "bd", "c", "cd", "d"]

সমাধান

const getCombinations = (arr = []) => {
  const combine = (sub, ind) => {
    let result = [];
    let i, l, p;
    for (i = ind, l = arr.length; i < l; i++) {
      p = sub.slice(0);
      p.push(arr[i]);
      result = result.concat(combine(p, i + 1));
      result.push(p.join(''));
    }
    return result;
  };
  return combine([], 0);
};

console.log(getCombinations(["a", "b", "c", "d"]));

আউটপুট

[ 'abcd', 'abc', 'abd', 'ab', 'acd', 'ac', 'ad', 'a', 'bcd', 'bc', 'bd', 'b', 'cd', 'c', 'd' ]

ব্যাখ্যা

  • রিকার্সিভ ব্যাকট্র্যাকিং: প্রতিটি স্টেপে বর্তমান এলিমেন্ট নেওয়া বা না নেওয়া।
  • sub: বর্তমান কম্বিনেশন, ind: নেক্সট কandidate ইনডেক্স।
  • p = sub.slice(0): কপি বানাতে (ইমিউটেবিলিটি)।
  • রেজাল্টে কম্বিনেশন পুশ করা হয় যতক্ষণ না বেস কেস পাওয়া যায়।

টোটাল কম্বিনেশন

n এলিমেন্টের জন্য 2^n - 1 টি নন-এম্পটি কম্বিনেশন।

  1. JavaScript-এ অ্যারের প্রথম আইটেমগুলো পাওয়ার পদ্ধতি

  2. জাভাস্ক্রিপ্ট অ্যারেতে শেষ এলিমেন্ট পাওয়ার পদ্ধতি

  3. জাভাস্ক্রিপ্টে অ্যারের প্রথম n মানগুলো কীভাবে পাবেন

  4. জাভাস্ক্রিপ্ট অ্যারেতে সব ইউনিক ভ্যালু বের করা