ধরুন আমাদের দুটি মান আছে r এবং c। যদি একটি দাবা নাইট একটি অসীম বড় দাবা বোর্ডের শুরুতে স্থানাঙ্কে (0, 0) স্থাপন করা হয়, তবে আমাদের অবস্থানে পৌঁছতে ন্যূনতম সংখ্যক চাল খুঁজে বের করতে হবে (r, c)। নাইট দাবা হিসাবে একই চলন্ত শৈলী অনুসরণ করবে. এটি অনুভূমিকভাবে দুটি বর্গক্ষেত্র দূরে এবং একটি বর্গক্ষেত্র উল্লম্বভাবে বা দুটি বর্গক্ষেত্র উল্লম্বভাবে এবং একটি বর্গক্ষেত্র অনুভূমিকভাবে সরে যায়৷
সুতরাং, যদি ইনপুটটি r =6, c =1 এর মত হয়, তাহলে আউটপুট হবে 3, লালটি প্রাথমিক অবস্থান, সবুজটি চূড়ান্ত এবং হলুদ হল মধ্যবর্তী ধাপ।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি r
- r এবং c অদলবদল করুন
- রিটার্ন ৩
- প্রত্যাবর্তন 4
- রিটার্ন ডেল্টা - 2 *((ডেল্টা - c) / 3 এর ভাগফল)
- রিটার্ন ডেল্টা - 2 *((ডেল্টা - c) / 4 এর ভাগফল)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, r, c): if r < c: r, c = c, r if (r, c) == (1, 0): return 3 if (r, c) == (2, 2): return 4 delta = r - c if c > delta: return delta - 2 * ((delta - c) // 3) else: return delta - 2 * ((delta - c) // 4) ob = Solution() r = 6 c = 1 print(ob.solve(r, c))
ইনপুট
6, 1
আউটপুট
3