私は何語の力を叫びましたか?


10

Skyrimでは、プレイヤーキャラクターは強力な魔法の叫び(Thu'ums)を使用して目標を達成できます。すべての叫びは3つの単語で構成されますが、プレーヤーは最初の1つまたは2つの単語を使用して、より少ないパワーでより短いクールダウンで同じ効果を達成できます。

句読点やスペースを含まない小文字のASCII Thu'um句指定すると、それに含まれる力の単語数を返します。

例:

fusrodah   -> 3
dur        -> 1
kaandrem   -> 2
odah       -> 2
vengaarnos -> 3

入力は常に、以下の叫びの1つを取り、その叫びから最初の1、2、または3語を選択し、単語を順番に連結することによって形成される小文字のASCII文字列になります。

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

ですからfusfusro、およびfusrodahすべての有効な入力がありますが、fusroviirそれは混合叫び声から単語を使用し、ためではないrodah、それは叫びの接頭辞ではありませんので、ではありません。空の文字列入力を処理する必要もありません。


バイト単位の最短コードが優先されます。


1
ドラゴンボーンの(plebsによる「skyrimテーマ」として知られている)の各行でこのアルゴリズムを最初に実行する人にCookieを提供します
Cyoce

回答:


17

Retina、78 42 15 14バイト

ul
xo
[aeiou]+

オンラインでお試しください

tiidkloulは、印刷されるはずの数と同じ量の母音シーケンスを持たない唯一の単語です。したがって、単語を一致させて、母音のシーケンスを追加する必要があります。outiidkl ou lにのみ一致し、ouoxoに置き換えることで追加のシーケンスを作成できます。

私の最初のアプローチはこれほど単純ではありませんでしたが、すべての子音を削除し、次にいくつかの母音シーケンス(ai|ii|aa|...)を削除し、最後に文字数を数えるように構築されました。しかし、代わりに考えてくれた@MartinBüttnerに感謝し[aeiou]+ます。


無効な入力として明示的にリストされたfusroviirに対して3を返します。
攻撃

1
@atk無効な入力になるかどうかOPに尋ねました。答えはノーでした。
andlrc 2016

1

網膜、313バイト

ah|aus|bah|d(ah|ii[nv]|ov|rem|u[nr])|[fhl]aas|f(eim|o|rul|us)|g(aa[nr]|ol|rah|ron|ut)|haal|hah|hun|iiz|joor|k(aa[ln]|est|lo|oor|rah|rii)|lah|lok|lun|m(aar|ey|i[dr]|ul)|n[ae]h|nir|n[ou]s|od|ov|qah|qo|r(aan|ii|o|u)|s(haan|hul|len|trun|u)|tah|tiid|toor|ul|v(aaz|ah|en|iin?[gkr]|ur)|wuld|yah|yol|z(ah|ii|[ou][ln]|oor)

オンラインでお試しください!

いくつかの簡単な観察に基づいて:

  • 位置に関係なく、すべての単語は一意です。
  • どの単語も別の単語の接頭辞ではありません。
  • 入力は有効であることが保証されています。

つまり、文字列に重複することなく出現する単語の数を数えるだけです。それがまさに正規表現です。私はすべての単語を連結するだけで正規表現を少し圧縮しようとしましたが|(351バイトになります)、これは最適とはほど遠いものです。まず、私はすべての一般的な部分を最適に活用しているわけではありません。しかし、より重要なのは、有効な単語の一部と誤って一致しない限り(一致しないため)、有効な単語よりも多くの文字列を一致させることで、文字列をさらに圧縮することが可能です。圧縮を自動化して最適であることを確認する必要があると私は確信しています。


2
マーティン・ビュトナーは外に出ましたか?誰もがあなたのバンカーに乗り込む、終わりは近い!
Cyoce 2016

4
@Cyoceそれは大丈夫です、私は他の答えから3分の2をゴルフしました。;)
マーティンエンダー2016

1

Perl 5、28バイト

バイト数にはの1が含まれ-pます。

s/ou/oxo/;$_=()=/[aeiou]+/g

dev-nullから直接盗まれた。(ありがとう、dev-null!)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.