এই প্রশ্নে বর্ণিত হিসাবে :
ডেভিড মরগান-মার ডিজাইন করেছেন ড্রপসোর্ট, রৈখিক সময়ের "বাছাই করা অ্যালগরিদম" এর একটি উদাহরণ যা একটি তালিকা তৈরি করে যা বাস্তবে সাজানো হয় তবে এতে কেবল কয়েকটি মূল উপাদান থাকে। এর আগে থাকা উপাদানগুলির সর্বাধিকের চেয়ে কম পরিমাণে বড় না এমন কোনও উপাদান কেবল তালিকা থেকে সরানো এবং বাতিল করা হয়।
তাদের একটি পরীক্ষার ক্ষেত্রে ব্যবহারের জন্য, {1, 2, 5, 4, 3, 7}
ফলনের একটি ইনপুট {1, 2, 5, 7}
হিসাবে 4
এবং 3
উভয়ই আগের "সাজানো" মান থেকে ছোট হওয়ার কারণে বাদ দেওয়া হয় 5
।
আমরা অ্যালগোরিদমগুলিকে "বাছাই" করতে চাই না, আমরা তাদের আসল চুক্তি হিসাবে চাই। অতএব, আমি আপনাকে একটি প্রোগ্রাম লিখতে চাই যা সংখ্যার একটি তালিকা দেওয়া হলে, ড্রপসোর্টড তালিকাগুলির একটি তালিকা আউটপুট দেয় (সম্পূর্ণ বাছাইয়ের অ্যালগরিদম হতে গেলে, আমাদের এই তালিকাগুলি মার্জ করতে হবে, তবে দুটি সাজানো তালিকাগুলি মার্জ করার আগেই সম্পন্ন হয়েছে, এবং আপনাকে এটি আবার জিজ্ঞাসা করা দু'টি প্রশ্ন জিজ্ঞাসা করা, সুতরাং এই প্রশ্নটি বিশেষত আমাদের সম্পূর্ণ ড্রপসোর্টের "বিভাজন" পদক্ষেপ)।
তবে আমাদের তালিকার ব্যবস্থা এবং বিষয়বস্তু অত্যন্ত গুরুত্বপূর্ণ। আপনার প্রোগ্রামের আউটপুট অবশ্যই একটি ড্রপসোর্টের আউটপুট সমতুল্য হওয়া উচিত, তারপরে বাতিল হওয়া মানগুলির একটি ড্রপসোর্ট এবং তারপরে আপনার কেবল বাছাই করা চেইনের একটি তালিকা না পাওয়া পর্যন্ত। আবার বিদ্যমান পরীক্ষার স্যুট ধার করা (এবং আরও দুটি যোগ করা):
Input -> Output
{1, 2, 5, 4, 3, 7} -> {{1, 2, 5, 7}, {4}, {3}}
{10, -1, 12} -> {{10, 12}, {-1}}
{-7, -8, -5, 0, -1, 1} -> {{-7, -5, 0, 1}, {-8, -1}}
{9, 8, 7, 6, 5} -> {{9}, {8}, {7}, {6}, {5}}
{10, 13, 17, 21} -> {{10, 13, 17, 21}}
{10, 10, 10, 9, 10} -> {{10, 10, 10, 10}, {9}} //Note equivalent values aren't dropped
{5, 4, 3, 8, 7, 6} -> {{5, 8}, {4, 7}, {3, 6}}
{0, 2, 5, 4, 0, 7} -> {{0, 2, 5, 7}, {4}, {0}}
আপনি ধরে নিতে পারেন ইনপুটটি খালি নেই।
এটি কোড-গল্ফ , সুতরাং স্ট্যান্ডার্ড বিধিগুলি প্রয়োগ হয়!
{3,4,5,3,4,5,3,4,5}
ফলে {{3,4,5,5,5},{3,4,4},{3}}
?
[5, 4, 3, 8, 7, 6] -> [5, 8], [4,3,7,6]
?