এই আর্টিকেলে আমরা নিচের সমস্যা সমাধানের কথা শিখব।
সমস্যা: ধরি আমরা জানতে চাই ৪০-মंजিলা বিল্ডিং-এর কোন ফ্লোর থেকে ডিম ফেললে সেফ থাকবে এবং কোন ফ্লোর থেকে ডিম টুটবে। ডিমের সাহায্যে আমাদের মিনিমাম ট্রায়াল সংখ্যা বের করতে হবে যাতে সব ফ্লোর চেক করা যায়।
চলুন নিচের ইমপ্লিমেন্টেশনে সমাধানটি পর্যবেক্ষণ করি।
উদাহরণ
# ডাইনামিক প্রোগ্রামিং
INT_MAX = 32767
# মিনিমাম ট্রায়াল পাওয়ার জন্য
def eggDrop(n, k):
# ইলিশিয়ালাইজেশন
eggFloor = [[0 for x in range(k + 1)] for x in range(n + 1)]
# বেস কেস
for i in range(1, n + 1):
eggFloor[i][1] = 1
eggFloor[i][0] = 0
# আমাদের সবসময় j ট্রায়াল লাগে
for j in range(1, k + 1):
eggFloor[1][j] = j
# বাকি এন্ট্রি ফিল
for i in range(2, n + 1):
for j in range(2, k + 1):
eggFloor[i][j] = INT_MAX
for x in range(1, j + 1):
res = 1 + max(eggFloor[i-1][x-1], eggFloor[i][j-x])
if res < eggFloor[i][j]:
eggFloor[i][j] = res
return eggFloor[n][k]
# মেইন
n = 4
k = 40
print("Minimum number of trials in worst case scenario with " + str(n) + " eggs and " + str(k) + " floors is " + str(eggDrop(n, k)))
আউটপুট
Minimum number of trials in worst case scenario with 4 eggs and 40 floors is 6

সभी ভেরিয়েবল লোকাল স্কোপে ঘোষণা করা হয়েছে এবং তাদের রেফারেন্স উপরের চিত্রে দেখা যাচ্ছে।
উপসংহার
এই আর্টিকেলে আমরা শিখেছি কিভাবে এগ ড্রপিং পাজলের পাইথন প্রোগ্রাম লিখতে হয়।