/
ch-1.py
45 lines (37 loc) · 1.47 KB
/
ch-1.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/opt/local/bin/python
#
# See ../README.md
#
#
# Run as python ch-1.py < input-file
#
#
# We're reading years from standard input, one year per line, outputting
# years from the sexagenary cycle [1]. This is slightly more than what
# the challenge ask; the challenge asks to output the heavenly stem [2],
# and the earthly branch [3]. But we also output its Yin/Yang.
#
# [1] https://en.wikipedia.org/wiki/Sexagenary_cycle
# [2] https://en.wikipedia.org/wiki/Heavenly_Stems
# [3] https://en.wikipedia.org/wiki/Earthly_Branches
#
#
# Each of the cycles have been rotated so the first entry corresponds to
# the year 0 in the Proleptic Gregorian calendar. (We're using the
# convention of having a year 0, as per ISO 8601).
# That way, we can just mod the year with the number of entries, without
# first having to subtract something from the year.
#
# The heavenly stems last for 2 years, so we just duplicate the entries.
#
yin_yang = ["Yang", "Yin"]
heavenly_stems = ["Metal", "Metal", "Water", "Water", "Wood", "Wood",
"Fire", "Fire", "Earth", "Earth"]
earthly_branches = ["Monkey", "Rooster", "Dog", "Pig", "Rat", "Ox",
"Tiger", "Rabbit", "Dragon", "Snake", "Horse", "Goat"]
import fileinput
for year in fileinput . input ():
year = int (year)
print (yin_yang [year % len (yin_yang)],
heavenly_stems [year % len (heavenly_stems)],
earthly_branches [year % len (earthly_branches)])