Sur http://shakespeare.mit.edu/, vous pouvez trouver le texte intégral de chacune des pièces de Shakespeare sur une seule page (par exemple Hamlet ).
Écrivez un script qui reprend l'url d'une pièce de stdin, tel que http://shakespeare.mit.edu/hamlet/full.html , et génère le nombre de caractères de texte que chaque personnage de jeu a parlé à stdout, triés en fonction de qui parlait le plus.
Les titres de jeu / scène / acte ne comptent évidemment pas comme des dialogues, pas plus que les noms des personnages. Le texte en italique et le [texte entre crochets] ne sont pas de véritables dialogues, ils ne doivent pas être comptés. Les espaces et autres signes de ponctuation dans le dialogue doivent être comptés.
(Le format des pièces semble très cohérent même si je ne les ai pas toutes regardées. Dites-moi si j'ai oublié quelque chose. Votre script n'a pas à fonctionner pour les poèmes.)
Exemple
Voici une section simulée de Much Ado About Nothing pour montrer ce que j'attends pour la sortie:
Plus de bruit pour rien
Scène 0.
Messager
Je vais.
BEATRICE
Faire.
LEONATO
Vous ne le ferez jamais.
BEATRICE
Non.
Production attendue:
LEONATO 15
Messenger 7
BEATRICE 6
Notation
C'est le golf de code. Le plus petit programme en octets gagnera.
Réponses:
PHP (240 caractères)
Divise le html en chaînes (en utilisant comme délimiteur), puis exécute quelques expressions régulières pour extraire le nom et les mots prononcés. Enregistre la longueur des mots prononcés dans le tableau. Golfé:
Non golfé:
Remarque: Cela considère «Tous» comme un caractère distinct.
Exemple:
la source
Rebol -
556527Cela pourrait probablement être approfondi, mais il est peu probable qu'il tombe en dessous des réponses déjà fournies :(
Non golfé:
Ce programme supprime [texte entre crochets] et coupe également les espaces environnants du dialogue. Sans cela, la sortie est identique à la réponse es1024 .
Exemple:
la source
Lisp commun - 528
Explication
Il s'agit d'une version légèrement modifiée qui ajoute des informations d'impression (voir coller).
Remarques
Je supprime le texte entre crochets ainsi que l'occurrence «côté:» qui n'est pas présente entre crochets (je coupe également les espaces). Voici une trace d'exécution avec le texte mis en correspondance et le total pour chaque personnage, pour Hamlet .
Comme d'autres réponses, All est supposé être un personnage. Il pourrait être tentant d'ajouter la valeur de tous à tous les autres personnages, mais ce serait incorrect car "Tous" fait référence aux personnages réellement présents sur scène, ce qui nécessite de garder un contexte de qui est présent (suivi de "sortie" "exeunt "et" enter "). Ce n'est pas fait.
la source