Thử thách
Viết hàm lấy một đối số là động từ và trả về thì quá khứ của động từ. (Giả sử rằng động từ là thường xuyên)
Thì quá khứ
Lưu ý: coi y là phụ âm cũng không phải nguyên âm.
Thông thường, chỉ cần thêm ed
sau khi kết thúc động từ làm cho thì quá khứ của động từ.
Vd: jump
→ jumped
, ask
→asked
Tuy nhiên, có những quy tắc khác.
Nếu ký tự cuối cùng của động từ đã cho là
e
, chỉ cần thêmd
.Vd:
love
→loved
,move
→moved
Nếu động từ kết thúc bằng phụ âm +
y
, sau đó đổiy
thànhi
và thêmed
.Vd:
study
→studied
,cry
→cried
Tuy nhiên, nếu động từ kết thúc bằng nguyên âm +
y
, thì chỉ cần thêmed
.Vd:
play
→played
,stay
→stayed
Nếu một động từ được kết thúc bằng một nguyên âm và một phụ âm, sau đó viết phụ âm thêm một lần nữa và thêm
ed
.Vd:
stop
→stopped
,plan
→planned
Tuy nhiên, nếu một động từ được kết thúc bằng nhiều nguyên âm + một phụ âm hoặc nguyên âm đơn + nhiều phụ âm, thì chỉ cần thêm
ed
.Vd:
look
→looked
,jump
→jumped
Có nhiều quy tắc hơn nhưng chúng ta chỉ quan tâm đến các quy tắc. Ví dụ: theo quy tắc trên, visit
→ visitted
.
Người chiến thắng
Vì đây là mã golf, mã ngắn nhất trả về chính xác các thì quá khứ sẽ thắng.
Ví dụ (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}