Un tracé de tige et de feuille affiche un groupe de valeurs numériques en groupes, qui sont déterminées par tous sauf le dernier chiffre. Par exemple, supposons que nous ayons cet ensemble de données:
0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101
Nous pourrions produire ce tracé de tige et de feuille:
0|02
1|23356
2|09
3|
4|39
5|
6|
7|
8|
9|
10|1
La tige de la première ligne est 0, donc ses "feuilles" - les chiffres après le |
- représentent les valeurs comprises entre 0 inclus et 10 exclus. Les feuilles sur chaque tige sont triées. Des tiges sans feuilles (comme 3) apparaissent toujours dans l'intrigue. La valeur de 101 se situe entre 100 inclus et 110 exclus, donc sa tige est 10 (100 divisé par 10).
Votre défi consiste à vérifier si un morceau de texte est un tracé de tige et de feuille valide. Un tracé valide satisfait ces règles:
- A exactement une ligne pour chaque tige (c.-à-d. Groupe de 10 larges) dans la plage des données (y compris les tiges au milieu de la plage sans feuilles)
- N'a pas de tiges en dehors de la plage
- Toutes les feuilles sont triées par ordre croissant vers la droite
- Toutes les tiges sont triées en ordre croissant
- N'a que des caractères numériques (en plus du séparateur
|
)
Vous n'êtes pas obligé de traiter des nombres qui ont des parties fractionnaires. Vous pouvez approuver ou rejeter des zéros non significatifs supplémentaires dans les tiges, mais une tige vide n'est pas autorisée. Il y aura au moins une valeur. Vous ne pouvez accepter que des espaces supplémentaires après les feuilles de chaque ligne. Vous pouvez supposer une nouvelle ligne de début et / ou de fin. Tous les caractères seront imprimables en ASCII.
Votre fonction ou programme doit retourner ou afficher (à l'écran ou la sortie standard) une valeur véridique pour un tracé valide, ou une valeur falsifiée pour un tracé invalide. Vous pouvez prendre l'entrée de l'entrée standard, d'un fichier, comme une grande chaîne, comme un tableau de chaînes - ce qui est le plus pratique.
Voici quelques cas de test qui sont des tracés valides (séparés par des lignes vides):
2|00003457
3|35
4|799
5|3
99|3
100|0556
101|
102|
103|8
0|0
Voici quelques cas de test qui sont des tracés invalides, avec des commentaires à droite:
|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
C'est le golf de code, donc le code le plus court gagne! Les failles standard ne sont pas autorisées.
4|;5|26;6|7
qui a la première tige en dehors de la plage, mais à la fin, c'est-à-dire 12|3;13|4559;14|
.
1|2|3
dedans.