ধরুন আমাদের তিনটি অ্যারে দেওয়া হয়েছে; curr_a, curr_b, এবং conv_rate। প্রথম অ্যারেতে কিছু মুদ্রার নাম রয়েছে এবং দ্বিতীয়টিতেও রয়েছে এবং অ্যারে conv_rate একটি আইটেম curr_a[i] থেকে cuur_b[i] এর মধ্যে রূপান্তরের হার ধারণ করে। conv_rate[i] এর আইটেম হল curr_a[i] এবং curr_b[i] এর মধ্যে রূপান্তর হার। এখন, আমাদের src এবং dest দুটি মুদ্রা দেওয়া হয়েছে। আমাদের src থেকে গন্তব্যে রূপান্তরের হার খুঁজে বের করতে হবে। আমরা আউটপুট হিসাবে মান ফেরত দিই, এবং এটি সম্ভব না হলে আমরা 0 ফেরত দিই।
সুতরাং, যদি ইনপুট হয় src ="INR", dest ="JPY", curr_a =["INR", "GBP", "EUR"], curr_b =["GBP", "EUR", "JPY"] , conv_rate =[0.009, 1.17, 129.67], তাহলে আউটপুট হবে 1.3654250999999997
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=একটি নতুন মানচিত্র যাতে ডিফল্ট মান হিসেবে 0 থাকে
- temp[src] :=1
- i :=0
- p :=সত্য
- যখন p এবং i <=তাপমাত্রার আকার, do
- p :=মিথ্যা
- curr_a-এ প্রতিটি x, curr_b-এ y এবং conv_rate-এ z-এর জন্য করুন
- যদি temp[x] * z> temp[y] অ-শূন্য হয়, তাহলে
- temp[y] :=temp[x] * z
- p :=সত্য
- i :=i + 1
- যদি temp[x] * z> temp[y] অ-শূন্য হয়, তাহলে
- যদি i <=তাপমাত্রার আকার, তাহলে
- রিটার্ন টেম্প[ডেস্ট]
- অন্যথায়,
- রিটার্ন -1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
from collections import defaultdict
def solve(src, dest, curr_a, curr_b, conv_rate):
temp = defaultdict(int)
temp[src] = 1
i = 0
p = True
while p and i <= len(temp):
p = False
for x, y, z in zip(curr_a, curr_b, conv_rate):
if temp[x] * z > temp[y]:
temp[y] = temp[x] * z
p = True
i += 1
return temp[dest] if i <= len(temp) else -1
print(solve("INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67])) ইনপুট
"INR", "JPY", ["INR", "GBP", "EUR"], ["GBP", "EUR", "JPY"], [0.009, 1.17, 129.67]
আউটপুট
1.3654251