Chinese zodiac: Difference between revisions
Content added Content deleted
Alextretyak (talk | contribs) (Added 11l) |
(Added Algol 68) |
||
Line 268: | Line 268: | ||
1985 is the year of Wood Ox (yin). 乙丑 |
1985 is the year of Wood Ox (yin). 乙丑 |
||
2017 is the year of Fire Rooster (yin). 丁酉 |
2017 is the year of Fire Rooster (yin). 丁酉 |
||
</pre> |
|||
=={{header|ALGOL 68}}== |
|||
{{Trans|AWK}} |
|||
<lang algol68>BEGIN # Chinese Zodiac # |
|||
# returns s right-padded with blanks to w characters, or s if s is already at least w characters long # |
|||
PRIO PAD = 1; |
|||
OP PAD = ( STRING s, INT w )STRING: |
|||
BEGIN |
|||
STRING result := s; |
|||
WHILE ( ( UPB result + 1 ) - LWB s ) < w DO result +:= " " OD; |
|||
result |
|||
END # PAD # ; |
|||
[]STRING animal name = ( "Rat", "Ox", "Tiger", "Rabbit", "Dragon", "Snake" |
|||
, "Horse", "Goat", "Monkey", "Rooster", "Dog", "Pig" |
|||
); |
|||
[]STRING element name = ( "Wood", "Fire", "Earth", "Metal", "Water" ); |
|||
[]INT test year = ( 1935, 1938, 1968, 1972, 1976, 1984, 1985, 2017 ); |
|||
print( ( "year element animal aspect", newline ) ); |
|||
FOR i FROM LWB test year TO UPB test year DO |
|||
INT year = test year[ i ]; |
|||
STRING element = element name[ ( ( year - 4 ) MOD 10 OVER 2 ) + 1 ]; |
|||
STRING animal = animal name[ ( year - 4 ) MOD 12 + 1 ]; |
|||
STRING yy = IF ODD year THEN "Yin" ELSE "Yang" FI; |
|||
print( ( whole( year, -4 ), " ", element PAD 7, " ", animal PAD 7, " ", yy, newline ) ) |
|||
OD |
|||
END</lang> |
|||
{{out}} |
|||
<pre> |
|||
year element animal aspect |
|||
1935 Wood Pig Yin |
|||
1938 Earth Tiger Yang |
|||
1968 Earth Monkey Yang |
|||
1972 Water Rat Yang |
|||
1976 Fire Dragon Yang |
|||
1984 Wood Rat Yang |
|||
1985 Wood Ox Yin |
|||
2017 Fire Rooster Yin |
|||
</pre> |
</pre> |
||