... Si je laisse mes doigts taper au hasard sur le clavier d'une machine à écrire, il est possible qu'il en résulte une phrase compréhensible.
Si une armée de singes tape sur des machines à écrire, ils pourraient écrire la totalité des livres du British Museum.
La probabilité qu'ils arrivent à ce résultat est bien plus favorable que celle que les molécules retournent dans une des moitiés du récipient.
A. S. Eddington, La Nature du Monde Physique : Conférences Gifford, 1927.
"Ford, dit-il, il y a un nombre infini de singes à l'extérieur qui veulent nous...
Supposons que nos singes, sur leurs machines à écrire, tapent, tapent et tapent encore, jusqu'à produire un grand nombre de bouts de texte différents.
Essayons de trouver si ceux-ci incluent quelques mots en particulier.
On vous donne un texte pouvant inclure des mots précis. Vous devez compter combien de ces mots sont inclus dans ce texte.
Un mot peut être entier ou faire partie d'un autre mot. La casse des lettres du texte n'a pas d'importance.
Les mots à chercher sont donnés en minuscules et ne se répètent pas.
Si un même mot apparait plusieurs fois, celui-ci ne doit être compté qu'une seule fois.
Par exemple,
texte - "How aresjfhdskfhskd you?", mots - ("how", "are", "you", "hello").
Le résultat est 3.
Entrée : Deux arguments.
Un texte en tant que chaine de caractères (en unicode pour py2) et des mots en tant qu'ensemble de chaines de caractères (en unicode pour py2).
Sortie : Le nombre de mots dans le texte en tant qu'entier.
Exemple:
countWords("How aresjfhdskfhskd you?", ["how", "are", "you", "hello"]) == 3
countWords("Bananas, give me bananas!!!", ["banana", "bananas"]) == 2
countWords("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.",
["sum", "hamlet", "infinity", "anything"]) == 1
À quoi cela sert :
Python est un langage utile et puissant pour le traitement de texte.
Cette mission est seulement un exemple simple du genre d'outils de recherche de texte que vous pouvez construire.
Précondition :
0 < len(texte) ≤ 256
all(3 ≤ len(m) and m.islower() and m.isalpha for m in mots)