मान लीजिए कि हमारे पास एक प्रारंभिक बिंदु (sx, sy), और लक्ष्य बिंदु (tx, ty) है, हमें यह जांचना है कि चालों का एक क्रम प्रारंभ बिंदु से अंत बिंदु तक मौजूद है या नहीं। यहां चाल में एक बिंदु (x, y) लेना और इसे या तो (x, x+y) या (x+y, y) में बदलना शामिल है।
इसलिए, यदि इनपुट (sx, sy) =(1,1) (tx, ty) =(4,5) जैसा है, तो आउटपुट सही होगा, ऐसा इसलिए है क्योंकि (1,1) से (2, 1), फिर (3,1), फिर (4,1), फिर (4,5)।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
फ़ंक्शन को हल करें () परिभाषित करें। इसमें sx, sy, tx, ty लगेगा
-
अगर sx> tx या sy> ty, तो
-
झूठी वापसी
-
-
अगर sx, tx के समान है, तो
-
वापसी (ty-sy) mod sx 0 के समान है
-
-
यदि sy, ty के समान है, तो
-
वापसी (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