বাছাই করা অ্যালগরিদম এরকম হয়:
তালিকাটি বাছাই না করা অবস্থায়, সমস্ত আইটেমের অর্ধেক স্ন্যাপ করুন (সেগুলি তালিকা থেকে সরান)। তালিকাটি বাছাই না করা বা কেবলমাত্র একটি আইটেম অবধি অব্যাহত থাকে (যা ডিফল্টরূপে বাছাই করা হয়)। এই বাছাই করা অ্যালগরিদম বাস্তবায়নের ভিত্তিতে বিভিন্ন ফলাফল দিতে পারে।
আইটেম অপসারণ পদ্ধতি সিদ্ধান্ত গ্রহণের উপর নির্ভর করে তবে তালিকাটি আইটেম অপসারণের পদ্ধতির এক পাসের আগের হিসাবে অর্ধেক দীর্ঘ হওয়া উচিত। আপনার অ্যালগরিদম প্রথম অর্ধেক বা তালিকা, তালিকার শেষ অর্ধেক, সমস্ত বিজোড় আইটেম, সমস্ত এমনকি আইটেমগুলি তালিকাটিতে অর্ধেক দীর্ঘ না হওয়া অবধি, বা উল্লেখ না করা কোনওটি মুছে ফেলার সিদ্ধান্ত নিতে পারে।
ইনপুট তালিকায় একটি স্বতন্ত্র পরিমাণে আইটেম থাকতে পারে (কারণগুলির মধ্যে, 1000 টি আইটেম পর্যন্ত বলা যাক), কেবলমাত্র 2 ^ n আইটেমের পুরোপুরি বিভাজ্য তালিকা নয়। রানটাইমের সময় হার্ডকডযুক্ত বা এলোমেলোভাবে সিদ্ধান্ত নেওয়া হলে তালিকাটি বিজোড় হলে আপনাকে (এন + 1) / 2 বা (এন -1) / 2 আইটেমগুলি সরিয়ে ফেলতে হবে। নিজেরাই সিদ্ধান্ত নিন: মহাবিশ্বে যদি এক অদ্ভুত পরিমাণে জীবন্ত জিনিস থাকে তবে থানস কী করবে?
কোনও আইটেম পূর্ববর্তী আইটেমের চেয়ে ছোট না হলে তালিকাটি বাছাই করা হয়। সদৃশগুলি ইনপুটটিতে ঘটতে পারে এবং আউটপুটে ঘটতে পারে।
আপনার প্রোগ্রামটি পূর্ণসংখ্যার অ্যারে নেওয়া উচিত (স্টিডিনের মাধ্যমে বা প্যারামিটার হিসাবে, পৃথক আইটেম বা অ্যারে প্যারামিটার হিসাবে), এবং সাজানো অ্যারেটি ফিরিয়ে (অথবা এটি স্টাডআউট প্রিন্ট করুন)।
উদাহরণ:
// A sorted list remains sorted
[1, 2, 3, 4, 5] -> [1, 2, 3, 4, 5]
// A list with duplicates may keep duplicates in the result
[1, 2, 3, 4, 3] -> [1, 3, 3] // Removing every second item
[1, 2, 3, 4, 3] -> [3, 4, 3] -> [4, 3] -> [3] // Removing the first half
[1, 2, 3, 4, 3] -> [1, 2] // Removing the last half
[1, 2, 4, 3, 5]
বিভিন্ন ফলাফল দিতে পারে:
// Removing every second item:
[1, 2, 4, 3, 5] -> [1, 4, 5]
বা:
// Removing the first half of the list
[1, 2, 4, 3, 5] -> [3, 5] // With (n+1)/2 items removed
[1, 2, 4, 3, 5] -> [4, 3, 5] -> [3, 5] // With (n-1)/2 items removed
বা:
// Removing the last half of the list
[1, 2, 4, 3, 5] -> [1, 2] // With (n+1)/2 items removed
[1, 2, 4, 3, 5] -> [1, 2, 4] // With (n-1)/2 items removed
বা:
// Taking random items away until half (in this case (n-1)/2) of the items remain
[1, 2, 4, 3, 5] -> [1, 4, 3] -> [4, 3] -> [4]
[9, 1, 1, 1, 1]
। আমার নিজস্ব অ্যালগরিদম এই ইনপুটটিতে ব্যর্থ হয়েছিল