... Если я позволю своим пальцам праздно блуждать по клавишам пишущей машинки, может случиться, что у меня получится напечатать какое-нибудь осмысленное предложение. Если армия обезьян будет бить по клавишам пишущих машинок, они могут напечатать все книги Британского музея. Шанс, что они сделают это, определённо больше, чем вероятность того, что все молекулы соберутся в одной половине сосуда.
Артур Эддингтон «Природа физического мира», 1927.
- Форд! — выговорил он, — там, снаружи, бесконечно много обезьян.
И они хотят обсудить с нами «Гамлета»,...
Предположим, что наши обезьяны печатают, и печатают, и печатают, и уже настрочили множество разнообразных коротких отрывков текста.
Давайте проверим их на вхождение осмысленных слов.
Вам предлагается некоторый текст, который может содержать осмысленные слова.
Вы должны подсчитать количество таких слов в этом тексте.
Слово может стоять отдельно, а может присутствовать как часть другого слова.
Регистр букв не имеет значения. Слова даны в нижнем регистре и не повторяются.
Если слово встречается в тексте несколько раз, оно должно быть посчитано только один раз.
Например, текст "How aresjfhdskfhskd you?", слова - ("how", "are", "you", "hello").
Результат должен быть равен 3.
Вход: Два аргумента.
Текст как строка (юникод в Python 2) и слова в виде множества (set) строк (юникод в Python 2).
Выход: Количество слов в тексте в виде целого числа.
Пример:
count_words("How aresjfhdskfhskd you?", {"how", "are", "you", "hello"}) == 3
count_words("Bananas, give me bananas!!!", {"banana", "bananas"}) == 2
count_words("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
{"sum", "hamlet", "infinity", "anything"}) == 1
Как это используется:
Python удобный и мощный язык для обработки текстовых данных.
В этой задаче приводится всего лишь простой пример инструментов для поиска в тексте, которые вы можете разрабатывать.
Предусловия:
0 < len(text) ≤ 256
all(3 ≤ len(w) and w.islower() and w.isalpha for w in words)