Since the time of the first mythical Yellow
Emperor in 2697 BC (the year 0 for the Chinese), the Chinese era presumes
a cycle of sixty years. Each year of this sixty years' cycle receives a
name that is put together based on cyclic sequences. The ten year cycle of
the Heavenly Stem (left table
below) combines the symbols yin and yang with the five elements. The
twelve year cycle of the Earthly Branch
(right table) uses the animals from the Chinese zodiac. In taking the next
name from both cycles, a 60 year cycle is obtained in which no duplicates
can be found.
The year 2011 from our era, for example,
corresponds with the year $2011 + 2697 - 1 = 4707$ from the Chinese era.
Note that we have to subtract an extra year when converting the years BC
from our era to the Chinese era. This is because the year zero doesn't exist
in our era. The rest after dividing 4707 by ten is 7, so this year
corresponds with the Heavenly Stem yin
metal. Analogically, 4707 gives rest 3 after being divided by
twelve. This corresponds with the Earthly Branch hare.
The year 2011 from our era is called the year yin
metal hare by the Chinese.
Assignment
- Write a function heavenlyStem
to which a whole number between zero and nine should be given as an
argument. This number represents an index from the cycle of the Heavenly
Stem. The function must print the corresponding name from the Heavenly
Stem as a result. Make sure to minimize the number of conditions that
need to be tested for function.
- Write a function earthlyBranch
to which a whole number between zero and eleven should be given as an
argument. This number represents an index from the cycle of the Earthly
Branch. The function must print the corresponding name from the cycle of
the Earthly Branch as a result.
- Use the functions heavenlyStem
and earthlyBranch to write
a function chineseYear, to
which a year from our era should be given as an argument. The function
must print the Chinese name of the year as a result.
Example
>>> heavenlyStem(3)
'yin fire'
>>> earthlyBranch(11)
'pig'
>>> chineseYear(2011)
'yin metal hare'
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.
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
- 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.
- 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.
- 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'