У моего маленького ребенка есть такая игрушка:
Эта игрушка состоит из 10 складываемых маленьких ведер, которые мы будем насчитывать от 1 (самое маленькое) до 10 (самое большое). Иногда он делает маленькие груды, и игрушка заканчивается так:
Мы можем схематически изобразить груды так:
1 6
4 9 2 7
5 10 3 8
---------- <-- Floor
1 2 3 4 <-- Pile #
Или, говоря по-другому:
[[4,5],[9,10],[1,2,3],[6,7,8]]
Этот набор груд ведра легко переставляется для восстановления исходного набора (первое изображение), просто последовательно помещая груды меньших ведер в груды больших ведер:
1 1 6
2 2 7
1 6 3 6 3 8
4 9 2 7 4 9 7 4 9
5 10 3 8 5 10 8 5 10
---------- > [Pile 3 to 1] > ---------- > [Pile 4 to 2] > ---------- > [Pile 1 to 2] > Done!
1 2 3 4 1 2 3 4 1 2 3 4
Тем не менее, иногда мой ребенок пытается построить башни или выбрасывает ведра, и в итоге сваи становятся непоследовательными, и исходный набор невозможно восстановить, просто поместив одну кучу в другую. Примеры этого:
[[1,3,2],[4]] (the kid tried to build a tower by placing a bigger bucket
over a smaller one, we would need to reorder the buckets
first)
[[1,3,4],[2]] (the kid left aside an unordered bucket, we would need to remove
bucket #1 from pile #1 before restacking)
[[1,2,3],[5]] (the kid lost a bucket, we need to find it first)
Вызов
Получив список списков целых чисел, представляющих набор стопок, верните истинное значение, если списки представляют легко штабелируемый набор стопок, или false в любом другом случае.
- Входные данные будут представлены в виде списка целых чисел, представляющих сегменты сверху вниз для каждого стека.
- Там не будет пустых стартовых куч (вы не получите в
[[1,2,3],[],[4,5]]
качестве входных данных). - Общее количество сегментов может быть любым в пределах разумного целочисленного диапазона.
- У моего ребенка только один набор ведер, поэтому дублирующих элементов не будет.
- Вы можете выбрать любые два непротиворечивых (и связных) значения для истинности или ложности.
- Ведра будут помечены от # 1 до #N, будучи
N
самым большим целым числом в списках целых чисел. Мой ребенок до сих пор не знает понятия нуля. - Вы можете получать входные данные в любом разумном формате, если они представляют собой набор груд куч. Просто укажите это в своем ответе, если вы измените способ получения ввода.
- Это код-гольф , поэтому может выиграть самая короткая программа / функция для каждого языка!
Примеры
Input: [[4,5],[9,10],[1,2,3],[6,7,8]]
Output: Truthy
Input: [[6,7,8,9,10],[1],[2],[3,4,5],[11,12,13]]
Output: Truthy
Input: [[2,3,4],[1],[5,6,7]]
Output: Truthy
Input: [[1,2],[5,6],[7,8,9]]
Output: Falsey (buckets #3 and #4 are missing)
Input: [[2,3,4],[5,6,7]]
Output: Falsey (bucket #1 is missing)
Input: [[1,3,4],[5,7],[2,6]]
Output: Falsey (non-restackable piles)
Input: [[1,4,3],[2],[5,6]]
Output: Falsey (one of the piles is a tower)