Rebol3 Code Examplex
Chinese zodiac
Determine the zodiac animal and related cycle from a given year.
Rebol [
title: "Rosetta code: Chinese zodiac"
file: %Chinese_zodiac.r3
url: https://rosettacode.org/wiki/Chinese_zodiac
note: "Translated from Julia"
]
chinese: function/with [year [integer!]] [
cycleyear: year - base
stemnumber: 1 + cycleyear % 10
stemhan: celestial/:stemnumber
stempinyin: pinyin/:stemhan
elementnumber: 1 + stemnumber / 2
element: elements/:elementnumber
branchnumber: 1 + cycleyear % 12
branchhan: terrestrial/:branchnumber
branchpinyin: pinyin/:branchhan
animal: animals/:branchnumber
aspectnumber: 1 + cycleyear % 2
aspect: aspects/:aspectnumber
index: 1 + cycleyear % 60
rejoin [
year ": " stemhan branchhan
" (" stempinyin "-" branchpinyin ", "
element " " animal "; "
aspect " - year " index " of the cycle)"
]
][
pinyin: make map! [
"甲" "jiă" "乙" "yĭ" "丙" "bĭng" "丁" "dīng"
"戊" "wù" "己" "jĭ" "庚" "gēng" "辛" "xīn"
"壬" "rén" "癸" "gŭi" "子" "zĭ" "丑" "chŏu"
"寅" "yín" "卯" "măo" "辰" "chén" "巳" "sì"
"午" "wŭ" "未" "wèi" "申" "shēn" "酉" "yŏu"
"戌" "xū" "亥" "hài"
]
elements: ["Wood" "Fire" "Earth" "Metal" "Water"]
animals: ["Rat" "Ox" "Tiger" "Rabbit" "Dragon" "Snake"
"Horse" "Goat" "Monkey" "Rooster" "Dog" "Pig"]
celestial: ["甲" "乙" "丙" "丁" "戊" "己" "庚" "辛" "壬" "癸"]
terrestrial: ["子" "丑" "寅" "卯" "辰" "巳" "午" "未" "申" "酉" "戌" "亥"]
aspects: ["yang" "yin"]
base: 4
]
foreach year reduce [1935 1938 1968 1972 1976 now/year][
print chinese year
]