Em http://shakespeare.mit.edu/, você pode encontrar o texto completo de cada uma das peças de Shakespeare em uma página (por exemplo, Hamlet ).
Escreva um script que considere o URL de uma peça de teatro de stdin, como http://shakespeare.mit.edu/hamlet/full.html , e produz o número de caracteres de texto que cada personagem de peça falou com stdout, classificados de acordo com quem falou mais.
Os títulos da peça / cena / ato obviamente não contam como diálogo, nem os nomes dos personagens. Texto em itálico e [texto entre colchetes] não são diálogos reais, não devem ser contados. Espaços e outras pontuações no diálogo devem ser contados.
(O formato das peças parece muito consistente, embora eu não tenha olhado para todas elas. Diga-me se eu esqueci alguma coisa. Seu script não precisa funcionar para os poemas.)
Exemplo
Aqui está uma seção simulada de Much Ado About Nothing para mostrar o que eu espero para a saída:
Mais barulho por nada
Cena 0.
Mensageiro
Eu vou.
BEATRICE
Faz.
LEONATO
Você nunca.
BEATRICE
Não.
Saída esperada:
LEONATO 15
Messenger 7
BEATRICE 6
Pontuação
Isso é código de golfe. O menor programa em bytes vencerá.
Respostas:
PHP (240 caracteres)
Divide o html em seqüências de caracteres (usando como delimitador) e executa algumas expressões regulares para extrair o nome e as palavras faladas. Economiza o comprimento das palavras faladas em array. Golfe:
Ungolfed:
Nota: Isso considera 'Todos' como um caractere separado.
Exemplo:
fonte
Rebol -
556527Provavelmente isso poderia ser ainda mais complicado, no entanto, é improvável que você fique abaixo das respostas já fornecidas :(
Ungolfed:
Este programa remove [texto entre colchetes] e também apara os espaços em branco ao redor do diálogo. Sem isso, a saída é idêntica à resposta es1024 .
Exemplo:
fonte
Lisp comum - 528
Explicação
Esta é uma versão ligeiramente modificada que adiciona informações de impressão (consulte Colar).
Notas
Eu removo o texto entre colchetes, bem como a ocorrência "aparte:" que não está presente entre colchetes (também apare caracteres de espaço em branco). Aqui está um rastro de execução com o texto sendo correspondido e o total para cada caractere, para Hamlet .
Como outras respostas, tudo é considerado um personagem. Pode ser tentador adicionar o valor de todos a todos os outros personagens, mas isso seria incorreto, pois "Todos" refere-se aos personagens realmente presentes no palco, o que requer manter um contexto de quem está presente (rastreando a saída "exit") indicações "e" enter "). Isso não foi feito.
fonte