Meydan okuma
Fiil olan bir argümanı alan ve fiilin geçmiş zamanını döndüren bir fonksiyon yazın. (Fiilin düzenli olduğunu varsayın)
Geçmiş zaman
Not: y'yi ünsüz ya da sesli harf olarak düşünmeyin.
Normalde, edfiilin bitiminden sonra eklemek , fiilin geçmiş zamanını yapar.
Örn: jump→ jumped, ask→asked
Ancak, başka kurallar da vardır.
Verilen fiilin son karakteri ise
eekleyind.Örn:
love→loved,move→movedFiil bir ünsüz + ile sona edilirse
y, o zaman değiştirmekyiçini, ve eklemeked.Örn:
study→studied,cry→criedAncak, fiil bir sesli harf + ile bitiyorsa
y, ekleyined.Örn:
play→played,stay→stayedBir fiil bir sesli harf ve ünsüzle sonlandırılırsa, ünsüz bir kez daha yazıp ekleyin
ed.Örn:
stop→stopped,plan→plannedBununla birlikte, bir fiil birden çok sesli harf + bir ünsüz veya tek sesli harf + çoklu ünsüzlerle sonlandırılırsa, ekleyin
ed.Örn:
look→looked,jump→jumped
Daha fazla kural var ama sadece yukarıdaki kurallara dikkat edelim. Örneğin, yukarıdaki kurala göre, visit→ visitted.
kazanan
Bu kod golf olduğundan, geçmiş zamanları doğru döndüren en kısa kod kazanır.
Örnek (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}