Sie möchten ein Haiku erstellen, sind sich aber nicht sicher, ob es den Silbenregeln für ein Haiku entspricht.
Ich konnte nicht die Mühe machen, einen richtigen Klappentext zu schreiben, wie ich es normalerweise tue, also musst du damit auskommen. Lassen Sie uns gleich weitermachen.
Ein Haiku in freier Wildbahn finden
Für die Zwecke dieser Herausforderung werden wir prüfen, ob das angegebene Gedicht diese Kriterien erfüllt:
- Es gibt drei Zeilen.
- Die erste Zeile besteht aus 5 Silben.
- Die zweite Zeile besteht aus 7 Silben.
- Die dritte Zeile besteht aus 5 Silben.
Jede Zeile besteht aus einem oder mehreren Wörtern, die durch Leerzeichengruppen getrennt sind. Diese Wörter sind nicht unbedingt gültige englische Wörter.
Jedes Wort wird in Silben aufgeteilt, und dann werden diese Silben gezählt, um die Gesamtsilbenzahl der Zeile zu erhalten.
Eine Silbe besteht entweder aus 2 oder 3 Teilen: dem Anfang, dem Ende und möglicherweise der Mitte. Jeder Teil ist , entweder eine Gruppe von consonsants (auch als Konsonantengruppe bekannt, wie beispielsweise s
, sk
oder spl
) oder eine Gruppe von Vokalen (wie i
, ea
oder oui
).
Wenn der Anfang eine Gruppe von Konsonanten ist, ist die Mitte eine Gruppe von Vokalen und das Ende eine Gruppe von Konsonanten. Wenn der Anfang eine Gruppe von Vokalen ist, wird das Ende eine Gruppe von Konsonanten sein und es wird keine Mitte geben.
Zum Beispiel besteht das Wort example
aus drei Silben ex
, am
und ple
. ple
hat kein Ende, da es am Ende des Wortes gekürzt wurde.
Als weiteres Beispiel hat das Wort syllable
auch drei Silben syll
, abl
und e
, die ebenfalls kein Ende haben.
Für ein letztes Beispiel hat das Wort word
eine Silbe word
, die mit einer Gruppe von Konsonanten endet.
Die Herausforderung
Bestimmen Sie anhand einer Zeichenfolge, einer Liste von Zeichenfolgen, einer Liste von Listen oder eines anderen sinnvollen Formats, das ein Gedicht mit mindestens einer Zeile darstellt, ob es die oben beschriebenen Kriterien eines Haikus erfüllt, und geben Sie das Ergebnis zurück.
Sie können das Ergebnis in einem der folgenden Formate zurückgeben:
- Ein wahrer Wert, wenn das Gedicht ein Haiku und ein falsches ist.
- Ein falscher Wert, wenn das Gedicht ein Haiku ist und ein wahrer sonst.
- Ein Wert aus einem endlichen Wertebereich, der in der Einreichung angegeben ist, wenn das Gedicht ein Haiku ist, und ein Wert aus einem sich gegenseitig ausschließenden endlichen Wertebereich, der ebenfalls in der Einreichung angegeben ist.
Sie können auch davon ausgehen, dass das Gedicht keine nicht-alphabetischen Zeichen enthält, aber Sie können nicht davon ausgehen, dass es vollständig in Groß- oder Kleinbuchstaben geschrieben ist.
Für die Zwecke dieser Herausforderung Y
ist ein Vokal.
Testfälle
Wahrheit
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
Falsch
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
Wertung
Da dies Code-Golf ist, wird
die kürzeste Antwort
viel Glück für Sie alle gewinnen
quelle
Antworten:
Jelly ,
2523 Bytes-2 danke an Erik den Outgolfer (benutze eine Liste von Linien als Eingabe)
Ein monadischer Link, der eine Liste von Zeichenlisten (die Zeilen) aufnimmt und eine Liste von Listen mit Nullen und Einsen zurückgibt. Ein gültiges Haiku hat die Länge 3, und wenn eine der tiefsten Listen, die eine einzelne Null sind, durch eine einzelne ersetzt wird, beträgt die Summe der abgeflachten Listen 5, 7 bzw. 5. Die Bildung (ob Läufe von Buchstaben Konsonanten sind und nur auf nur 4 Leitungen , die die ersten 8 Wörter von jeweils bis Einnahme) gewährleistet , es gibt nur finite jedes der gültigen und ungültigen Bereiche.
Probieren Sie es online! oder schauen Sie sich die (noch verwirrendere!) Testsuite an
Hier ist eine viel einfacher zu verwendende
3230-Byte- Version, die einfach 1 oder 0 ausgibt:Probieren Sie dieses aus oder sehen Sie sich die Testsuite an .
quelle
Ỵµ
, wie Sie eine Liste von Zeilen nehmen können.JavaScript (ES6),
8475 ByteNimmt die Eingabe als Liste von Wortlisten. Rückgabe
true
für Haiku oderfalse
Nicht-Haiku.Testfälle
Code-Snippet anzeigen
quelle
Retina , 49 Bytes
Probieren Sie es online!
Ausgänge
1
für Haiku,0
für Nicht-Haiku.quelle
^
und$
weilx
Haikus in einer Reihex
als Zeichenfolge geben würden .Python 2 ,
126125120121 BytesProbieren Sie es online!
quelle
s
Perl 5 , 63 + 1 (
-p
) = 64 BytesProbieren Sie es online!
quelle
Sauber ,
162... 115 BytesDefiniert die Funktion
@
, das Nehmen[[[Char]]]
(Liste der Wörter) und das GebenBool
.Gibt zurück,
True
wenn die EingabeFalse
ansonsten ein Haiku ist .Probieren Sie es online!
quelle
Mathematica 119 Bytes
Hier ist eine Version, die den angegebenen Regeln für Silben entspricht:
Hier ist eine 83-Byte-Version, die tatsächlich Silben zählt:
z.B
Gibt zurück,
False
da die zweite Zeile sechs statt der erforderlichen sieben Silben enthält.quelle