মান লিজিয়ে আমাদের ২D প্লেনে তিনটি ভেক্টর x, y এবং z আছে। আমাদের যাচাই করতে হবে ভেক্টর x-কে ৯০ ডিগ্রি (ক্লকওয়াইজ) রোটেট করে বা ভেক্টর z যোগ করে যতবার দরকার ততবার করে ভেক্টর y পাওয়া যায় কিনা।
যেমন, ইনপুট যদি x = (-4, -2), y = (-1, 2), z = (-2, -1) হয়, তবে আউটপুট হবে True কারণ আমরা z-কে x-এর সাথে যোগ করলে লোকেশন পাব (-2, -1), তারপর ৯০° ক্লকওয়াইজ রোটেট করলে (-1, 2) পাব।

সমাধানের ধাপসমূহ
util() ফাংশন সংজ্ঞায়িত করুন। এটি p, q, r, s নেবে
d := r * r + s * s- যদি
d০ সমান হয়, তবে:trueরিটার্ন করুন যখনpএবংqদুটোই ০, অন্যথায়false
trueরিটার্ন করুন যখন(p * r + q * s)এবং(q * r - p * s)দুটোইdদ্বারা বিভাজ্য, অন্যথায়false- মূল মেথড থেকে নিচের কাজ করুন:
- যদি নিচের যেকোনো একটিই সত্য হয়:
util(x_p - x_q, y_p - y_q, x_r, y_r)util(x_p + x_q, y_p + y_q, x_r, y_r)util(x_p - y_q, y_p + x_q, x_r, y_r)util(x_p + y_q, y_p - x_q, x_r, y_r)
Trueরিটার্ন করুন Falseরিটার্ন করুন
- যদি নিচের যেকোনো একটিই সত্য হয়:
উদাহরণ
বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:
def util(p, q, r, s):
d = r * r + s * s
if d == 0:
return p == 0 and q == 0
return (p * r + q * s) % d == 0 and (q * r - p * s) % d == 0
def solve(p,q,r):
if util(p[0] - q[0], p[1] - q[1], r[0], r[1]) or util(p[0] + q[0], p[1] + q[1], r[0], r[1]) or util(p[0] - q[1], p[1] + q[0], r[0], r[1]) or util(p[0] + q[1], p[1] - q[0], r[0], r[1]):
return True
return False
p = (-4, -2)
q = (-1, 2)
r = (-2, -1)
print(solve(p, q, r))
ইনপুট
(-4, -2), (-1, 2), (-2, -1)
আউটপুট
True