ড্রিফ্টসর্ট একটি অ্যারে "বাছাই" করার একটি সহজ উপায়। এটি অ্যারেতে উপাদানগুলি "স্লাইডিং" বা "আবর্তিত" দ্বারা কাজ করে যতক্ষণ না অ্যারে বাছাই করা হয় বা অ্যারে বাছাই করা যায় না।
আসুন দুটি উদাহরণ দিয়ে চলুন। প্রথমে অ্যারে বিবেচনা করুন [10, 2, 3, 4, 7]
। অ্যারে বাছাই না করা হয়, আমরা এটি একবার ঘোরান। (এটি উভয় দিকেই ঘটতে পারে, যতক্ষণ না এটি একই দিক থেকে যায়)) তারপরে, অ্যারেটি হয়ে যায়:
[7, 10, 2, 3, 4]
এটি বাছাই করা হয়নি, তাই আমরা আবার ঘোরান।
[4, 7, 10, 2, 3]
এবং আবার:
[3, 4, 7, 10, 2]
এবং একটি চূড়ান্ত সময়:
[2, 3, 4, 7, 10]
এবং এটি সাজানো! সুতরাং অ্যারে [10, 2, 3, 4, 7]
ড্রিফোর্টেবল। এখানে স্পষ্টতার জন্য অ্যারের সমস্ত ঘূর্ণন রয়েছে:
[10, 2, 3, 4, 7]
[7, 10, 2, 3, 4]
[4, 7, 10, 2, 3]
[3, 4, 7, 10, 2]
[2, 3, 4, 7, 10]
অ্যারে বিবেচনা করুন [5, 3, 9, 2, 6, 7]
। এর আবর্তনগুলি দেখুন:
[5, 3, 9, 2, 6, 7]
[7, 5, 3, 9, 2, 6]
[6, 7, 5, 3, 9, 2]
[2, 6, 7, 5, 3, 9]
[9, 2, 6, 7, 5, 3]
[3, 9, 2, 6, 7, 5]
এই অ্যারেগুলির [5, 3, 9, 2, 6, 7]
কোনওটিই বাছাই করা হয় না , তাই অ্যারেটি ড্রিফোর্টযোগ্য নয়।
উদ্দেশ্য একটি প্রোগ্রাম / ক্রিয়াকলাপের ইনপুট হিসাবে পূর্ণসংখ্যার একটি অমানবিক অ্যারে / তালিকা দেওয়া, ইনপুটটিতে ড্রিফোর্ট বাস্তবায়ন করে এবং এটি আউটপুট দেয় বা যদি এটি চালিত না যায় তবে একটি মিথ্যা মান ( বা একটি ফাঁকা অ্যারে / তালিকা) আউটপুট দেয়। পূর্ণসংখ্যাগুলি আপনার ভাষা সর্বাধিক / মিনিটের সাথে আবদ্ধ থাকে তবে এটি সর্বাধিকের জন্য কমপক্ষে 255 এবং মিনিটের জন্য 0 হওয়া আবশ্যক।
আপনি বিল্ট-ইন বাছাই পদ্ধতিগুলি ব্যবহার করতে পারেন, তবে এমন বিল্ট-ইন নয় যা চ্যালেঞ্জ সমাধান করে।
এটি একটি কোড-গল্ফ , তাই বাইটে সংক্ষিপ্ততম প্রোগ্রাম।
পরীক্ষার মামলা
input => output
[1] => [1]
[5, 0, 5] => [0, 5, 5]
[3, 2, 1] => false
[0, 9, 3] => false
[1, 2, 3, 4] => [1, 2, 3, 4]
[4, 1, 2, 3] => [1, 2, 3, 4]
[0, 2, 0, 2] => false
[5, 3, 9, 2, 6, 7] => false
[0, 0, 0, 0, 0, 0, 0] => [0, 0, 0, 0, 0, 0, 0]
[75, 230, 30, 42, 50] => [30, 42, 50, 75, 230]
[255, 255, 200, 200, 203] => [200, 200, 203, 255, 255]
shiftsort
?
shift
অপারেশনের সাথে বিভ্রান্তি সৃষ্টি করতে পারে যা অ্যারের প্রথম উপাদানটিকে সরিয়ে দেয়।
sorted(l)
একটি সংক্ষিপ্ত সাবলিস্টl+l
।