어, 하이쿠인가요?


19

따라서 하이쿠를 만들고 싶지만 하이쿠의 음절 규칙을 따르는 지 확실하지 않습니다.

평소처럼 적절한 블러를 작성하는 데 어려움을 겪지 않았 으므로이 작업을 수행해야합니다. 갇 히자

야생에서 하이쿠를 찾는 중

이 도전의 목적을 위해, 우리는 주어진 시가 다음 기준을 충족시키는 지 확인합니다 :

  • 세 줄이 있습니다.
  • 첫 번째 줄에는 5 음절이 있습니다.
  • 두 번째 줄에는 7 음절이 있습니다.
  • 세 번째 줄에는 5 음절이 있습니다.

각 줄은 공백 그룹으로 구분 된 하나 이상의 단어로 구성됩니다. 이 단어가 반드시 유효한 영어 단어는 아닙니다.

각 단어는 음절로 분리 된 다음 해당 음절을 계산하여 줄의 총 음절 수를 계산합니다.

음절에는 시작 부분, 끝 부분, 중간 부분 등 두 부분 또는 세 부분이 있습니다. 각 부분은 하나 (또는 자음 클러스터라고도 같은 consonsants의 그룹 s, sk또는 spl) 또는 모음의 그룹 (예를 들면 i, ea또는 oui).

시작이 자음 그룹 인 경우 중간은 모음 그룹이되고 끝은 자음 그룹이됩니다. 시작이 모음 그룹이면 끝은 자음 그룹이되고 중간은 없습니다.

예를 들어, 단어는 example세 음절들로 구성되어 ex, am하고 ple. ple단어 끝까지 짧아 졌기 때문에 끝이 없습니다.

또 다른 예를 들어, 단어 syllable도 세 음절을 가지고 syll, abl그리고 e또한 어떤 결말을 갖지 않는.

마지막 예를 들어, 단어 word에는 음절 한 개가 있으며이 단어 는 word자음 그룹으로 끝납니다.

도전

문자열, 문자열 목록, 목록 목록 또는 최소한 한 줄 이상의시를 나타내는 기타 합리적인 형식이 주어지면 위에서 설명한 하이쿠의 기준을 충족하는지 확인하고 결과를 반환하십시오.

다음 형식 중 하나로 결과를 반환 할 수 있습니다.

  • 시가 하이쿠이고 허위 인 경우 진실한 가치.
  • 시가 haiku이면 틀린 값이고 그렇지 않으면 틀린 값입니다.
  • 시가 haiku 인 경우 제출에 지정된 유한 값 범위의 값과 제출에 지정된 상호 배타적 인 유한 값 범위의 값입니다.

또한이시에는 알파벳이 아닌 문자가 포함되어 있지 않다고 가정 할 수 있지만 그 시가 완전히 대문자 또는 소문자라고 가정 할 수는 없습니다.

이 도전의 목적을 위해 Y모음입니다.

테스트 사례

Truthy

This is a haiku
Yes it truly is one
See what I did man

I am so tired
of writing this already
when can I stop this

Writing another
Of these horrific things
Come on please

Consonant only
Counts as one syllable
ghjk tgh knmb wrts vbc

거짓

oh boy writing non haiku is so much easier

This is
so good
on my
poor dear brain

The syllables do not match
at least I do not think so
I have not checked

It does not really matter
these test cases will help
At least I think they will

I am done here
This is enough
Goodbye

채점

이것이 이기 때문에
가장 짧은 대답은
당신에게 행운을 빕니다



답변:


4

젤리 ,  25  23 바이트

-2 Outgolfer Erik 덕분에 (행 목록을 입력으로 사용)

e€Øy0;ŒgP€
ḲLÐfÇ€ḣ8µ€ḣ4

문자 목록 (행) 목록을 가져와 0과 1 목록 목록을 리턴하는 모나드 링크. 유효한 하이쿠의 길이는 3이며 단일 0 인 가장 깊은 목록 중 하나가 단일 목록으로 바뀌면 병합 된 목록의 합은 각각 5, 7, 5가됩니다. 문자의 연속 이 자음인지, 그리고 최대 4 줄의 각 8 개의 단어 만 취하는 것의 형성 은 유효하고 유효하지 않은 범위 각각의 유한 한 것을 보장합니다.

