Uma corda musical é qualquer corda que pode ser tocada em um teclado de piano.
Para aqueles de nós que não fomos forçados a aprender piano quando crianças, aqui está a aparência do teclado.
Portanto, a corda feed a dead cabbage
é uma corda musical porque cada letra corresponde a um desses pontos.
Seu desafio é escrever um programa que use uma string como entrada do STDIN e encontre a substring musical mais longa. Em seguida, seu programa deve imprimir a substring e seu comprimento. Aqui estão algumas entradas / saídas de amostra.
Entrada: "ME ALIMENTE! Estou com fome!"
Saída: alimentação 4
Entrada: Não, não, não, musistrin!
Ouput: 0
Entrada:
"A **bad** !!!fAd82342"
Saída: abadfad 7
Entrada: "Bom golfe!"
Saída: dg 2
Regras
Sua saída pode ser maiúscula ou minúscula, mas não deve haver pontuação ou espaços.
Haverá letras maiúsculas e pontuação na string de entrada, mas isso não afeta se uma substring é considerada "musical" ou não.
Deve haver um espaço entre a subcadeia musical e o número.
Respostas:
Pitão,
2523 bytes2 bytes salvos graças ao @Jakube.
Demonstração. Equipamento de teste.
Explicação:
rz0
: A entrada, em minúsculas.@Grz0
: Tira todos os caracteres não alfabéticos..:@Grz0)
: Gere todas as substrings.+k.:@Grz0)
: Adicione a string vazia.f ... +k.:@Grz0)
: Filtre essas strings.-T<G7
: Filtre cada sequência para caracteres não musicais.!-T<G7
: Negue o resultado. Isto éTrue
se e somente se a corda foi musical.f!-T<G7+k.:@Grz0)
: Filtre as cordas musicais.ef!-T<G7+k.:@Grz0)
: Pegue a última dessas cordas..:
ordena substrings por tamanho, portanto, esse também é o substring musical mais longo.Jef!-T<G7+k.:@Grz0)
: Atribua o resultado aJ
.pdJ
: ImprimeJ
, comd
, espaço, como o caractere final.lJ
: Em seguida, imprima o comprimento deJ
.fonte
Ruby,
8375 caracteresBastante auto-explicativo.
Aproveita o fato de que Ruby pode dividir cadeias de caracteres em regex (
.split(/[^a-g]/)
).fonte
Perl, 58
Usar:
ou
fonte
Java, 268
Expandido:
fonte
Perl 5 (106)
fonte
R,
9894 bytesUngolfed + explicação:
Sugestões são bem-vindas!
Nota: A saída agora está em maiúsculas e minúsculas, o que é permitido pela edição do OP. Isso salvou 4 bytes.
fonte
golflua ,
848584 bytesA primeira vez que
a força minúsculas, em seguida,tiraespaçoscaracteres que não sejam letras, em seguida, remover todas as letras não musicais na entrada (entrada padrão). Depois, digitalizo cada palavra restante e comparo seu comprimento antes de gerar o maior e o comprimento (stdout). Provavelmente existe uma maneira mais curta de fazer o loop, mas no momento é isso que eu tenho.Um código Lua não destruído seria
fonte