ধরুন আমাদের একটি প্রারম্ভিক বিন্দু (sx, sy), এবং লক্ষ্য বিন্দু (tx, ty), আমাদের পরীক্ষা করতে হবে যে সূচনা বিন্দু থেকে শেষ বিন্দু পর্যন্ত চলনের একটি ক্রম বিদ্যমান কিনা। এখানে একটি বিন্দু (x, y) নেওয়া এবং এটিকে (x, x+y) বা (x+y, y) তে রূপান্তর করা।
সুতরাং, যদি ইনপুটটি (sx, sy) =(1,1) (tx, ty) =(4,5) এর মত হয়, তবে আউটপুটটি True হবে, এর কারণ হল (1,1) থেকে (2, 1), তারপর (3,1), তারপর (4,1), তারপর (4,5)।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন সংজ্ঞায়িত করুন solve()। এটি sx, sy, tx, ty
লাগবে -
যদি sx> tx বা sy> ty, তাহলে
-
রিটার্ন ফলস
-
-
sx যদি tx এর মত হয়, তাহলে
-
return(ty-sy) mod sx 0
এর মতই
-
-
যদি sy ty এর মত হয়, তাহলে
-
return(tx - sx) mod sy 0
এর মতই
-
-
সমাধান (sx, sy, tx-ty, ty) অথবা সমাধান (sx, sy, tx, ty-tx)
উদাহরণ
আসুন আরও ভালভাবে বোঝার জন্য নিম্নলিখিত বাস্তবায়ন দেখি
def solve(sx, sy, tx, ty): if sx > tx or sy > ty: return False if sx == tx: return (ty-sy)%sx == 0 if sy == ty: return (tx - sx)%sy == 0 return solve(sx, sy, tx-ty, ty) or solve(sx, sy, tx, ty-tx) (sx, sy) = (1,1) (tx, ty) = (4,5) print(solve(sx, sy, tx, ty))
ইনপুট
(1,1), (4,5)
আউটপুট
True