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

পাইথনে ব্যাকরণের নিয়ম অনুযায়ী তৈরি করা স্ট্রিংয়ের সংখ্যা গণনা করার প্রোগ্রাম


ধরা যাক একটি সংখ্যা n আছে, দৈর্ঘ্য n-এর স্ট্রিং কতটি তৈরি করা যায় নির্দিষ্ট নিয়ম মেনে চলে তা বের করতে হবে।

নিয়ম: ক্যারেক্টারগুলো ছোট হাতের স্বরবর্ণ [a, e, i, o, u]। 'a' এর পরে শুধু 'e', 'e' এর পরে 'a' বা 'i', 'i' এর পরে 'i' না, 'o' এর পরে 'i' বা 'u', 'u' এর পরে শুধু 'a'। ফলাফল বড় হলে 10^9+7 দিয়ে মডুলো।

উদাহরণ: n = 2 হলে আউটপুট 10, সম্ভাব্য স্ট্রিং: ["ae", "ea", "ei", "ia", "ie", "io", "iu", "oi", "ou", "ua"]।

সমাধানের ধাপসমূহ

  • m = 10^9 + 7
  • যদি n == 0, 0 ফেরত দিন।
  • a, e, i, o, u = 1, 1, 1, 1, 1
  • n-1 বার লুপ: a, e, i, o, u = e+i+u, a+i, e+o, i, i+o
  • (a + e + i + o + u) % m ফেরত দিন।

উদাহরণ কোড

class Solution:
    def solve(self, n):
        m = (10 ** 9 + 7)
        if n == 0:
            return 0
        a = e = i = o = u = 1
        for _ in range(n-1):
            a, e, i, o, u = e+i+u, a+i, e+o, i, i+o
        return (a + e + i + o + u) % m

ob = Solution()
print(ob.solve(3))

ইনপুট

3

আউটপুট

19
  1. C++ প্রোগ্রাম: দিয়ে দেয়া আকারের ডোডেকাগন बनाने के तरीক সংখ্যা গণনা

  2. পাইথনে n ডাইস ফেলে নির্দিষ্ট টোটাল পাওয়ার উপায়ের সংখ্যা গণনা করার প্রোগ্রাম

  3. কনসিকিউটিভ ১ ছাড়া বাইনারি স্ট্রিংয়ের সংখ্যা গণনা করার পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রাম: সেট ব্যবহার করে স্ট্রিং-এ স্বরবর্ণ (vowel) গণনা