Wat krijgen we als we de klinkers van een woord of een zin omkeren, met behoud van de posities van hoofdletters en kleine letters? Het woord multiMILLIONAIRE wordt daardoor omgezet naar meltiMALLOINIIRU.
Deze gevleugelde uitspraak die terugkeerde in elke aflevering van de televisieserie Monty Python's Flying Circus1
And now for something completely different.
wordt op haar beurt omgezet naar
End new fir semethong cimpletoly dofforant.
Dit komt akelig dicht in de buurt van de manier waarop sommige BBC2 presentatoren deze zinsnede uitspraken, want op de Britse publieke omroep was het lang een geijkte manier om ongerelateerde onderwerpen aan elkaar te rijgen. Dan weet je meteen ook waar de heren van Monty Python3 hun mosterd gehaald hebben.
Gevraagd wordt om de klinkers van een woord of zin om te keren, met behoud van de posities van hoofdletters en kleine letters. De klinkers zijn de letters a, e, i, o en u. Hiervoor ga je als volgt te werk:
Schrijf een functie klinkers waaraan een string $$s$$ (str) moet doorgegeven worden. De functie moet een string (str) met de klinkers uit $$s$$ teruggeven. Met andere woorden: het resultaat na het schrappen van alle karakters uit $$s$$ die geen klinker zijn.
Schrijf een functie klinker_van_links waaraan twee argumenten moeten doorgegeven worden: i) een string $$s$$ (str) en ii) een getal $$n \in \mathbb{N}_0$$ (int). De functie moet de $$n$$-de klinker van $$s$$ teruggeven, waarbij de klinkers van links naar rechts geteld worden (vanaf 1). Daarbij mag de functie ervan uitgaan dat $$s$$ minstens $$n$$ klinkers heeft, zonder dat dit expliciet moet getest worden.
Schrijf een functie klinker_van_rechts waaraan twee argumenten moeten doorgegeven worden: i) een string $$s$$ (str) en ii) een getal $$n \in \mathbb{N}_0$$ (int). De functie moet de $$n$$-de klinker van $$s$$ teruggeven, waarbij de klinkers van rechts naar links geteld worden (vanaf 1). Daarbij mag de functie ervan uitgaan dat $$s$$ minstens $$n$$ klinkers heeft, zonder dat dit expliciet moet getest worden.
Schrijf een functie omgekeerde_klinkers waaraan een string $$s$$ (str) moet doorgegeven worden. De functie moet de volgorde van de klinkers van $$s$$ omkeren en daarbij de posities van hoofdletters en kleine letters behouden. Het resultaat (str) moet door de functie teruggegeven worden.
Bij het bepalen of een karakter een klinker is, mogen deze functies nooit onderscheid maken tussen hoofdletters of kleine letters.
>>> klinkers('multiMILLIONAIRE')
'uiIIOAIE'
>>> klinkers('And now for something completely different.')
'Aoooeioeeiee'
>>> klinker_van_links('multiMILLIONAIRE', 5)
'O'
>>> klinker_van_links('And now for something completely different.', 1)
'A'
>>> klinker_van_rechts('multiMILLIONAIRE', 3)
'A'
>>> klinker_van_rechts('And now for something completely different.', 1)
'e'
>>> omgekeerde_klinkers('multiMILLIONAIRE')
'meltiMALLOINIIRU'
>>> omgekeerde_klinkers('And now for something completely different.')
'End new fir semethong cimpletoly dofforant.'