Графік стебла та листя відображає купу числових значень у групах, які визначаються усіма, крім останньої цифри. Наприклад, припустимо, у нас є такий набір даних:
0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101
Ми могли б створити цю ділянку стебла та листя:
0|02
1|23356
2|09
3|
4|39
5|
6|
7|
8|
9|
10|1
Стебло першого ряду дорівнює 0, тому його "листя" - цифри після |
- представляють значення від 0 включно до 10 виключних. Листя на кожному стеблі сортують. Стебла без листя (як 3) все ще з’являються у сюжеті. Значення 101 становить від 100 включно до 110 ексклюзивних, тому його стебло становить 10 (100 ділиться на 10).
Ваше завдання полягає в тому, щоб перевірити, чи фрагмент тексту є дійсним сюжетом стебла та листя. Дійсний сюжет відповідає цим правилам:
- Має рівно один ряд для кожного стебла (тобто 10-ти широку групу) в діапазоні даних (включаючи стебла в середині діапазону без листя)
- Не має стебел поза ареалом
- Усі листя відсортовані вгору праворуч
- Всі стебла відсортовані вгору вниз
- Має лише числові символи (крім роздільника
|
)
Вам не доведеться мати справу з числами, які мають дробові частини. Ви можете схвалити або відхилити додаткові провідні нулі в стеблах, але пустий стебло заборонено. Буде хоча б одне значення. Ви можете мати додаткові пробіли лише після листя на кожному ряду. Ви можете взяти на себе провідну та / або зворотну нову лінію. Усі символи будуть друковані ASCII.
Ваша функція або програма повинна повертати або виводити (на екран або стандартний висновок) триєдине значення для дійсного ділянки або хибне значення для недійсного ділянки. Ви можете брати вклад із стандартного вводу, з файлу, як один великий рядок, як масив рядків - все, що найзручніше.
Ось кілька тестових випадків, які є дійсними графіками (розділеними порожніми рядками):
2|00003457
3|35
4|799
5|3
99|3
100|0556
101|
102|
103|8
0|0
Ось кілька тестових випадків, які є недійсними сюжетами, з коментарем праворуч:
|0 Blank stem
5|347 Missing a stem (6) in the range
7|9
4| Has a stem (4) outside the range
5|26
6|7
11|432 Leaves aren't sorted correctly
12|9989
5|357 Stems aren't sorted correctly
4|002
6|1
4|5 Duplicate stem
4|6
4|6
5|1
51114 No stem and leaf separator
609
1|2|03 Multiple separators
2|779|
4|8abcdefg9 Invalid characters
5|1,2,3
75 | 4 6 Invalid characters (spaces)
76 | 2 8 8 9
Це кодовий гольф, тому найкоротший код виграє! Стандартні лазівки заборонені.
4|;5|26;6|7
який має перший стебло за межами діапазону, але замість цього в кінці, тобто 12|3;13|4559;14|
.
1|2|3
.