Як комп'ютерні працівники, ви, напевно, всі знайомі з основними списками операцій pop та push . Це прості операції, які змінюють список елементів. Однак ви коли-небудь чули про операцію флоп ? (як у фліп- флопі )? Це досить просто. Давши число n , переверніть перші n елементів списку. Ось приклад:
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> a.flop(4)
[4, 3, 2, 1, 5, 6, 7, 8, 9, 10]
Найзручніша річ операції на флопі - це те, що ви можете використовувати її, щоб зробити кілька цікавих речей до списку, наприклад сортування . Ми будемо робити щось подібне з флопами:
Дано список цілих чисел "Сусід". Іншими словами, сортуйте його так, щоб кожен повторюваний елемент відображався послідовно.
Це можна зробити флопами! Наприклад, візьміть такий список:
>>> a = [3, 2, 1, 4, 3, 3, 2]
>>> a.flop(4)
[4, 1, 2, 3, 3, 3, 2]
>>> a.flop(3)
[2, 1, 4, 3, 3, 3, 2]
>>> a.flop(6)
[3, 3, 3, 4, 1, 2, 2]
Це призводить нас до визначення сьогоднішнього виклику:
Враховуючи список цілих чисел, виведіть будь-який набір флопів, що призведе до спільного списку.
Використовуючи останній список як приклад, слід вивести:
4
3
6
оскільки пропуск списку на 4, потім на 3, потім на 6 призведе до суміжного списку. Майте на увазі, що вам не потрібно друкувати найкоротший можливий список флопів, які сусіди списку. Якщо ви надрукували:
4
4
4
3
1
1
6
2
2
натомість це все одно буде дійсним результатом. Однак ви можете ніколи не виводити число, яке перевищує довжину списку. Це тому, що для списку a = [1, 2, 3]
дзвінки a.flop(4)
є безглуздими.
Ось кілька прикладів:
#Input:
[2, 6, 0, 3, 1, 5, 5, 0, 5, 1]
#Output
[3, 7, 8, 6, 9]
#Input
[1, 2]
#Output
<any list of integers under 3, including an empty list>
#Input
[2, 6, 0, 2, 1, 4, 5, 1, 3, 2, 1, 5, 6, 4, 4, 1, 4, 6, 6, 0]
#Output
[3, 19, 17, 7, 2, 4, 11, 15, 2, 7, 13, 4, 14, 2]
#Input
[1, 1, 1, 1, 2, 2, 2, -1, 4]
#Output
[]
#Input
[4, 4, 8, 8, 15, 16, 16, 23, 23, 42, 42, 15]
#Output
[12, 7]
Майте на увазі, що в кожному з цих прикладів поданий результат є лише одним потенційним дійсним результатом. Як я вже говорив раніше, будь-який набір флопів, який сусідить даному списку, є дійсним результатом . Ви можете використовувати цей скрипт python, щоб перевірити, чи правильно сусідає даний список флопів.
Ви можете приймати введення та вихід у будь-якому розумному форматі. Наприклад, аргументи функції / значення повернення, STDIN / STDOUT, читання / запис файлу тощо є дійсними. Як завжди, це код-гольф , тому зробіть найкоротшу програму, яку ви можете, і отримайте задоволення! :)