Eine Musiksaite ist eine beliebige Saite, die auf einer Klaviertastatur gespielt werden kann.
Für diejenigen von uns, die als Kinder nicht gezwungen waren, Klavier zu lernen, sieht die Tastatur folgendermaßen aus.
Die Saite feed a dead cabbage
ist also eine musikalische Saite, weil jeder einzelne Buchstabe einem dieser Nots entspricht.
Ihre Herausforderung besteht darin, ein Programm zu schreiben, das eine Zeichenfolge als Eingabe von STDIN verwendet und die längste musikalische Teilzeichenfolge findet. Dann muss Ihr Programm den Teilstring und seine Länge drucken. Hier sind einige Beispieleingänge / -ausgänge.
Eingabe: "FÜTTER MICH! Ich habe Hunger!"
Ausgabe: Vorschub 4
Eingabe: Nein, nein, nein, kein Musistrin!
Ausgabe: 0
Eingang:
"A **bad** !!!fAd82342"
Ausgabe: abadfad 7
Eingabe: "Gutes Golfen!"
Ausgabe: dg 2
Regeln
Ihre Ausgabe kann in Groß- oder Kleinschreibung erfolgen, es dürfen jedoch keine Satzzeichen oder Leerzeichen vorhanden sein.
Die Eingabezeichenfolge wird groß geschrieben und interpunktiert. Dies hat jedoch keinen Einfluss darauf, ob eine Teilzeichenfolge als "musikalisch" eingestuft wird oder nicht.
Zwischen dem musikalischen Teilstring und der Nummer muss ein Leerzeichen stehen.
Antworten:
Pyth,
2523 Bytes2 Bytes dank @Jakube gespeichert.
Demonstration. Kabelbaum prüfen.
Erläuterung:
rz0
: Die Eingabe in Kleinbuchstaben.@Grz0
: Entfernen Sie alle nicht alphabetischen Zeichen..:@Grz0)
: Generiere alle Teilzeichenfolgen.+k.:@Grz0)
: Fügen Sie die leere Zeichenfolge hinzu.f ... +k.:@Grz0)
: Filtern Sie über diese Zeichenfolgen.-T<G7
: Filtern Sie jede Zeichenfolge nach nicht musikalischen Zeichen.!-T<G7
: Negiere das Ergebnis. Dies istTrue
genau dann der Fall, wenn die Saite musikalisch war.f!-T<G7+k.:@Grz0)
: Filtern Sie die Musiksaiten heraus.ef!-T<G7+k.:@Grz0)
: Nehmen Sie die letzte solche Zeichenfolge..:
ordnet Teilzeichenfolgen nach Größe an, daher ist dies auch die längste musikalische Teilzeichenfolge.Jef!-T<G7+k.:@Grz0)
: Ordnen Sie das Ergebnis zuJ
.pdJ
: Drucken SieJ
mitd
Leerzeichen als Endzeichen.lJ
: Dann drucken Sie die Länge vonJ
.quelle
Ruby,
8375 ZeichenZiemlich selbsterklärend.
Nutzt die Tatsache, dass Ruby Strings auf Regex (
.split(/[^a-g]/)
) teilen kann .quelle
Perl, 58
Verwenden:
oder
quelle
Java, 268
Erweitert:
quelle
Perl 5 (106)
quelle
R
9894 BytesUngolfed + Erklärung:
Vorschläge sind willkommen!
Hinweis: Die Ausgabe erfolgt jetzt in Groß- und Kleinschreibung, was gemäß der Bearbeitung des OP zulässig ist. Dies sparte 4 Bytes.
quelle
Golflua ,
848584 BytesI erste
Kraft Klein, dannstrippenRäumenicht-Buchstabenzeichen entfernen dann alle nichtmusikalischen Buchstaben auf dem Eingang (stdin). Ich scanne dann jedes verbleibende Wort durch und vergleiche seine Länge, bevor ich das größte und die größte Länge (stdout) ausgebe. Es gibt wahrscheinlich einen kürzeren Weg, um die Schleife zu machen, aber im Moment ist es das, was ich habe.Ein ungolfed Lua Code wäre
quelle