Пересекающиеся последовательности
Если задан список натуральных чисел 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]
не является пересекающейся последовательностью; нет способа разложить его на возрастающую и убывающую подпоследовательность.
Ваша задача - написать программу / функцию, принимающую в качестве входных данных список натуральных чисел; и если это пересекающаяся последовательность, вернуть два списка в одном из его разложений; или некоторое непротиворечивое значение "falsey", если список не является пересекающейся последовательностью.
Это код-гольф ; самая короткая программа / функция на каждом языке является победителем.
Правила:
- Ввод гибкий.
- Обычные лазейки запрещены.
- Если существует несколько допустимых способов разложить входные данные, вы можете вывести один или все из них.
- Форматирование вывода для декомпозиции является гибким; но оно должно быть однозначным в отношении различия между двумя подпоследовательностями.
- Вы можете использовать любое непротиворечивое выходное значение, чтобы указать, что ввод не является последовательностью пересечения; пока это однозначно по сравнению с выходом для любой последовательности пересечения. Вы должны указать значение Falsey в своем ответе.
Тестовые случаи:
Использование 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]
. Текущие тестовые случаи позволяют вам избегать >=
/ <
, когда это действительно должно быть >=
/ <=
.