Por lo tanto, desea crear un haiku, pero no está seguro si sigue las reglas de sílaba para un haiku.
No podría molestarme en escribir una propaganda adecuada como lo hago habitualmente, así que tendrás que arreglártelas con esto. Vamos a quedarnos atrapados.
Encontrar un haiku en la naturaleza
Para los propósitos de este desafío, verificaremos si el poema dado cumple estos criterios:
- Hay tres lineas.
- La primera línea tiene 5 sílabas.
- La segunda línea tiene 7 sílabas.
- La tercera línea tiene 5 sílabas.
Cada línea está compuesta de una o más palabras, separadas por grupos de espacios. Estas palabras no son necesariamente palabras inglesas válidas.
Cada palabra se divide en sílabas, y luego esas sílabas se cuentan para obtener el recuento total de sílabas de la línea.
Una sílaba tiene 2 o 3 partes: el principio, el final y posiblemente el medio. Cada parte es un grupo de consonantes (también conocido como un grupo de consonantes, como s
, sk
o spl
) o un grupo de vocales (como i
, ea
o oui
).
Si el comienzo es un grupo de consonantes, el medio será un grupo de vocales y el final será un grupo de consonantes. Si el comienzo es un grupo de vocales, el final será un grupo de consonantes y no habrá medio.
Por ejemplo, la palabra example
se compone de tres sílabas ex
, am
y ple
. ple
no tiene final ya que fue interrumpido al final de la palabra.
Como otro ejemplo, la palabra syllable
también tiene tres sílabas syll
, abl
y e
, que tampoco tiene final.
Para un ejemplo final, la palabra word
tiene una sílaba word
, que termina con un grupo de consonantes.
El reto
Dada una cadena, una lista de cadenas, una lista de listas o cualquier otro formato razonable que represente un poema con al menos una línea, determine si cumple con los criterios de un haiku descritos anteriormente y devuelva el resultado.
Puede devolver el resultado en cualquiera de estos formatos:
- Un valor verdadero si el poema es un haiku y uno falso de lo contrario.
- Un valor falso si el poema es un haiku y uno verdadero de lo contrario.
- Un valor de un rango finito de valores especificado en el envío si el poema es un haiku y un valor de un rango finito de valores mutuamente excluyentes también especificado en el envío.
También puede suponer que el poema no contiene caracteres no alfabéticos, pero no puede suponer que está completamente en mayúscula o minúscula.
A los efectos de este desafío, Y
es una vocal.
Casos de prueba
Verdad
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
Falsa
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
Puntuación
Dado que este es el código de golf,
la respuesta más corta ganará.
Buena suerte a todos.
fuente
Respuestas:
Jalea ,
2523 bytes-2 gracias a Erik the Outgolfer (use una lista de líneas como entrada)
Un enlace monádico que toma una lista de listas de caracteres (las líneas) y devuelve una lista de listas de listas de ceros y unos. El haiku válido será de longitud 3 y una vez que cualquiera de las listas más profundas que sean un solo cero sean reemplazadas por una sola, la suma de las listas planas será 5, 7 y 5 respectivamente. La formación (si las series de letras son consonantes y solo toman las primeras 8 palabras de cada una de hasta 4 líneas) asegura que solo haya límites finitos de cada uno de los rangos válidos e inválidos.
Pruébalo en línea! o vea la suite de pruebas (¡aún más confusa!)
Aquí hay una versión de
3230 bytes mucho más fácil de usar , simplemente generando 1 o 0:Pruebe este o vea su conjunto de pruebas .
fuente
Ỵµ
, ya que puede tomar una lista de líneas.JavaScript (ES6),
8475 bytesToma entrada como una lista de listas de palabras. Devoluciones
true
para haiku ofalse
para no haiku.Casos de prueba
Mostrar fragmento de código
fuente
Retina , 49 bytes
Pruébalo en línea!
Salidas
1
para haiku,0
para no haiku.fuente
^
y$
porque losx
haikus seguidos daríanx
como una cadena.Python 2 ,
126125120121 bytesPruébalo en línea!
fuente
s
Perl 5 , 63 + 1 (
-p
) = 64 bytesPruébalo en línea!
fuente
Limpio ,
162... 115 bytesDefine la función
@
, tomar[[[Char]]]
(lista de la lista de palabras) y darBool
.Devuelve
True
cuando la entrada es un haiku, de loFalse
contrario.Pruébalo en línea!
fuente
Mathematica 119 Bytes
Aquí hay una versión que se ajusta a las reglas dadas para las sílabas:
Aquí hay una versión de 83 bytes que realmente cuenta sílabas:
p.ej
vuelve
False
ya que la segunda línea tiene seis sílabas en lugar de las siete requeridas.fuente