ধরুন আমাদের কাছে একটি 2D ম্যাট্রিক্স রয়েছে যা একটি এক্সেল স্প্রেডশীটকে উপস্থাপন করে। আমাদেরকে একই ম্যাট্রিক্স খুঁজে বের করতে হবে সমস্ত কোষ এবং সূত্র গণনা করে। একটি এক্সেল স্প্রেডশীট নিচের মত দেখায়
B1 | 7 | 0 |
3 | 5 | =A1+A2 |
কলামগুলির নামকরণ করা হয়েছে (A, B, C...) এবং সারিগুলি হল (1, 2, 3...) প্রতিটি ঘরে হয় মূল্য, অন্য একটি কক্ষের একটি রেফারেন্স, অথবা একটি অপারেশনের জন্য একটি এক্সেল সূত্র থাকবে সংখ্যা বা সেল রেফারেন্সের মধ্যে। (উদাহরণ৷ "=A1+5", "=A2+B2", বা "=2+5")
সুতরাং, যদি ইনপুট মত হয়
B1 | 7 | 0 |
3 | 5 | =A1+A2 |
তাহলে আউটপুট হবে
7 | 7 | 0 |
3 | 5 | 10 |
যেমন B1 =7 (প্রথম সারি দ্বিতীয় কলাম) এবং "=A1 + A2" হল 7 + 3 =10৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
-
একটি ফাংশন সংজ্ঞায়িত করুন সমাধান()। এটি s
লাগবে -
যদি s সংখ্যাসূচক হয়, তাহলে s কে পূর্ণসংখ্যা হিসাবে ফেরত দিন
-
অন্যথায় সমাধান (getIdx(s))
ফেরত দিন -
একটি ফাংশন getIdx() সংজ্ঞায়িত করুন। এটি s
লাগবে -
একটি তালিকা ফেরত দিন যেখানে প্রথম মান হল 1 থেকে শেষ পর্যন্ত s-এর সাবস্ট্রিং পূর্ণসংখ্যা হিসাবে এবং দ্বিতীয় মান হল s[0]-এর ASCII - "A"
-
একটি ফাংশন do() সংজ্ঞায়িত করুন। এটি a, b, op
লাগবে -
op যদি "+" এর মত হয়, তাহলে
-
a + b
ফেরত দিন
-
-
op যদি "-" এর মত হয়, তাহলে
-
ফেরত দিন a - b
-
-
op যদি "*" এর মত হয়, তাহলে
-
একটি * b
ফেরত দিন
-
-
op যদি "/" এর মত হয়, তাহলে
-
ফেরত দিন a / b
-
-
একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি i, j
লাগবে -
ম্যাট্রিক্স[i,j] সাংখ্যিক হলে সেই মানটি ফেরত দিন
-
অন্যথায়:
-
s :=ম্যাট্রিক্স[i, j]
-
যদি s[0] "=" এর মত হয়, তাহলে
-
s এর সাবস্ট্রিং এর প্রতিটি c এর জন্য [সূচী 2 থেকে শেষ পর্যন্ত], করুন
-
c যদি (+, -, /, *) কোন অপারেটর হয়, তাহলে
-
op :=c
-
লুপ থেকে বেরিয়ে আসুন
-
-
-
[a, b] :=s এর সাবস্ট্রিং [সূচী 1 থেকে শেষ পর্যন্ত] এবং op দিয়ে বিভক্ত করুন
-
[aRes, bRes] :=[সমাধান(a) , সমাধান(b)]
-
ফিরতি do(aRes, bRes, op)
-
-
অন্যথায়,
-
রিটার্ন সমাধান(getIdx(গুলি))
-
-
-
ম্যাট্রিক্সের সারি গণনা 0 থেকে রেঞ্জের জন্য, করুন
-
j রেঞ্জ 0 থেকে ম্যাট্রিক্সের কলাম গণনার জন্য, করুন
-
ম্যাট্রিক্স[i, j] :=(সল্ভ(i, j)) স্ট্রিং হিসেবে
-
-
-
রিটার্ন ম্যাট্রিক্স
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
শ্রেণির সমাধান:def solve(self, matrix):def solve(s):try:return int(s) ছাড়া:return solve(*getIdx(s)) def getIdx(s):return [int(s) 1:]) - 1, ord(s[0]) - ord("A")] def do(a, b, op):if op =="+":রিটার্ন a + b if op =="- ":রিটার্ন a - b if op =="*":রিটার্ন a * b if op =="/":রিটার্ন a / b def solve(i, j):try:return int(matrix[i][j]) ) ব্যতীত:s =ম্যাট্রিক্স[i][j] যদি s[0] =="=":s এর জন্য c[2:]:যদি c তে "+-/*":op =c break a, b =এস ম্যাট্রিক্স)):রেঞ্জে j এর জন্য(লেন(ম্যাট্রিক্স[0])):ম্যাট্রিক্স[i][j] =str(সল্ভ(i, j)) রিটার্ন ম্যাট্রিক্সব =সমাধান()ম্যাট্রিক্স =[ ["B1", "7", "0"], ["3", "5", "=A1+A2"]]প্রিন্ট(ob.solve(matrix))প্রে>ইনপুট
[["B1", "7", "0"],["3", "5", "=A1+A2"] ]আউটপুট
[['7', '7', '0'],['3', '5', '10']]