Herausforderung
Schreiben Sie eine Funktion, die ein Argument verwendet, das ein Verb ist, und die Vergangenheitsform des Verbs zurückgibt. (Angenommen, das Verb ist regulär)
Vergangenheitsform
Hinweis: Betrachten Sie y weder als Konsonanten noch als Vokale.
Normalerweise wird durch einfaches Hinzufügen ednach dem Ende des Verbs die Vergangenheitsform des Verbs erstellt.
Bsp .: jump→ jumped, ask→asked
Es gibt jedoch andere Regeln.
Wenn das letzte Zeichen des angegebenen Verbs ist
e, fügen Sie einfach hinzud.Bsp .:
love→loved,move→movedWenn das Verb mit einem Konsonanten + endet
y, ändern Sie esyzuiund fügen Sie es hinzued.Bsp .:
study→studied,cry→criedWenn das Verb jedoch mit einem Vokal + endet
y, fügen Sie einfach hinzued.Bsp .:
play→played,stay→stayedWenn ein Verb mit einem Vokal und einem Konsonanten endet, schreiben Sie den Konsonanten noch einmal und fügen Sie hinzu
ed.Bsp .:
stop→stopped,plan→plannedWenn ein Verb jedoch mit mehreren Vokalen + einem Konsonanten oder einem einzelnen Vokal + mehreren Konsonanten endet, fügen Sie einfach hinzu
ed.Bsp .:
look→looked,jump→jumped
Es gibt mehr Regeln, aber wir sollten uns nur um die Regeln kümmern. Zum Beispiel laut der obigen Regel visit→ visitted.
Gewinner
Da dies Codegolf ist, gewinnt der kürzeste Code, der die Vergangenheitsform korrekt zurückgibt.
Beispiel (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}