Un diagrama de tallo y hoja muestra un grupo de valores numéricos en grupos, que están determinados por todos menos el último dígito. Por ejemplo, supongamos que tenemos este conjunto de datos:
0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101
Podríamos producir este diagrama de tallo y hoja:
0|02
1|23356
2|09
3|
4|39
5|
6|
7|
8|
9|
10|1
El tallo de la primera fila es 0, por lo que sus "hojas", los dígitos después de la |
, representan los valores entre 0 inclusive y 10 exclusivos. Las hojas de cada tallo están ordenadas. Los tallos sin hojas (como 3) todavía aparecen en la trama. El valor de 101 está entre 100 inclusivos y 110 exclusivos, por lo que su raíz es 10 (100 dividido por 10).
Su desafío es verificar si un texto es un diagrama válido de tallo y hoja. Una trama válida satisface estas reglas:
- Tiene exactamente una fila para cada tallo (es decir, un grupo de 10) en el rango de los datos (incluidos los tallos en el medio del rango sin hojas)
- No tiene tallos fuera del rango
- Todas las hojas se ordenan ascendiendo a la derecha.
- Todos los tallos están ordenados ascendiendo
- Tiene solo caracteres numéricos (además del separador
|
)
No tiene que lidiar con números que tienen partes fraccionarias. Puede aprobar o rechazar ceros iniciales adicionales en los tallos, pero no se permite un tallo en blanco. Habrá al menos un valor. Solo puede asumir espacios adicionales después de las hojas en cada fila. Puede asumir una nueva línea inicial o final. Todos los personajes serán ASCII imprimibles.
Su función o programa debe devolver o generar (en la pantalla o la salida estándar) un valor verdadero para un gráfico válido, o un valor falso para un gráfico no válido. Puede tomar la entrada de la entrada estándar, de un archivo, como una gran cadena, como una matriz de cadenas, lo que sea más conveniente.
Aquí hay algunos casos de prueba que son gráficos válidos (separados por líneas en blanco):
2|00003457
3|35
4|799
5|3
99|3
100|0556
101|
102|
103|8
0|0
Aquí hay algunos casos de prueba que son gráficos no válidos, con comentarios a la derecha:
|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
Este es el código de golf, por lo que gana el código más corto. Las lagunas estándar no están permitidas.
4|;5|26;6|7
que tiene el primer vástago fuera del rango, pero al final, es decir 12|3;13|4559;14|
.
1|2|3
esta.