도전
동사 인 인수를 가져 와서 동사의 과거 시제를 반환하는 함수를 작성하십시오. (동사가 규칙적이라고 가정)
과거 시제
참고 : y를 자음이나 모음으로 간주하지 마십시오.
일반적으로 ed 동사 끝 뒤에 하면 동사의 과거 시제가됩니다.
예 : jump→ jumped,ask→asked
그러나 다른 규칙이 있습니다.
주어진 동사의 마지막 문자 인 경우
e, 단지 추가d.예 :
love→loved,move→moved동사는 자음 +로 종료 된 경우
y, 다음 변경y을i하고, 추가ed.예 :
study→studied,cry→cried동사는 모음 +로 종료 된 경우에는
y, 그럼 그냥 추가ed.예 :
play→played,stay→stayed동사가 모음과 자음으로 끝나는 경우 자음을 한 번 더 쓰고
ed.예 :
stop→stopped,plan→planned그러나 동사가 여러 모음 + 자음 또는 단일 모음 + 여러 자음으로 끝나는 경우
ed.예 :
look→looked,jump→jumped
더 많은 규칙이 있지만 위의 규칙 만주의합시다. 예를 들어 위의 규칙에 따라visit →visitted .
우승자
이것은 코드 골프이기 때문에 지난 시제를 올바르게 반환하는 가장 짧은 코드가 승리합니다.
예 (JS, 127)
function f(x){return x.replace(/([^aeiouy])y$/,'$1i').replace(/([^aeiouy][aeiou])([^aeiouy])$/,'$1$2$2').replace(/e$/,'')+'ed'}