На http://shakespeare.mit.edu/ вы можете найти полный текст каждой пьесы Шекспира на одной странице (например, « Гамлет» ).
Напишите скрипт, который получает URL-адрес пьесы из stdin, такой как http://shakespeare.mit.edu/hamlet/full.html , и выводит количество текстовых символов, которые каждый игровой персонаж говорил с stdout, сортируя в соответствии с кем говорил больше всего.
Названия пьесы / сцены / акта, очевидно, не считаются ни диалогом, ни именами персонажей. Текст, выделенный курсивом и [ текст в квадратных скобках] не являются реальным диалогом, их не следует считать. Пробелы и другие знаки препинания в диалоге должны учитываться.
(Формат пьес выглядит очень согласованным, хотя я не посмотрел их все. Скажите, если я что-то упустил. Ваш сценарий не должен работать на стихи.)
пример
Вот смоделированный раздел из Много шума из ничего, чтобы показать, что я ожидаю для вывода:
Больше шума из ничего
Сцена 0.
посыльный
Я буду.
БЕАТРИС
Делать.
Леонато
Ты никогда не будешь.
БЕАТРИС
Нет.
Ожидаемый результат:
LEONATO 15
Messenger 7
BEATRICE 6
счет
Это код гольф. Победит самая маленькая программа в байтах.
Ответы:
PHP (240 символов)
Делит HTML на строки (используя в качестве разделителя), затем запускает несколько регулярных выражений для извлечения произнесенных имен и слов. Сохраняет длину слов, произнесенных в массив. Golfed:
Ungolfed:
Примечание: это считает «Все» отдельным символом.
Пример:
источник
Реболь -
556527Вероятно, это может быть дальше, однако вряд ли получится получить ответ ниже, чем уже предоставлено :(
Ungolfed:
Эта программа удаляет [текст в квадратных скобках], а также удаляет окружающие пробелы из диалога. Без этого вывод идентичен ответу es1024 .
Пример:
источник
Common Lisp - 528
объяснение
Это слегка модифицированная версия, которая добавляет информацию о печати (см. Вставку).
Примечания
Я удаляю текст в квадратных скобках, а также вхождение «aside:», которого нет в скобках (я также обрезаю пробельные символы). Вот след выполнения с сопоставляемым текстом и суммой для каждого символа для Гамлета .
Как и другие ответы, All считается персонажем. Может быть заманчиво добавить значение all ко всем другим символам, но это будет неверно, поскольку «All» относится к символам, фактически присутствующим на сцене, что требует сохранения контекста присутствия (отслеживание «выхода») exeunt "и" введите "показания). Это не сделано.
источник