Une chaîne musicale est une chaîne qui peut être jouée sur un clavier de piano.
Pour ceux d'entre nous qui n'ont pas été obligés d'apprendre le piano quand ils étaient enfants, voici à quoi ressemble le clavier.
La chaîne feed a dead cabbage
est donc une chaîne musicale car chaque lettre correspond à l'un de ces nots.
Votre défi est d'écrire un programme qui prend une chaîne en entrée de STDIN et trouve la plus longue sous-chaîne musicale. Ensuite, votre programme doit imprimer la sous-chaîne et sa longueur. Voici quelques exemples d'entrées / sorties.
Entrée: "ALIMENTEZ-MOI! J'ai faim!"
Sortie: alimentation 4
Entrée: Non non non, pas de musistrin!
Sortie: 0
Contribution:
"A **bad** !!!fAd82342"
Sortie: abadfad 7
Entrée: "Bon golf!"
Sortie: dg 2
Règles
Votre sortie peut être en majuscule ou en minuscule, mais il ne doit y avoir ni ponctuation ni espace.
Il y aura des majuscules et des signes de ponctuation dans la chaîne d'entrée, mais cela n'affecte pas si une sous-chaîne est considérée ou non comme "musicale".
Il doit y avoir un espace entre la sous-chaîne musicale et le nombre.
Réponses:
Pyth,
2523 octets2 octets enregistrés grâce à @Jakube.
Manifestation. Harnais de test.
Explication:
rz0
: L'entrée, en minuscules.@Grz0
: Supprimez tous les caractères non alphabétiques..:@Grz0)
: Générer toutes les sous-chaînes.+k.:@Grz0)
: Ajoutez la chaîne vide.f ... +k.:@Grz0)
: Filtrer sur ces chaînes.-T<G7
: Filtrez chaque chaîne pour les caractères non musicaux.!-T<G7
: Annuler le résultat. C'estTrue
si et seulement si la chaîne était musicale.f!-T<G7+k.:@Grz0)
: Filtrer les cordes musicales.ef!-T<G7+k.:@Grz0)
: Prenez la dernière chaîne de ce type..:
commande les sous-chaînes par taille, c'est donc également la plus longue sous-chaîne musicale.Jef!-T<G7+k.:@Grz0)
: Attribuez le résultat àJ
.pdJ
: ImprimeJ
, avecd
, espace, comme caractère final.lJ
: Ensuite, imprimez la longueur deJ
.la source
Ruby,
8375 caractèresAssez explicite.
Profite du fait que Ruby peut séparer les chaînes sur regex (
.split(/[^a-g]/)
).la source
Perl, 58
Utilisation:
ou
la source
Java, 268
Étendu:
la source
Perl 5 (106)
la source
R,
9894 octetsNon golfé + explication:
Les suggestions sont les bienvenues!
Remarque: La sortie est désormais à casse mixte, ce qui est autorisé par l'édition de l'OP. Cela a permis d'économiser 4 octets.
la source
golflua ,
848584 octetsJ'ai d' abord
minuscule de force, puisdépouiller lesespacesdes caractères non-lettre, puis supprimer toutes les lettres non-musicales sur l'entrée (stdin). Je scanne ensuite chaque mot restant et compare sa longueur avant de sortir le plus grand et la longueur (stdout). Il y a probablement un moyen plus court de faire la boucle, mais pour le moment c'est ce que j'ai.Un code Lua non golfé serait
la source