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

পাইথনে যাচাই করুন সংখ্যার সব সাব-নাম্বারের ডিজিট প্রোডাক্ট ইউনিক কিনা

ধরুন, একটি সংখ্যা n দেওয়া হয়েছে। আমাদের যাচাই করতে হবে যে এই সংখ্যার সব সাব-নাম্বার (উপ-সংখ্যা) গুলোর ডিজিট প্রোডাক্ট (অঙ্কগুলোর গুণফল) কি ইউনিক (অনন্য)। একটি n-অঙ্কের সংখ্যায় মোট n*(n+1)/2 টি সাব-নাম্বার থাকে। উদাহরণস্বরূপ, ১৩৫-এর সাব-নাম্বার: ১, ৩, ৫, ১৩, ৩৫, ১৩৫।

যেমন, ইনপুট n = 235 হলে আউটপুট হবে True, কারণ সাব-নাম্বার: [2, 3, 5, 23, 35, 235] এবং ডিজিট প্রোডাক্ট: [2, 3, 5, 6, 15, 30] — সবই ইউনিক।

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

  • dig_prod(digits) ফাংশন বানান যা একটি ডিজিট লিস্ট নিয়ে গুণফল ফেরত দেবে।
  • সংখ্যাকে স্ট্রিং-এ কনভার্ট করুন, তারপর প্রতিটি অঙ্ককে ইন্টিজার-এ কনভার্ট করে digits লিস্টে রাখুন।
  • prod_set = set() দিয়ে একটি সেট রাখুন।
  • দুটি নেস্টেড লুপ দিয়ে সব সাব-অ্যারে (i থেকে j) এর ডিজিট প্রোডাক্ট বের করুন।
    • যদি প্রোডাক্ট সেটে থাকে, তবে False ফেরত দিন।
    • অন্যথায় সেটে যোগ করুন।
  • লুপ শেষ হলে True ফেরত দিন।

উদাহরণ কোড

def dig_prod(digits):
    product = 1
    for d in digits:
        product *= d
    return product

def solve(num):
    num_str = str(num)
    length = len(num_str)
    digits = [None] * length
    prod_set = set()
    for i in range(length):
        digits[i] = int(num_str[i])
    for i in range(length):
        for j in range(i, length):
            item = dig_prod(digits[i:j+1])
            if item in prod_set:
                return False
            else:
                prod_set.add(item)
    return True

n = 235
print(solve(n))

ইনপুট

235

আউটপুট

True
  1. পাইথনে টাপল লিস্টে সব টাপলের দৈর্ঘ্য সমান কিনা যাচাই (Find whether all tuples have same length)

  2. পাইথনে চেক করা সব লিস্ট এলিমেন্ট একই কিনা

  3. পাইথনে স্ট্রিং-এ সব ক্যারেক्टर ইউনিক কিনা চেক করা

  4. পাইথন প্রোগ্রাম: একটি সংখ্যার সব অঙ্ক সেটি বিভাজ্য কিনা যাচাই করা