কম্পিউটার

পাইথনে একটি বিন্দুকে অন্যটিতে রূপান্তর করা যায় কিনা তা পরীক্ষা করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি প্রারম্ভিক বিন্দু (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

  1. পাইথনে একটি গাছ অন্য গাছের সাবট্রি কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  2. প্রদত্ত গ্রাফটি পাইথনে দ্বিপক্ষীয় কি না তা পরীক্ষা করার জন্য প্রোগ্রাম

  3. একটি মান বিএসটি-তে আছে কিনা পাইথনে নেই তা পরীক্ষা করার জন্য প্রোগ্রাম

  4. পাইথন প্রোগ্রাম একটি তালিকা খালি কি না পরীক্ষা করতে?