Sfida
Scrivi una funzione che accetta un argomento che è un verbo e restituisce il passato del verbo. (Supponiamo che il verbo sia regolare)
Tempo passato
Nota: considerare y né consonante né vocale.
Normalmente, l'aggiunta eddopo la fine del verbo rende il tempo passato del verbo.
Es: jump→ jumped, ask→asked
Tuttavia, ci sono altre regole.
Se l'ultimo carattere del verbo dato è
e, basta aggiungered.Es:
love→loved,move→movedSe il verbo termina con una consonante +
y, cambiayinie aggiungied.Es:
study→studied,cry→criedTuttavia, se il verbo termina con una vocale +
y, quindi basta aggiungereed.Es:
play→played,stay→stayedSe un verbo termina con una vocale e una consonante, allora scrivi la consonante ancora una volta e aggiungi
ed.Es:
stop→stopped,plan→plannedTuttavia, se un verbo termina con più vocali + una consonante o vocale singola + più consonanti, quindi aggiungi
ed.Es:
look→looked,jump→jumped
Ci sono più regole ma ci preoccupiamo solo delle regole sopra. Ad esempio, secondo la regola sopra, visit→ visitted.
Vincitore
Dato che si tratta di code golf, vince il codice più breve che restituisce correttamente i tempi passati.
Esempio (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}