Di recente mi sono lasciato andare a un po 'di nostalgia sotto forma di Bookworm Deluxe:
Nel caso in cui non l'avessi mai visto prima, è un gioco di parole in cui l'obiettivo è quello di collegare tessere adiacenti per formare parole. Per determinare se una stringa è una parola valida, la verifica rispetto al suo dizionario interno, che è memorizzato in un formato compresso che assomiglia a questo:
aa
2h
3ed
ing
s
2l
3iis
s
2rdvark
8s
4wolf
7ves
Le regole per decomprimere il dizionario sono semplici:
Leggi il numero all'inizio della riga e copia quel numero di caratteri dall'inizio della parola precedente. (Se non ci sono numeri, copia quanti più caratteri hai fatto l'ultima volta.)
Aggiungi le seguenti lettere alla parola.
Quindi, la nostra prima parola è aa
, seguita da 2h
, che significa "copia le prime due lettere di aa
e append h
", formando aah
. Quindi 3ed
diventa aahed
, e poiché la riga successiva non ha un numero, copiamo nuovamente 3 caratteri nel modulo aahing
. Questo processo continua per tutto il resto del dizionario. Le parole risultanti dal piccolo input di esempio sono:
aa
aah
aahed
aahing
aahs
aal
aaliis
aals
aardvark
aardvarks
aardwolf
aardwolves
La tua sfida è eseguire questo spacchettamento nel minor numero di byte possibile.
Ogni riga di input conterrà zero o più cifre 0-9
seguite da una o più lettere minuscole a-z
. Puoi prendere input e dare output come un elenco di stringhe o come singola stringa con parole separate da qualsiasi carattere diverso da 0-9
/ a-z
.
Ecco un altro piccolo caso di test con alcuni casi limite non trattati nell'esempio:
abc cba 1de fg hi 0jkl mno abcdefghijk 10l
=> abc cba cde cfg chi jkl mno abcdefghijk abcdefghijl
Puoi anche testare il tuo codice sul dizionario completo: input , output .
locate
programma utilizza questo tipo di codifica sui nomi dei percorsi.
0
avrà i primi0
s?