In Skyrim kann der Spielercharakter mächtige magische Rufe (Thu'ums) verwenden, um seine Ziele zu erreichen. Jeder Schrei besteht aus drei Wörtern. Der Spieler kann jedoch die ersten ein oder zwei Wörter verwenden, um den gleichen Effekt mit weniger Kraft, aber einer kürzeren Abklingzeit zu erzielen.
Geben Sie bei einer ASCII-Thu'um-Phrase in Kleinbuchstaben ohne Interpunktion oder Leerzeichen die Anzahl der darin enthaltenen Potenzwörter zurück .
Beispiel:
fusrodah -> 3
dur -> 1
kaandrem -> 2
odah -> 2
vengaarnos -> 3
Die Eingabe ist immer eine ASCII-Zeichenfolge in Kleinbuchstaben, die gebildet wird, indem einer der folgenden Shouts verwendet, die ersten 1, 2 oder 3 Wörter aus diesem Shout ausgewählt und die Wörter der Reihe nach verkettet werden.
dur neh viir
faas ru maar
feim zii gron
fo krah diin
fus ro dah
gaan lah haas
gol hah dov
hun kaal zoor
iiz slen nus
joor zah frul
kaan drem ov
krii lun aus
laas yah nir
lok vah koor
mid vur shaan
mul qah diiv
od ah viing
raan mir tah
rii vaaz zol
strun bah qo
su grah dun
tiid klo ul
ven gaar nos
wuld nah kest
yol toor shul
zul mey gut
zun haal viik
Also fus
, fusro
und fusrodah
sind alle gültigen Eingaben, aber fusroviir
nicht, weil es Wörter aus gemischten Schreien verwendet, und rodah
nicht, weil es kein Präfix eines Schreis ist. Sie müssen auch die Eingabe der leeren Zeichenfolge nicht verarbeiten.
Der kürzeste Code in Bytes gewinnt.
Antworten:
Retina,
78421514 BytesProbieren Sie es online aus
tiidkloul ist das einzige Wort, das nicht die gleiche Anzahl von Vokalsequenzen enthält wie die Nummer, die gedruckt werden soll. Daher müssen wir das Wort anpassen, um ihm eine zusätzliche Vokalsequenz zu geben.
ou
nur wird tiidkl entsprechen ou l , und wir können dann ersetzen ou mit Oxo , der die zusätzliche Sequenz erzeugt.Mein anfänglicher Ansatz war nicht so einfach, sondern bestand darin, alle Konsonanten zu entfernen, dann einige Vokalsequenzen (
ai|ii|aa|...
) zu entfernen und schließlich die Anzahl der Buchstaben zu zählen. Aber danke an @Martin Büttner für das Nachdenken[aeiou]+
.quelle
Netzhaut , 313 Bytes
Probieren Sie es online aus!
Basierend auf ein paar einfachen Beobachtungen:
Das heißt, wir können einfach zählen, wie viele Wörter in der Zeichenfolge ohne Überlappung erscheinen. Genau das macht ein Regex. Ich habe versucht, den regulären Ausdruck ein wenig zu komprimieren, ohne nur alle Wörter mit zu verketten
|
(das wären 351 Bytes), aber ich bin sicher, dass dies alles andere als optimal ist. Zunächst einmal habe ich definitiv nicht alle gängigen Teile optimal genutzt. Noch wichtiger ist jedoch, dass die Zeichenfolge noch weiter komprimiert werden kann, indem mehr Zeichenfolgen als gültige Wörter übereinstimmen, sofern diese nicht versehentlich mit einem Teil eines gültigen Wortes übereinstimmen (da sie dann einfach nie übereinstimmen). Ich bin mir ziemlich sicher, dass man die Komprimierung automatisieren müsste, um wirklich sicher zu sein, dass sie optimal ist.quelle
Perl 5, 28 Bytes
Die Byteanzahl enthält eine für
-p
.Direkt von dev-null gestohlen . (Danke, dev-null!)
quelle