Un diagramma a gambo e foglia mostra un gruppo di valori numerici in gruppi, che sono determinati da tutti tranne l'ultima cifra. Ad esempio, supponiamo di avere questo set di dati:
0, 2, 12, 13, 13, 15, 16, 20, 29, 43, 49, 101
Potremmo produrre questo diagramma a gambo e foglia:
0|02
1|23356
2|09
3|
4|39
5|
6|
7|
8|
9|
10|1
La radice della prima riga è 0, quindi le sue "foglie" - le cifre dopo la |
- rappresentano i valori compresi tra 0 inclusi e 10 esclusivi. Le foglie su ogni gambo sono ordinate. Gli steli senza foglie (come 3) appaiono ancora nella trama. Il valore di 101 è compreso tra 100 inclusi e 110 esclusivi, quindi la sua radice è 10 (100 divisa per 10).
La tua sfida è verificare se un pezzo di testo è una trama di gambo e foglia valida. Una trama valida soddisfa queste regole:
- Ha esattamente una riga per ogni gambo (vale a dire gruppo largo 10) nell'intervallo dei dati (compresi gli steli nel mezzo dell'intervallo senza foglie)
- Non ha steli al di fuori della gamma
- Tutte le foglie sono ordinate in ordine crescente verso destra
- Tutti gli steli sono ordinati in ordine crescente
- Ha solo caratteri numerici (oltre al separatore
|
)
Non devi avere a che fare con numeri che hanno parti frazionarie. È possibile approvare o rifiutare zeri iniziali aggiuntivi negli steli, ma non è consentito uno stelo vuoto. Ci sarà almeno un valore. Puoi assumere spazi extra solo dopo le foglie su ogni riga. Puoi assumere una nuova riga iniziale e / o finale. Tutti i caratteri saranno ASCII stampabili.
La tua funzione o programma dovrebbe restituire o produrre (sullo schermo o sullo standard output) un valore di verità per un diagramma valido o un valore di falsa per un diagramma non valido. Puoi prendere l'input dall'input standard, da un file, come una stringa grande, come una matrice di stringhe - qualunque cosa sia più conveniente.
Ecco alcuni casi di test che sono grafici validi (separati da righe vuote):
2|00003457
3|35
4|799
5|3
99|3
100|0556
101|
102|
103|8
0|0
Ecco alcuni casi di test che sono grafici non validi, con commenti a destra:
|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
Questo è il codice golf, quindi vince il codice più corto! Le scappatoie standard non sono ammesse.
4|;5|26;6|7
che ha il primo gambo fuori dall'intervallo, ma invece alla fine, vale a dire 12|3;13|4559;14|
.
1|2|3
.