Sinds de tijd van de eerste mythische Gele Keizer in 2697 voor Christus (het jaar 0 voor de Chinezen), gaat de Chinese jaartelling uit van een cyclus van zestig jaar. Elk jaar van deze zestigjarige cyclus krijgt een naam die wordt samengesteld op basis van twee cyclische reeksen. De tienjarige cyclus van de Hemelse Stam (linker tabel hieronder) combineert de symbolen yin en yang met de vijf elementen. De twaalfjarige cyclus van de Aardse Tak (rechter tabel hieronder) gebruikt de dieren uit de Chinese dierenriem. Door ieder jaar een volgende naam uit beide cycli te nemen, wordt een cyclus van 60 jaar bekomen waarin geen duplicaten voorkomen.

index yin/yang element
0 yang hout
1 yin hout
2 yang vuur
3 yin vuur
4 yang aarde
5 yin aarde
6 yang metaal
7 yin metaal
8 yang water
9 yin water
index dierenriem
0 rat
1 buffel
2 tijger
3 haas
4 draak
5 slang
6 paard
7 geit
8 aap
9 kip
10 hond
11 varken

Het jaar 2011 uit onze jaartelling correspondeert bijvoorbeeld met het jaar $$2011 + 2697 - 1 = 4707$$ uit de Chinese jaartelling. Let hierbij op het feit dat we een extra jaar moeten aftrekken bij de omzetting van jaartallen na Christus uit onze jaartelling naar de Chinese jaartelling. Dit omdat het jaar nul in onze jaartelling niet bestaat. De rest na deling van 4707 door tien is 7, waardoor dit jaar correspondeert met de Hemelse Stam yin metaal. Analoog geeft 4707 na deling door twaalf rest 3, waardoor dit jaar correspondeert met de Aardse Tak haas. Het jaar 2011 uit onze jaartelling wordt door de chinezen dus het jaar yin metaal haas genoemd.

Opgave

  1. Schrijf een functie hemelseStam waaraan een geheel getal tussen nul en negen als argument moet doorgegeven worden. Dit getal stelt een index uit de cyclus van de Hemelse Stam voor. De functie moet de corresponderende naam uit de cyclus van de Hemelse Stam als resultaat teruggeven. Zorg er voor dat het aantal voorwaarden dat door deze functie moet getest worden zo klein mogelijk gehouden wordt.

  2. Schrijf een functie aardseTak waaraan een geheel getal tussen nul en elf als argument moet doorgegeven worden. Dit getal stelt een index uit de cyclus van de Aardse Tak voor. De functie moet de corresponderende naam uit de cyclus van de Aardse Tak als resultaat teruggeven.

  3. Gebruik de functies hemelseStam en aardseTak om een functie chineesJaar te schrijven, waaraan een jaartal uit onze jaartelling als argument moet doorgegeven worden. De functie moet de chinese benaming van dat jaar als resultaat teruggeven.

Voorbeeld

>>> hemelseStam(3)
'yin vuur'
>>> aardseTak(11)
'varken'
>>> chineesJaar(2011)
'yin metaal haas'