Recentemente, tenho me entregado a alguma nostalgia na forma de Bookworm Deluxe:
Caso você nunca tenha visto isso antes, é um jogo de palavras em que o objetivo é conectar peças adjacentes para formar palavras. Para determinar se uma string é uma palavra válida, ela é comparada com seu dicionário interno, que é armazenado em um formato compactado com a seguinte aparência:
aa
2h
3ed
ing
s
2l
3iis
s
2rdvark
8s
4wolf
7ves
As regras para descompactar o dicionário são simples:
Leia o número no início da linha e copie esses caracteres desde o início da palavra anterior. (Se não houver número, copie o número de caracteres que você fez da última vez.)
Acrescente as seguintes letras à palavra.
Portanto, nossa primeira palavra é aa
, seguida por 2h
, que significa "copiar as duas primeiras letras de aa
e acrescentar h
", formando aah
. Então 3ed
se torna aahed
e, como a próxima linha não tem um número, copiamos três caracteres novamente para formar aahing
. Esse processo continua no restante do dicionário. As palavras resultantes da pequena entrada de amostra são:
aa
aah
aahed
aahing
aahs
aal
aaliis
aals
aardvark
aardvarks
aardwolf
aardwolves
Seu desafio é realizar essa descompactação no menor número de bytes possível.
Cada linha de entrada conterá zero ou mais dígitos 0-9
seguidos por uma ou mais letras minúsculas a-z
. Você pode receber e fornecer saída como uma lista de cadeias ou como uma única cadeia com palavras separadas por qualquer caractere que não seja 0-9
/ a-z
.
Aqui está outro pequeno caso de teste com alguns casos extremos não abordados no exemplo:
abc cba 1de fg hi 0jkl mno abcdefghijk 10l
=> abc cba cde cfg chi jkl mno abcdefghijk abcdefghijl
Você também pode testar seu código no dicionário completo: entrada , saída .
locate
programa usa esse tipo de codificação em nomes de caminho.
0
, terá0
s iniciais ?