Esophagographers is de Engelse term voor personeelsleden van een medisch team die instaan voor het uitvoeren van een oesofagografie. Bij oesofagografie worden opnamen gemaakt van een staande patiënt tijdens het doorlichten van de oesofagus bij het passeren van een slok bariumcontrastmiddel. De slokdarm of oesofagus is een onderdeel van het spijsverteringsstelsel van gewervelden die bestaat uit een holle sluitspier waardoor voedsel passeert, geholpen door peristaltische samentrekkingen, tussen de farynx (keelholte) en de maag.
In deze opgave zijn we echter om een niet-medische reden geïnteresseerd in het woord esophagographers. Esophagographers, zestien letters lang, is immers het langste Engelse woord waarin elke letter juist twee keer voorkomt. Een veertienletterwoord met deze eigenschap is scintillescent. Twaalfletterwoorden met deze eigenschap zijn onder meer happenchance en shanghaiings. Onder de tienletterwoorden met deze eigenschap vinden we arraigning, concisions, intestines, en horseshoer.
Woorden waarvan alle letters even vaak voorkomen worden herhaalwoorden genoemd. Gevraagd wordt:
Schrijf een functie voorkomens waaraan een woord moet doorgegeven worden. De functie moet een dictionary teruggeven, die elke letter die in het woord voorkomt, afbeeldt op het aantal voorkomens van die letter in het woord. De functie mag hierbij geen onderscheid maken tussen hoofdletters en kleine letters, en de sleutels van de dictionary mogen enkel uit kleine letters bestaan.
Gebruik de functie voorkomens om een functie isHerhaalwoord te schrijven waaraan een woord moet doorgegeven worden. De functie heeft een optionele tweede parameter minimale_herhaling (standaardwaarde 1). De functie moet een Booleaanse waarde teruggeven, die aangeeft of het gegeven woord een herhaalwoord is of niet. Bij het bepalen of een woord een herhaalwoord is, mag geen onderscheid gemaakt worden tussen hoofdletters en kleine letters, en moeten alle karakters van het woord die geen letter zijn, genegeerd worden. Om als herhalingswoord in aanmerking te komen moet het aantal voorkomens van elke letter ook groter of gelijk zijn aan de waarde die wordt doorgegeven aan de parameter minimale_herhaling.
Gebruik de functie isHerhaalwoord om een functie herhaalwoorden te schrijven waaraan de locatie van een tekstbestand moet doorgegeven worden. Dit tekstbestand moet een lijst van woorden bevatten, elk op een afzonderlijke regel. De functie heeft ook nog twee optionele parameters minimale_herhaling en minimale_lengte, beide met standaardwaarde 1. De functie moet de verzameling herhaalwoorden teruggegeven die in het bestand voorkomen en die minstens evenveel karakters bevatten als de waarde doorgegeven aan de parameter minimale_lengte. Om te bepalen of een woord al dan niet een herhaalwoord is, moet gebruik gemaakt worden van de functie isHerhaalwoord. De parameter minimale_herhaling heeft daarbij dezelfde betekenis voor de functie herhaalwoorden als voor de functie isHerhaalwoord.
Bij onderstaande voorbeeldsessie gaan we ervan uit dat het bestand woorden.txt1 zich in de huidige directory bevindt.
>>> voorkomens('CHACHACHA')
{'a': 3, 'h': 3, 'c': 3}
>>> voorkomens('ronddobberen')
{'b': 2, 'e': 2, 'd': 2, 'o': 2, 'n': 2, 'r': 2}
>>> voorkomens('ballenbakken')
{'a': 2, 'b': 2, 'e': 2, 'k': 2, 'l': 2, 'n': 2}
>>> isHerhaalwoord('CHACHACHA')
True
>>> isHerhaalwoord('ronddobberen')
True
>>> isHerhaalwoord('ballenbakken', minimale_herhaling=3)
False
>>> herhaalwoorden('woorden.txt', minimale_herhaling=2, minimale_lengte=10)
{'doordringing', 'apenpakken'}