Una cuerda musical es cualquier cuerda que se puede tocar en un teclado de piano.
Para aquellos de nosotros que no nos vimos obligados a aprender el piano cuando éramos niños, así es como se ve el teclado.
Entonces, la cuerda feed a dead cabbage
es una cuerda musical porque cada letra corresponde a una de estas notas.
Su desafío es escribir un programa que tome una cadena como entrada de STDIN y encuentre la subcadena musical más larga. Entonces su programa debe imprimir la subcadena, y su longitud. Aquí hay algunas entradas / salidas de muestra.
Entrada: "¡ALIMÉTEME! ¡Tengo hambre!"
Salida: alimentación 4
Entrada: No no no, no musistrin!
Salida: 0
Entrada:
"A **bad** !!!fAd82342"
Salida: abadfad 7
Entrada: "¡Buen golf!"
Salida: dg 2
Reglas
Su salida puede ser mayúscula o minúscula, pero no debe haber signos de puntuación ni espacios.
Habrá mayúsculas y signos de puntuación en la cadena de entrada, pero esto no afecta si una subcadena se considera "musical" o no.
Debe haber un espacio entre la subcadena musical y el número.
Respuestas:
Pyth,
2523 bytes2 bytes guardados gracias a @Jakube.
Demostración. Prueba de arnés.
Explicación:
rz0
: La entrada, en minúsculas.@Grz0
: Elimina los caracteres no alfabéticos..:@Grz0)
: Genera todas las subcadenas.+k.:@Grz0)
: Agregue la cadena vacía.f ... +k.:@Grz0)
: Filtre sobre estas cadenas.-T<G7
: Filtra cada cadena por caracteres no musicales.!-T<G7
: Niega el resultado. Esto esTrue
si y solo si la cuerda era musical.f!-T<G7+k.:@Grz0)
: Filtra las cuerdas musicales.ef!-T<G7+k.:@Grz0)
: Tome la última secuencia de este tipo..:
ordena las subcadenas por tamaño, por lo que esta también es la subcadena musical más larga.Jef!-T<G7+k.:@Grz0)
: Asignar el resultado aJ
.pdJ
: ImprimirJ
, cond
, espacio, como el carácter final.lJ
: Luego, imprima la longitud deJ
.fuente
Ruby,
8375 caracteresBastante autoexplicativo.
Aprovecha el hecho de que Ruby puede dividir cadenas en regex (
.split(/[^a-g]/)
).fuente
Perl, 58
Utilizar:
o
fuente
Java, 268
Expandido:
fuente
Perl 5 (106)
fuente
R,
9894 bytesUngolfed + explicación:
¡Sugerencias son bienvenidas!
Nota: La salida ahora es de mayúsculas y minúsculas, lo que está permitido según la edición del OP. Esto ahorró 4 bytes.
fuente
golflua ,
848584 bytesPrimero
fuerzo minúsculas, luegoseparoespaciosde caracteres que no son letras, luego elimino todas las letras no musicales en la entrada (stdin). Luego escaneo a través de cada palabra restante y comparo su longitud antes de generar la mayor y la longitud (stdout). Probablemente haya una forma más corta de hacer el ciclo, pero por el momento esto es lo que tengo.Un código de Lua sin golf sería
fuente