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