Ich habe mir kürzlich eine Nostalgie in Form von Bookworm Deluxe gegönnt:
Falls Sie es noch nicht gesehen haben, ist es ein Wortspiel, bei dem benachbarte Kacheln zu Wörtern verbunden werden sollen. Um festzustellen, ob ein String ein gültiges Wort ist, vergleicht er es mit seinem internen Wörterbuch, das in einem komprimierten Format gespeichert ist, das wie folgt aussieht:
aa
2h
3ed
ing
s
2l
3iis
s
2rdvark
8s
4wolf
7ves
Die Regeln zum Entpacken des Wörterbuchs sind einfach:
Lesen Sie die Nummer am Anfang der Zeile und kopieren Sie so viele Zeichen vom Anfang des vorherigen Wortes. (Wenn keine Nummer vorhanden ist, kopieren Sie so viele Zeichen wie beim letzten Mal.)
Fügen Sie die folgenden Buchstaben an das Wort an.
Also, unser erstes Wort ist aa
, gefolgt von 2h
, was bedeutet, dass sich "die ersten beiden Buchstaben kopieren aa
und anhängen h
" bilden aah
. Dann 3ed
wird aahed
, und da die nächste Zeile keine Nummer hat, kopieren wir 3 Zeichen erneut zu bilden aahing
. Dieser Vorgang wird im gesamten restlichen Wörterbuch fortgesetzt. Die resultierenden Wörter aus der kleinen Beispieleingabe sind:
aa
aah
aahed
aahing
aahs
aal
aaliis
aals
aardvark
aardvarks
aardwolf
aardwolves
Ihre Herausforderung besteht darin, dieses Entpacken in so wenigen Bytes wie möglich durchzuführen.
Jede Eingabezeile enthält keine oder mehrere Ziffern, 0-9
gefolgt von einem oder mehreren Kleinbuchstaben a-z
. Sie können die Eingabe und Ausgabe entweder als Liste von Zeichenfolgen oder als einzelne Zeichenfolge mit Wörtern, die durch andere Zeichen als 0-9
/ getrennt sind, vornehmen a-z
.
Hier ist ein weiterer kleiner Testfall mit einigen Randfällen, die im Beispiel nicht behandelt werden:
abc cba 1de fg hi 0jkl mno abcdefghijk 10l
=> abc cba cde cfg chi jkl mno abcdefghijk abcdefghijl
Sie können Ihren Code auch im gesamten Wörterbuch testen: Eingabe , Ausgabe .
locate
Programm verwendet diese Art der Codierung für Pfadnamen.
0
führenden0
s haben wird?