Recientemente me he dado un poco de nostalgia en forma de Bookworm Deluxe:
En caso de que no lo hayas visto antes, es un juego de palabras donde el objetivo es conectar fichas adyacentes para formar palabras. Para determinar si una cadena es una palabra válida, la compara con su diccionario interno, que se almacena en un formato comprimido que se ve así:
aa
2h
3ed
ing
s
2l
3iis
s
2rdvark
8s
4wolf
7ves
Las reglas para desempacar el diccionario son simples:
Lea el número al comienzo de la línea y copie esa cantidad de caracteres desde el comienzo de la palabra anterior. (Si no hay un número, copie tantos caracteres como lo hizo la última vez).
Agregue las siguientes letras a la palabra.
Entonces, nuestra primera palabra es aa
, seguida de 2h
, que significa "copiar las dos primeras letras de aa
y agregar h
", formando aah
. Luego se 3ed
convierte aahed
, y como la siguiente línea no tiene un número, copiamos 3 caracteres nuevamente para formar aahing
. Este proceso continúa durante el resto del diccionario. Las palabras resultantes de la entrada de muestra pequeña son:
aa
aah
aahed
aahing
aahs
aal
aaliis
aals
aardvark
aardvarks
aardwolf
aardwolves
Su desafío es realizar este desempaquetado en la menor cantidad de bytes posible.
Cada línea de entrada contendrá cero o más dígitos 0-9
seguidos de una o más letras minúsculas a-z
. Puede tomar entrada y dar salida como una lista de cadenas o como una sola cadena con palabras separadas por cualquier carácter que no sea 0-9
/ a-z
.
Aquí hay otro pequeño caso de prueba con algunos casos extremos no cubiertos en el ejemplo:
abc cba 1de fg hi 0jkl mno abcdefghijk 10l
=> abc cba cde cfg chi jkl mno abcdefghijk abcdefghijl
También puede probar su código en el diccionario completo: entrada , salida .
locate
programa usa este tipo de codificación en los nombres de ruta.
0
tendrá0
s iniciales ?