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

পাইথনে প্রিয় ক্যান্ডি প্রিয় দিনে খাওয়া সম্ভব কিনা চেক করার প্রোগ্রাম


মান লিজিয়ে আমাদের একটি পজিটিভ ভ্যালুর অ্যারে আছে candiesCount যেখানে candiesCount[i] নির্দেশ করে i-তম টাইপের ক্যান্ডির সংখ্যা। আরেকটি অ্যারে আছে queries যেখানে queries[i]-তে তিনটি প্যারামিটার রয়েছে [favoriteType_i, favoriteDay_i, dailyCap_i]। কিছু নিয়ম আছে:

  • দিন ০ থেকে ক্যান্ডি খাওয়া শুরু করব।

  • যতক্ষণ না i-1 টাইপের সকল ক্যান্ডি খাওয়া শেয়, i টাইপের ক্যান্ডি খাওয়া যাবে না।

  • প্রতিদিন কমপক্ষে একটি ক্যান্ডি খেতে হবে যতক্ষণ না সকল ক্যান্ডি খাওয়া শেয়।

এই নিয়মগুলো মেনে, প্রতিটি কোয়েরির জন্য একটি বুলিয়ান মান দিতে হবে। i-তম এন্ট্রি true হবে যদি আমরা favoriteType_i টাইপের ক্যান্ডি favoriteDay_i দিনে খেতে পারি, যেন কোনো দিনে dailyCap_i-এর বেশি ক্যান্ডি খাওয়া নয়। একই দিনে বিভিন্ন টাইপের ক্যান্ডি খাওয়া যায় (নিয়ম ২ মেনে)।

যেমন, ইনপুট হলে candiesCount = [7,4,5,3,8], queries = [[0,2,2],[4,2,4],[2,13,100]], তবে আউটপুট হবে [true, false, true] কারণ:

  • দিন ০ ও ১-এ ২টি টাইপ-০ ক্যান্ডি খালে, দিন ২-এ টাইপ-০ ক্যান্ডি খাওয়া যাবে।

  • প্রতিদিন সর্বোচ্চ ৪ ক্যান্ডি খাওয়া যাক। দিন ০-এ ৪টি টাইপ-০, দিন ১-এ ৪টি টাইপ-০ ও ১, দিন ২-এ শুধু ৪টি টাইপ-১ ও ২ পাওয়া যাবে, টাইপ-৪ নয়।

  • প্রতিদিন ১ ক্যান্ডি খালে, দিন ১৩-এ টাইপ-২ ক্যান্ডি পাওয়া যাবে।

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

  • sumcandy := [candiesCount[0]]

  • index := 1

  • index < len(candiesCount) থাকা পর্যন্ত: sumcandy.append(sumcandy[index-1] + candiesCount[index]), index += 1

  • sumcandy.append(0)

  • res := নতুন লিস্ট

  • queries-এ প্রতিটি each এর জন্য:

    • typ := each[0], day := each[1], cap := each[2]

    • যদি day+1 > sumcandy[typ] বা (day+1)*cap <= sumcandy[typ-1] হয়, তবে res.append(False)

    • অন্যথায়, res.append(True)

  • res রিটার্ন করুন।

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন:

def solve(candiesCount, queries):
    sumcandy = [candiesCount[0]]
    index = 1
    while index < len(candiesCount):
        sumcandy.append(sumcandy[index-1] + candiesCount[index])
        index += 1
    sumcandy.append(0)
    res = []
    for each in queries:
        typ = each[0]
        day = each[1]
        cap = each[2]
        if day+1 > sumcandy[typ] or (day+1)*cap <= sumcandy[typ-1]:
            res.append(False)
        else:
            res.append(True)
    return res

candiesCount = [7,4,5,3,8]
queries = [[0,2,2],[4,2,4],[2,13,100]]
print(solve(candiesCount, queries))

ইনপুট

[7,4,5,3,8], [[0,2,2],[4,2,4],[2,13,100]]

আউটপুট

[True, False, True]

  1. পাইথনে দুটি ট্রি নোড স왪 করায় সমান হয় কিনা যাচাই করা (Flip Equivalent Trees)

  2. পাইথনে সব কোর্স নেওয়া সম্ভব কিনা যাচাই করার প্রোগ্রাম

  3. পাইথনে একটি স্ট্রিংকে অন্য স্ট্রিংএ 1-to-1 ম্যাপ করা সম্ভব কিনা যাচাই করার প্রোগ্রাম

  4. পাইথনে লিস্ট খালি কিনা যাচাই করার প্রোগ্রাম