ধরুন আমাদের একটি রিং আছে, যা 1 থেকে N পর্যন্ত কয়েকটি সংখ্যা দিয়ে তৈরি। আমাদের কাছে A এবং B টো নম্বরও রয়েছে। এখন, আমরা যেকোনো জায়গায় দাঁড়াতে পারি (বলুন x) এবং দূরত্বের মোট যোগফলের সাপেক্ষে গণনা অপারেশনটি সম্পাদন করুন (বলুন Z =X থেকে A এর দূরত্ব + X থেকে B পর্যন্ত দূরত্ব)। আমাদের এমন X নির্বাচন করতে হবে যাতে Z ছোট হয়। শেষে Z এর মান ফেরত দিন। আমাদের মনে রাখতে হবে যে X A এবং B এর মত হবে না।
সুতরাং, যদি ইনপুটটি হয় N =30, A =10, B =20, তাহলে X =15 নির্বাচন করে আউটপুট 10 হবে, X থেকে A থেকে দূরত্ব হল 5, এবং থেকে দূরত্ব X থেকে B হল 5। সুতরাং, মোট দূরত্ব =5 + 5 =10।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
যদি a> b অ-শূন্য হয়, তাহলে
-
a এবং b
অদলবদল করুন
-
-
clock_wise_dist :=b - a
-
counter_clock_wise_dist :=(a - 1) +(n - b + 1)
-
minimum_dist :=সর্বনিম্ন_clock_wise_dist, counter_clock_wise_dist
-
যদি minimum_dist 1 এর মত হয়, তাহলে
-
রিটার্ন 3
-
-
minimum_dist
ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def get_min_z(n, a, b): if (a > b): a, b = b, a clock_wise_dist = b - a counter_clock_wise_dist = (a - 1) + (n - b + 1) minimum_dist = min(clock_wise_dist, counter_clock_wise_dist) if (minimum_dist == 1): return 3 return minimum_dist n = 30 a = 10 b = 20 print(get_min_z(n, a, b))
ইনপুট
30, 10, 20
আউটপুট
10