Wyzwanie
Napisz funkcję, która pobiera argument, który jest czasownikiem, i zwraca czas przeszły czasownika. (Załóżmy, że czasownik jest regularny)
Czas przeszły
Uwaga: uważaj y za spółgłoskę ani samogłoskę.
Zwykle samo dodanie edpo zakończeniu czasownika powoduje, że czas przeszły jest czas przeszły.
Np .: jump→ jumped, ask→asked
Istnieją jednak inne zasady.
Jeśli ostatnim znakiem danego czasownika jest
e, po prostu dodajd.Np .:
love→loved,move→movedJeśli czasownik kończy się spółgłoską +
y, zmieńynaii dodajed.Np .:
study→studied,cry→criedJeśli jednak czasownik kończy się samogłoską +
y, po prostu dodajed.Np .:
play→played,stay→stayedJeśli czasownik kończy się samogłoską i spółgłoską, napisz spółgłoskę jeszcze raz i dodaj
ed.Np .:
stop→stopped,plan→plannedJeśli jednak czasownik kończy się wieloma samogłoskami + spółgłoską lub pojedynczą samogłoską + wieloma spółgłoskami, po prostu dodaj
ed.Np .:
look→looked,jump→jumped
Jest więcej zasad, ale uważajmy tylko nad nimi. Na przykład zgodnie z powyższą zasadą visit→ visitted.
Zwycięzca
Ponieważ jest to kod golfowy, wygrywa najkrótszy kod, który poprawnie zwraca czasy przeszłe.
Przykład (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}