텍스트 문자열로 단어를 구분하여 하이픈으로 분리하는 프로그램을 작성해야합니다. 그것은 많은 작업이 될 것입니다. 따라서 완벽한 알고리즘에 필요한 발음 표를 원하지 않기 때문에 일부 부분을 건너 뛰고 싶습니다. 또한이 과제에 대한 복수로서 가능한 짧게 (따라서 읽을 수없고 유지 보수 할 수없는) 것으로 만들고자합니다.
두 가지 선택이 있습니다.
- STDIN에서 문자열을 가져 와서 결과를 STDOUT으로 출력하는 프로그램을 작성하십시오.
- 문자열을 단일 매개 변수로 사용하고 결과를 리턴하는 함수를 작성하십시오.
사양
- 이 경우 string은 선택한 언어 (바이트 배열, 문자 배열, 문자열 ...)로 된 문자열과 유사한 구문을 의미합니다.
- 모음은
a, e, i, o, u
- 주어진 문자열은
1 <= n <= 10
단어를 포함하는데, 여기서 각각의1 - 30
문자 사이에는 길이가 포함됩니다. 출력은 하이픈으로 묶어야합니다. - 모든 문자는 소문자이며 단어는 항상 공백으로 구분됩니다. 따라서 입력은 문자로 구성됩니다
[a-z ]
- 중요한 순서대로 규칙을 적용하십시오.
- 단어를 나누면 단어의 오른쪽 절반부터 다시 시작하십시오.
중요도 에 따른 음절 규칙
두 개의 연속 된 동일한 모음은 하나로 계산됩니다 (즉 feet
, 하나의 모음 만 beat
있고 finding
두 개가 있음). 모든 음절에는 정확히 하나의 모음이 있으므로 각 모음마다 하나의 음절이 있습니다.
- 경우 전체 단어가 네 개의 문자를 가지고, 그것은 변하지 돌아갑니다. (이 단어의 나머지 부분을 위해 이것을 건너 뛰십시오)
- 단어에 모음이 하나만 있으면 변경되지 않은 단어를 반환하십시오.
- 단어에 두 개의 연속 모음이있는 경우 두 모음을 나눕니다 (예 :
diaspora
->di-as-po-ra
). - 두 개 이상의 자음이 두 모음 (동일하거나 다른) 사이에있을 때
sis-ter
, 자음 부분이 아닌 경우 첫 번째 자음 (즉ck
,)으로 나눕니다. (예 :nickel
->nick-el
) y
두 모음 사이에 a 가 오면 그 단어 뒤에 단어를 나눕니다 (예 :paying
->pay-ing
).- 하나 개의 자음은 자음 전에 두 (동일하거나 서로 다른) 모음, 분할 사이에 올 때 (예.
dra-gon
) - 나눌 수 없다면 단어를 바꾸지 마십시오.
이 규칙은 문제없이 재귀 적으로 적용 할 수 있고 발음 표가 필요하지 않기 때문에 선택했습니다. 따라서 그것들은 정확하지 않으며, 예를 들어 규칙 # 5는 종종 정확하지 않습니다. 그러나 일반적인 경우입니다.
예
In: hello world
Out: hel-lo world
In: have a nice day
Out: have a nice day
In: pour some nickel and xenon there
Out: pour some nick-el and xe-non the-re
lua
x-e-non
합니까? 규칙 # 4에 대한 참조?