チャレンジ
動詞である引数を取り、動詞の過去形を返す関数を作成します。(動詞が規則的であると仮定します)
過去形
注: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'}