Driftsort - це простий спосіб "сортувати" масив. Він працює шляхом "ковзання" або "обертання" елементів в масиві, поки масив не буде відсортований або поки масив не вдасться сортувати.
Давайте пройдемо два приклади. Спочатку розглянемо масив [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]
не є дрейфуючим.
Завдання З огляду на непорожній масив / список цілих чисел як вхід до програми / функції, впроваджуйте driftsort на вхід і виводьте його, або виведіть значення фальси ( або порожній масив / список), якщо його неможливо перенести. Цілі числа пов'язані з вашими мовами max / min, але це має бути принаймні 255 для max та 0 для min.
Ви можете використовувати вбудовані методи сортування, але не вбудований, який вирішує проблему.
Це код-гольф , тому найкоротша програма в байтах.
Тестові справи
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
.