Extra¶
Potjeslatijn¶
In deze opgave schrijf je functies die een Nederlands woord vertalen naar potjeslatijn: een geheimtaal waarin je de beginklanken van een woord achteraan zet. Dit probleem is gebaseerd op Google Pig Latin[1]:

De regels¶
De klinkers zijn a, e, i, o en u. Een woord bestaat uit kleine letters.
Het woord |
Vertaling |
Voorbeeld |
|---|---|---|
is leeg |
de lege string |
|
begint met een klinker |
het woord, met |
|
begint met een of meer medeklinkers |
het woord zonder die medeklinkers, dan de medeklinkers, dan |
|
De y is een geval apart. Staat er aan het begin een y gevolgd door een
klinker, dan telt de y als medeklinker: "yoghurt" wordt "oghurtyee". Staat er
aan het begin een y gevolgd door een medeklinker, dan telt de y als klinker:
"ypsilon" wordt "ypsilonhee".
Wat je gaat maken¶
Stap |
Functie |
Doet |
|---|---|---|
1 |
|
opwarmen: de regels, met hoogstens één beginmedeklinker |
2 |
|
de medeklinkers waarmee een woord begint, recursief |
3 |
|
de echte uitdaging: alle regels, ook die voor de |
Geef elke functie een docstring.
Stap 1: piglet_latin(s)¶
Geeft de vertaling van s in potjeslatijn, maar verplaatst alleen de éérste
letter als het woord met een medeklinker begint. De y telt hier altijd als
medeklinker.
Aanroep |
Resultaat |
|---|---|
|
|
|
|
|
|
Dat laatste is nog niet goed: bij straat horen alle drie de beginmedeklinkers achteraan. Dat komt in stap 3.
# jouw oplossing
assert piglet_latin("") == ""
assert piglet_latin("aap") == "aaphee"
assert piglet_latin("noot") == "ootnee"
assert piglet_latin("straat") == "traatsee"
Stap 2: initial_consonants(s)¶
Geeft een string met de medeklinkers waarmee s begint. Begint s met een
klinker, of is s leeg, dan geeft de functie de lege string terug. Gebruik
recursie.
Aanroep |
Resultaat |
|---|---|
|
|
|
|
Hint
Is het eerste teken een medeklinker, dan hoort het erbij, samen met de medeklinkers waarmee de rest begint. Is het een klinker, dan ben je klaar.
# jouw oplossing
assert initial_consonants("straat") == "str"
assert initial_consonants("noot") == "n"
assert initial_consonants("aap") == ""
assert initial_consonants("") == ""
Stap 3: pig_latin(s)¶
Geeft de vertaling van s in potjeslatijn, volgens alle regels, ook die voor de
y.
Aanroep |
Resultaat |
|---|---|
|
|
|
|
|
|
Hint
Gebruik initial_consonants uit stap 2. Weet je de beginmedeklinkers, dan zegt
hun lengte waar de rest van het woord begint. Behandel de y gevolgd door een
medeklinker vóórdat je initial_consonants aanroept.
# jouw oplossing
assert pig_latin("") == ""
assert pig_latin("aap") == "aaphee"
assert pig_latin("noot") == "ootnee"
assert pig_latin("straat") == "aatstree"
assert pig_latin("ypsilon") == "ypsilonhee"
assert pig_latin("yoghurt") == "oghurtyee"
Tot slot¶
Als je verder over dit probleem nadenkt, zul je merken dat niet alle gevallen
worden afgehandeld: de randgevallen. Wat moet pig_latin("gym") teruggeven? Je
mag zelf bepalen hoe je zulke woorden vertaalt.
Eelvee uccessee!