Vous voulez donc créer un haïku, mais vous ne savez pas s'il suit les règles de syllabe d'un haïku.
Je ne pouvais pas être dérangé pour écrire un texte de présentation approprié comme je le fais habituellement, vous devrez donc vous en tirer. Restons coincés.
Trouver un haïku dans la nature
Aux fins de ce défi, nous vérifierons si le poème donné répond à ces critères:
- Il y a trois lignes.
- La première ligne a 5 syllabes.
- La deuxième ligne a 7 syllabes.
- La troisième ligne a 5 syllabes.
Chaque ligne est composée d'un ou plusieurs mots, séparés par des groupes d'espaces. Ces mots ne sont pas nécessairement des mots anglais valides.
Chaque mot est divisé en syllabes, puis ces syllabes sont comptées pour obtenir le nombre total de syllabes de la ligne.
Une syllabe comporte 2 ou 3 parties: le début, la fin et peut-être le milieu. Chaque partie est soit un groupe de consonnes (également connu comme un groupe de consonnes, comme s
, sk
ou spl
) ou un groupe de voyelles (comme i
, ea
ou oui
).
Si le début est un groupe de consonnes, le milieu sera un groupe de voyelles et la fin sera un groupe de consonnes. Si le début est un groupe de voyelles, la fin sera un groupe de consonnes et il n'y aura pas de milieu.
Par exemple, le mot example
est composé de trois syllabes, ex
, am
et ple
. ple
n'a pas de fin car il a été écourté à la fin du mot.
Autre exemple, le mot syllable
a aussi trois syllabes, syll
, abl
et e
qui n'a pas non plus fin.
Pour un dernier exemple, le mot word
a une syllabe word
, qui se termine par un groupe de consonnes.
Le défi
Étant donné une chaîne, une liste de chaînes, une liste de listes ou tout autre format raisonnable représentant un poème avec au moins une ligne, déterminez s'il répond aux critères d'un haïku décrit ci-dessus et retournez le résultat.
Vous pouvez renvoyer le résultat dans l'un de ces formats:
- Une valeur vraie si le poème est un haïku et un faux sinon.
- Une valeur fausse si le poème est un haïku et un vrai sinon.
- Une valeur d'une plage finie de valeurs spécifiées dans la soumission si le poème est un haïku et une valeur d'une plage finie mutuellement exclusive de valeurs également spécifiée dans la soumission.
Vous pouvez également supposer que le poème ne contient aucun caractère non alphabétique, mais vous ne pouvez pas supposer qu'il est entièrement en majuscules ou en minuscules.
Aux fins de ce défi, Y
est une voyelle.
Cas de test
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
Falsy
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
Notation
Puisqu'il s'agit de code-golf
La réponse la plus courte gagnera
Bonne chance à tous
la source
Réponses:
Gelée ,
2523 octets-2 grâce à Erik l'Outgolfer (utilisez une liste de lignes en entrée)
Un lien monadique prenant une liste de listes de caractères (les lignes) et renvoyant une liste de listes de listes de zéros et de uns. Un haïku valide aura une longueur de 3 et une fois que toutes les listes les plus profondes qui sont un seul zéro sont remplacées par une seule, la somme des listes aplaties sera respectivement de 5, 7 et 5. La formation (si les séries de lettres sont des consonnes et ne prend que les 8 premiers mots de chacune des 4 lignes maximum) garantit qu'il n'y a que fini de chacune des plages valides et invalides.
Essayez-le en ligne! ou voir la suite de tests (encore plus déroutante!)
Voici une version
3230 octets beaucoup plus facile à utiliser , affichant simplement 1 ou 0:Essayez celui-ci ou voyez sa suite de tests .
la source
Ỵµ
, car vous pouvez prendre une liste de lignes.JavaScript (ES6),
8475 octetsPrend la saisie comme une liste de listes de mots. Retourne
true
pour le haïku oufalse
pour les non-haïku.Cas de test
Afficher l'extrait de code
la source
Rétine , 49 octets
Essayez-le en ligne!
Sorties
1
pour haïku,0
pour non-haïku.la source
^
et$
parce que lesx
haïkus d'affilée donneraientx
comme une chaîne.Python 2 ,
126125120121 121 octetsEssayez-le en ligne!
la source
s
Perl 5 , 63 + 1 (
-p
) = 64 octetsEssayez-le en ligne!
la source
Nettoyer ,
162... 115 octetsDéfinit la fonction
@
, prendre[[[Char]]]
(liste de liste de mots) et donnerBool
.Renvoie
True
lorsque l'entrée est un haïku,False
sinon.Essayez-le en ligne!
la source
Mathematica 119 octets
Voici une version conforme aux règles données pour les syllabes:
Voici une version de 83 octets qui compte réellement les syllabes:
par exemple
renvoie
False
puisque la deuxième ligne a six syllabes au lieu des sept requises.la source