Desafio
Escreva uma função que use um argumento que seja um verbo e retorne o tempo passado do verbo. (Suponha que o verbo seja regular)
Pretérito
Nota: considere y como nem consoante nem vogal.
Normalmente, apenas a adição ed
após o final do verbo torna o pretérito do verbo.
Ex: jump
→ jumped
, ask
→asked
No entanto, existem outras regras.
Se o último caractere do verbo fornecido for
e
, basta adicionard
.Ex:
love
→loved
,move
→moved
Se o verbo terminar com uma consoante +
y
, alterey
parai
e adicioneed
.Ex:
study
→studied
,cry
→cried
No entanto, se o verbo terminar com uma vogal +
y
, basta adicionared
.Ex:
play
→played
,stay
→stayed
Se um verbo terminar com uma vogal e uma consoante, escreva a consoante mais uma vez e adicione
ed
.Ex:
stop
→stopped
,plan
→planned
No entanto, se um verbo terminar com várias vogais + uma consoante ou vogal única + várias consoantes, basta adicionar
ed
.Ex:
look
→looked
,jump
→jumped
Existem mais regras, mas vamos cuidar apenas das regras. Por exemplo, de acordo com a regra acima, visit
→ visitted
.
Vencedora
Como esse é o código de golfe, o código mais curto que retorna corretamente os tempos passados vence.
Exemplo (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}