挑战
编写一个函数,该函数接受一个作为动词的自变量,并返回该动词的过去式。(假设动词是规则的)
过去式
注意:认为y既不是辅音也不是元音。
通常,仅ed
在动词结尾之后加一个即可使动词的过去时。
例如:jump
→ jumped
,ask
→asked
但是,还有其他规则。
如果给定动词的最后一个字符是
e
,只需加d
。例如:
love
→loved
,move
→moved
如果动词以辅音+结尾
y
,则y
改为i
,并加ed
。例如:
study
→studied
,cry
→cried
但是,如果动词以元音+结尾
y
,则只需添加即可ed
。例如:
play
→played
,stay
→stayed
如果动词以元音和辅音结尾,则再写一次辅音,然后添加
ed
。例如:
stop
→stopped
,plan
→planned
但是,如果一个动词以多个元音+一个辅音或一个元音+多个辅音结尾,则只需添加即可
ed
。例如:
look
→looked
,jump
→jumped
还有更多规则,但让我们只关注规则。例如,根据上述规则,visit
→ visitted
。
优胜者
由于这是代码高尔夫球,因此正确返回过去时态的最短代码将获胜。
范例(JS,127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}