ধরুন, n সংখ্যক বল আছে। বল একটি ফ্যাশন 1,2,3,4,...,n অর্ডার করা হয়. এখন বলগুলিকে ক্রমানুসারে উল্টানো হয়েছে, বা n, n-1, n-2, ......, 2, 1 এভাবে সাজানো হয়েছে। বলগুলি আবার ক্রমানুসারে উল্টানো হয়েছে, এবার সেগুলি পজিশন 1 থেকে উল্টানো হয়েছে। n থেকে, অথবা এখন ক্রমটি n, 1, 2,....., n-1 হয়ে যায়। এই বিপরীত প্রক্রিয়াটি n বার পুনরাবৃত্তি হয় এবং প্রতিবার শুরুর অবস্থানটি ডানদিকে 1 স্থান সরানো হয়। আমাদের এখন রিভার্সালের পর 'সূচীতে' প্রাথমিকভাবে একটি বলের অবস্থান খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি বল =5, সূচক =2 এর মত হয়, তাহলে আউটপুট হবে 4 বল প্রাথমিকভাবে:1, 2, 3, 4, 5
তারপর,
5,4,3,2,1 5,1,2,3,4 5,1,4,3,2 5,1,4,2,3
2 পজিশনের বলটি বর্তমানে 4 পজিশনে রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি সূচক <ফ্লোর মান (বল / 2), তারপর
- রিটার্ন 2 * ইনডেক্স + 1
- অন্যথায়,
- রিটার্ন 2 *(বল - সূচক - 1)
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(balls, index): if index < balls // 2: return 2 * index + 1 else: return 2 * (balls - index - 1) print(solve(5, 2))
ইনপুট
5, 2
আউটপুট
4