我大声喊了几句话?


10

在《天际》中,玩家角色可以使用强大的魔法呼喊(Thu'ums)来达成目标。每个喊叫声都由三个词组成,但是,玩家可以使用前一个或两个词以更少的力量但在更短的冷却时间内达到相同的效果。

给定一个小写的ASCII Thu'um短语,不带标点或空格,则返回其中包含的幂词。

例:

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

输入将始终是小写的ASCII字符串,该字符串是通过以下声音之一选择的,从该声音中选择前1个,2个或3个单词,然后按顺序将这些单词串联在一起。

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

所以fusfusrofusrodah都是有效输入,但这fusroviir并不是因为它使用了来自混合喊叫的单词,rodah也不是因为它不是喊叫的前缀。您也不必处理空字符串输入。


以字节为单位的最短代码获胜。


1
我将给第一个在“ 龙骨歌”的每一行上运行此算法的人一个cookie (被plebs称为“天际主题”)
Cyoce

Answers:


17

视网膜,78 42 15 14字节

ul
xo
[aeiou]+

在线尝试

tiidkloul是唯一一个不具有与应该打印的数字相同的元音序列数量的单词。因此,我们需要匹配单词以为其赋予额外的元音序列。ou只会匹配tiidkl ou l,然后我们可以用oxo替换ou,从而创建额外的序列。

我最初的方法不是那么简单,而是围绕以下步骤进行的:删除所有辅音,然后删除一些元音序列(ai|ii|aa|...),最后计算字母的数量。但是,感谢@MartinBüttner的考虑[aeiou]+


为fusroviir返回3,该值明确列为无效输入。
atk 2013年

1
@atk我问OP他们是否将是无效的输入。答案是否定的。
andlrc

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
马丁·布特纳(MartinBüttner)出气了吗?每个人都进入您的掩体,结局就在附近!
Cyoce

4
@Cyoce没关系,我打了另一个答案三分之二。;)
Martin Ender

1

Perl 5,28个字节

字节数包括-p

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

直接从dev-null窃取。(感谢,开发人员为空!)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.