온라인으로 사용해보십시오! 또는 (더 혼란스러운) 테스트 스위트를 참조하십시오


 32  30 바이트 버전 을 사용하는 것이 훨씬 쉽고 간단하게 1 또는 0을 출력합니다.

e€Øy0;ŒgP€SȯL$
ḲLÐfÇ€Sµ€⁼5,7,5

이것을 시도 하거나 테스트 스위트를보십시오 .


나는 Haiku가 아닌 가능성의 "범위"가 유한하다고 생각하지 않습니다. 당신은 무한한 수의 단어 / 줄을 가질 수 있습니다.
Ørjan Johansen이

오, 그 변화가 만들어 졌을 때 나는 그것이 유한해야 할 하이쿠 범위라고 생각했습니다. 그것은 내가 생각하는 32 바이 터로 되돌아갑니다.
Jonathan Allan

OK는 한 줄당 단어를 8 개로 제한하고 4 줄로 줄을 지정하여 4 바이트를 처리했습니다.
Jonathan Allan

Ỵµ줄 목록을 가져올 수 있으므로을 제거 할 수 있다고 생각합니다 .
Outgolfer Erik

3

자바 스크립트 (ES6), 84 75 바이트

단어 목록의 목록으로 입력을받습니다. true하이쿠 또는 하이쿠 false이외의 경우 반환 합니다 .

a=>a.map(s=>(s.map(w=>w.match(/[aeiouy]+/gi))+'').split`,`.length)=='5,7,5'

테스트 사례



2

파이썬 (2) , 126 (125) 120 121 바이트

lambda s:[len(split('\s+',sub('[aeiouy][^aeiouy ]+','X ',t,0,I).strip()))for t in s.split('\n')]==[5,7,5]
from re import*

온라인으로 사용해보십시오!


마지막 편집은 자음 전용 단어가 1 음절로 계산되어야한다는 요구 사항을 위반했습니다.
Ørjan Johansen

@ Øjanjansen : 고정; 고마워!
Chas Brown


1
입력을 행 목록으로 취하고 s.split ()을s
Rɪᴋᴇʀ


1

클린 , 162 ... 115 바이트

import StdEnv,StdLib
@t=[sum[max(sum(map hd(group[sum[1\\v<-:"AaEeIiOoUuYy"|c==v]\\c<-w])))1\\w<-l]\\l<-t]==[5,7,5]

@, 복용 [[[Char]]](단어 목록) 및 제공 기능을 정의합니다 Bool.
반환 True입력이, 하이쿠입니다 False그렇지.

온라인으로 사용해보십시오!


자음 전용 단어 코너에서 실패한 것 같습니다.
Ørjan Johansen

@ ØrjanJohansen fixed
Οurous

1

Mathematica 119 바이트

다음은 음절에 대해 주어진 규칙을 따르는 버전입니다.

Tr/@Map[Length@StringCases[#,("a"|"e"|"i"|"o"|"u"|"y")..]/. 0->1&,(s=StringSplit)/@s[ToLowerCase@#,"\n"],{2}]=={5,7,5}&

다음은 실제로 음절을 세는 83 바이트 버전입니다.

Tr/@Map[Length@WordData[#,"Hyphenation"]&,(s=StringSplit)/@s[#,"\n"],{2}]=={5,7,5}&

예 :

%@"This is a haiku
Yes it truly is one
See what I did man"

False두 번째 줄에는 필수 7 개가 아닌 6 음절이 있으므로 반환합니다 .


챌린지는 일반적인 영어 규칙을 사용하지 않는 음절 수를 명시 적으로 정의하기 때문에 실패합니다.
Ørjan Johansen

downvoting하지 주셔서 감사합니다. 음절의 정의에 대한 시도가 있지만 명확하지 않습니다. 이 정의에 따르면 "하나"에 두 음절이 있다고 생각합니다. 사람들이 인접한 모음을 세는 것 같습니다.
Kelly Lowder

거의 모음 이 없는 단어 는 하나의 음절로 간주됩니다. 질문 의견을 참조하십시오. 자음 그룹에 대해 무엇을 해야할지 혼란 스럽지만 실제로 최종 수에는 영향을 미치지 않습니다.
Ørjan Johansen

"하나"는 모음이 두 개이며 연속적이지 않습니다.
Kelly Lowder

맞습니다. 그래서 그들은 두 음절로 계산됩니다.
Ørjan Johansen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.