Перехресні послідовності
Давши список натуральних чисел A, назвіть це послідовністю, що збільшується, якщо кожен елемент більший або рівний попередньому; і називати його зменшувальною послідовністю, якщо кожен елемент менший або рівний попередньому.
Деякі зростаючі послідовності:
[1,2,4,7]
[3,4,4,5]
[2,2,2]
[]
Деякі спадні послідовності:
[7,4,2,1]
[5,4,4,3]
[2,2,2]
[]
Послідовність схрещування - це список, який може бути розбитий на дві непоєднувані послідовності, одна - послідовність, що збільшується, а друга - послідовність, що зменшується.
Наприклад, список:
[3,5,2,4,1]
є послідовністю схрещування, оскільки її можна розкласти на:
[3, 4 ]
[ 5,2, 1]
де [3,4]зростаюча підпорядкованість і [5,2,1]спадаюча підпорядкованість. Ми назвемо таку пару (збільшуючи, зменшуючи) підрядів декомпозицією послідовності схрещування.
Список:
[4,5,2,1,3]
не є послідовністю схрещування; немає способу розкласти його на зростаючу та зменшувальну послідовність.
Ваше завдання - написати програму / функцію, взявши за вхід список натуральних чисел; і якщо це послідовність схрещування, поверніть два списки в одному з його розкладу; або якесь послідовне значення "фальси", якщо список не є послідовністю схрещування.
Це код-гольф ; найкоротша програма / функція кожної мови є переможцем.
Правила:
- Введення гнучко.
- Звичайні лазівки заборонені.
- Якщо існує кілька дійсних способів розкласти вхід, ви можете вивести один або всі з них.
- Форматування виводу для розкладання є гнучким; але це має бути однозначним щодо розрізнення двох підрядів.
- Ви можете використовувати будь-яке послідовне вихідне значення, щоб вказати, що вхід не є пересічною послідовністю; до тих пір, поки це однозначно порівняно з результатами для будь-якої послідовності схрещування. Ви повинні вказати значення фальси у своїй відповіді.
Випробування:
Використання Falseдля позначення непересічних послідовностей:
[3, 5, 2, 4, 1] => [3, 4], [5, 2, 1]
[3, 5, 2, 4, 4, 1, 1] => [3, 4, 4], [5, 2, 1, 1]
[7, 9, 8, 8, 6, 11] => [7, 8, 8, 11], [9, 6]
[7, 9, 8, 8, 6, 11] => [7, 9, 11], [8, 8, 6] # also valid
[7, 9, 8, 8, 6, 11] => [7, 8, 11], [9, 8, 6] # also valid
[7, 8, 9, 10, 20, 30] => [7, 8, 9, 20, 30], [10]
[7, 8, 9, 10, 20, 30] => [8, 9, 10, 20, 30], [7] # this is also valid
[5, 5, 5] => [5, 5, 5], []
[4, 5, 2, 1, 3] => False
[3, 4, 3, 4, 5, 2, 4] => False
[3, 5, 2, 4, 4, 1, 1]. Поточні тестові випадки дозволяють вам уникнути >=/ <, коли це дійсно має бути >=/ <=.