সংখ্যার সাথে ডুডল করার সময়, আমি একটি আকর্ষণীয় অনুমান পেয়েছি যা আপনি সংখ্যার একটি তালিকা থেকে তৈরি করতে পারেন। আপনি যদি এই একই ক্রিয়াকলাপটি পর্যাপ্ত সময় পুনরুক্ত করেন তবে আপনি সর্বদা আসল অ্যারেতে ফিরে আসবেন। আসুন নীচের তালিকাটি ব্যবহার করুন:
[1, 2, 3, 4, 5]
উদাহরণ হিসাবে
অ্যারে বিপরীত । এখন আমাদের অ্যারে হয়
[5, 4, 3, 2, 1]
প্রতিটি জুড়াকে পুনরায় অর্ডার করুন (অদলবদল)। আমাদের তালিকায় 2 জোড়া রয়েছে:
[5, 4]
এবং[3, 2]
। দুর্ভাগ্যক্রমে, আমরা1
একটি জোড়কে গ্রুপ করতে পারি না , তাই আমরা কেবল এটি নিজের হাতে ছেড়ে দেব। প্রতিটি জোড়া অদলবদল করার পরে, নতুন অ্যারেটি হ'ল:[4, 5, 2, 3, 1]
আমরা মূল অ্যারে না ফেরা পর্যন্ত 1 এবং 2 পদক্ষেপ পুনরাবৃত্তি করুন । এখানে পরবর্তী 4 টি পদক্ষেপ রয়েছে:
Step 2: Start: [4, 5, 2, 3, 1] Reversed: [1, 3, 2, 5, 4] Pairs Swapped: [3, 1, 5, 2, 4] Step 3: Start: [3, 1, 5, 2, 4] Reversed: [4, 2, 5, 1, 3] Pairs Swapped: [2, 4, 1, 5, 3] Step 4: Start: [2, 4, 1, 5, 3] Reversed: [3, 5, 1, 4, 2] Pairs Swapped: [5, 3, 4, 1, 2] Step 5: Start: [5, 3, 4, 1, 2] Reversed: [2, 1, 4, 3, 5] Pairs Swapped: [1, 2, 3, 4, 5] # No more steps needed because we are back to the original array
তালিকার দৈর্ঘ্য, n বিজোড় হলে, এটি সর্বদা আসল n পদক্ষেপ গ্রহণ করবে মূল অ্যারেটিতে ফিরে আসতে। যদি এন সমান হয় তবে এটি সর্বদা 2 টি পদক্ষেপ গ্রহণ করে মূল অ্যারেটিতে ফিরে যেতে পারে, যদি না এন হয় 2, তবে এক্ষেত্রে এটি 1 পদক্ষেপ নেবে (কারণ বিপরীত হওয়া এবং অদলবদল একই জিনিস)।
আজকের জন্য আপনার কাজ (আপনি এটি গ্রহণ করার পছন্দ করা উচিত) স্বেচ্ছাসেবী দৈর্ঘ্যের তালিকার জন্য এই ধাপগুলির সেটটি কল্পনা করা। আপনি একটি প্রোগ্রাম বা ফাংশন যা একটি একক ধনাত্মক পূর্ণসংখ্যা লাগে লিখতে হবে এন ইনপুট হিসাবে তালিকার জন্য ধাপের এই সেট, এবং আছে [1, n]
। আপনাকে অবশ্যই প্রতিটি মধ্যবর্তী পদক্ষেপ আউটপুট দিতে হবে, তার অর্থ প্রতিটি পদক্ষেপ মুদ্রণ করা বা সেগুলি সমস্ত পদক্ষেপের তালিকা হিসাবে ফিরিয়ে দেওয়া। আমি আউটপুট ফর্ম্যাটটি সম্পর্কে খুব পছন্দ করি না যতক্ষণ না এটি স্পষ্ট যে আপনি প্রতিটি পদক্ষেপ তৈরি করছেন। এর অর্থ (উদাহরণস্বরূপ) এর যে কোনও একটি:
STDOUT এ তালিকার প্রতিটি পদক্ষেপ আউটপুট করা
তালিকাগুলির একটি তালিকা ফিরিয়ে দেওয়া
প্রতিটি পদক্ষেপের স্ট্রিং উপস্থাপনার তালিকা ফিরিয়ে দেওয়া
একটি ম্যাট্রিক্স রিটার্নিং / আউটপুট আউট করা
গ্রহণযোগ্য হবে।
আপনার অবশ্যই মূল অ্যারে আউটপুট করতে হবে, তা শেষে আসে বা শুরুতে আপনার উপর নির্ভর করে। (প্রযুক্তিগতভাবে উভয়ই সঠিক)
আপনাকে 2 এর পরিবর্তে 1 টি পদক্ষেপ গ্রহণের 2 প্রান্তের কেসটি পরিচালনা করতে হবে , সুতরাং দয়া করে নিশ্চিত করুন যে আপনার সমাধানটি 2 এর ইনপুট দিয়ে কাজ করে (এবং 1 অন্য সম্ভাব্য প্রান্তের কেস)।
যথারীতি এটি কোড-গল্ফ , সুতরাং মানক ফাঁকগুলি প্রয়োগ হয় এবং আপনার পছন্দসই ভাষায় আপনার সমাধানটিকে অন্য যে কোনটির চেয়ে সংক্ষিপ্ত করার চেষ্টা করুন (বা এমনকি যদি আপনি মনে করেন তবে আপনার চেয়ে সাধারণত আরও খাটো এমন কোনও ভাষা বীট করার চেষ্টা করুন) একটি চ্যালেঞ্জ জন্য)।
পরীক্ষা IO
1:
[1]
2:
[1, 2]
3:
[2, 3, 1]
[3, 1, 2]
[1, 2, 3]
4:
[3, 4, 1, 2]
[1, 2, 3, 4]
5:
[4, 5, 2, 3, 1]
[3, 1, 5, 2, 4]
[2, 4, 1, 5, 3]
[5, 3, 4, 1, 2]
[1, 2, 3, 4, 5]
7:
[6, 7, 4, 5, 2, 3, 1]
[3, 1, 5, 2, 7, 4, 6]
[4, 6, 2, 7, 1, 5, 3]
[5, 3, 7, 1, 6, 2, 4]
[2, 4, 1, 6, 3, 7, 5]
[7, 5, 6, 3, 4, 1, 2]
[1, 2, 3, 4, 5, 6, 7]
9:
[8, 9, 6, 7, 4, 5, 2, 3, 1]
[3, 1, 5, 2, 7, 4, 9, 6, 8]
[6, 8, 4, 9, 2, 7, 1, 5, 3]
[5, 3, 7, 1, 9, 2, 8, 4, 6]
[4, 6, 2, 8, 1, 9, 3, 7, 5]
[7, 5, 9, 3, 8, 1, 6, 2, 4]
[2, 4, 1, 6, 3, 8, 5, 9, 7]
[9, 7, 8, 5, 6, 3, 4, 1, 2]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
এবং ভাল পরিমাপের জন্য, এখানে একটি বৃহত্তর পরীক্ষার কেস:
27:
[26, 27, 24, 25, 22, 23, 20, 21, 18, 19, 16, 17, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3, 1]
[3, 1, 5, 2, 7, 4, 9, 6, 11, 8, 13, 10, 15, 12, 17, 14, 19, 16, 21, 18, 23, 20, 25, 22, 27, 24, 26]
[24, 26, 22, 27, 20, 25, 18, 23, 16, 21, 14, 19, 12, 17, 10, 15, 8, 13, 6, 11, 4, 9, 2, 7, 1, 5, 3]
[5, 3, 7, 1, 9, 2, 11, 4, 13, 6, 15, 8, 17, 10, 19, 12, 21, 14, 23, 16, 25, 18, 27, 20, 26, 22, 24]
[22, 24, 20, 26, 18, 27, 16, 25, 14, 23, 12, 21, 10, 19, 8, 17, 6, 15, 4, 13, 2, 11, 1, 9, 3, 7, 5]
[7, 5, 9, 3, 11, 1, 13, 2, 15, 4, 17, 6, 19, 8, 21, 10, 23, 12, 25, 14, 27, 16, 26, 18, 24, 20, 22]
[20, 22, 18, 24, 16, 26, 14, 27, 12, 25, 10, 23, 8, 21, 6, 19, 4, 17, 2, 15, 1, 13, 3, 11, 5, 9, 7]
[9, 7, 11, 5, 13, 3, 15, 1, 17, 2, 19, 4, 21, 6, 23, 8, 25, 10, 27, 12, 26, 14, 24, 16, 22, 18, 20]
[18, 20, 16, 22, 14, 24, 12, 26, 10, 27, 8, 25, 6, 23, 4, 21, 2, 19, 1, 17, 3, 15, 5, 13, 7, 11, 9]
[11, 9, 13, 7, 15, 5, 17, 3, 19, 1, 21, 2, 23, 4, 25, 6, 27, 8, 26, 10, 24, 12, 22, 14, 20, 16, 18]
[16, 18, 14, 20, 12, 22, 10, 24, 8, 26, 6, 27, 4, 25, 2, 23, 1, 21, 3, 19, 5, 17, 7, 15, 9, 13, 11]
[13, 11, 15, 9, 17, 7, 19, 5, 21, 3, 23, 1, 25, 2, 27, 4, 26, 6, 24, 8, 22, 10, 20, 12, 18, 14, 16]
[14, 16, 12, 18, 10, 20, 8, 22, 6, 24, 4, 26, 2, 27, 1, 25, 3, 23, 5, 21, 7, 19, 9, 17, 11, 15, 13]
[15, 13, 17, 11, 19, 9, 21, 7, 23, 5, 25, 3, 27, 1, 26, 2, 24, 4, 22, 6, 20, 8, 18, 10, 16, 12, 14]
[12, 14, 10, 16, 8, 18, 6, 20, 4, 22, 2, 24, 1, 26, 3, 27, 5, 25, 7, 23, 9, 21, 11, 19, 13, 17, 15]
[17, 15, 19, 13, 21, 11, 23, 9, 25, 7, 27, 5, 26, 3, 24, 1, 22, 2, 20, 4, 18, 6, 16, 8, 14, 10, 12]
[10, 12, 8, 14, 6, 16, 4, 18, 2, 20, 1, 22, 3, 24, 5, 26, 7, 27, 9, 25, 11, 23, 13, 21, 15, 19, 17]
[19, 17, 21, 15, 23, 13, 25, 11, 27, 9, 26, 7, 24, 5, 22, 3, 20, 1, 18, 2, 16, 4, 14, 6, 12, 8, 10]
[8, 10, 6, 12, 4, 14, 2, 16, 1, 18, 3, 20, 5, 22, 7, 24, 9, 26, 11, 27, 13, 25, 15, 23, 17, 21, 19]
[21, 19, 23, 17, 25, 15, 27, 13, 26, 11, 24, 9, 22, 7, 20, 5, 18, 3, 16, 1, 14, 2, 12, 4, 10, 6, 8]
[6, 8, 4, 10, 2, 12, 1, 14, 3, 16, 5, 18, 7, 20, 9, 22, 11, 24, 13, 26, 15, 27, 17, 25, 19, 23, 21]
[23, 21, 25, 19, 27, 17, 26, 15, 24, 13, 22, 11, 20, 9, 18, 7, 16, 5, 14, 3, 12, 1, 10, 2, 8, 4, 6]
[4, 6, 2, 8, 1, 10, 3, 12, 5, 14, 7, 16, 9, 18, 11, 20, 13, 22, 15, 24, 17, 26, 19, 27, 21, 25, 23]
[25, 23, 27, 21, 26, 19, 24, 17, 22, 15, 20, 13, 18, 11, 16, 9, 14, 7, 12, 5, 10, 3, 8, 1, 6, 2, 4]
[2, 4, 1, 6, 3, 8, 5, 10, 7, 12, 9, 14, 11, 16, 13, 18, 15, 20, 17, 22, 19, 24, 21, 26, 23, 27, 25]
[27, 25, 26, 23, 24, 21, 22, 19, 20, 17, 18, 15, 16, 13, 14, 11, 12, 9, 10, 7, 8, 5, 6, 3, 4, 1, 2]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
মজা গল্ফিং আছে!
1 2 3 4 5
, না 1 2 4 3 5
।
array[0]
প্রক্রিয়াটির শুরু এবং শেষ পর্যন্ত কেবল ১ হবে n = 999
। প্যাটার্ন দিকে তাকিয়ে থেকে, তা প্রত্যেক বিজোড় জন্য মত মনে হয় এন , প্রথম উপাদান যায় 1, n-1, 3, n - 3, 5, n - 5, 7...
পর্যন্ত n - 2, 3, n, 1
, যা সবসময় নিতে হবে এন ধাপ। বৃহত্তর এন দিয়ে এই প্যাটার্নটি পরিবর্তিত হবে এমন কোনও কারণ আমি দেখছি না ।
1, n, 2, n-2, 4, n-4, 6, n-6, 8, n-8, ...
এবং এটি আনয়ন দ্বারা দেখানোর জন্য সহজ যে এমনকি অবস্থানে একটি উপাদান এক্স থেকে প্যাচসমূহ Nx এক ধাপ পরে , এবং বিজোড় অবস্থানের একটি উপাদান x -x + 2 এ চলে যায় । সুতরাং যদি এন = 2 কে + 1 হয় , তবে 2 কে- চতুর্থ পদক্ষেপের পরে 1 হবে 2 কে , এবং পরের ধাপে এন-2 কে = 1 এ হবে ।