1271 : 梅花易数

时间限制Time Limit 1 Sec 内存限制Memory Limit 512 MB 提交次数Submitted 169 Times 通过次数Solved 57 Times 标准评测Standard Judge

题目描述Description

Alice 很喜欢梅花易数。他学习了梅花易数中的年月日起卦法。

按照年月日起卦法,起卦前需要知道某个时间对应的年月日,以及该时间对应的时辰。

对于年份\(y\),我们知道子年(Zi)数一、丑年(Chou)数二、寅年(Yin)数三、卯年(Mao)数四、辰年(Chen)数五、巳年(Si)数六、午年(Wu)数七、未年(Wei)数八、申年(Shen)数九、酉年(You)数十、戌年(Xu)数十一、亥年(Hai)数十二。

对于月\(m\)与日\(d\),即以农历对应的月、日为准。

而对于时辰\(h\),当时间位于子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥时辰时,其对应数字同年份一致。

根据梅花易数。起卦时,将\(y+ m+ d\)除以8的余数作为上卦 (当余数为 \(0\) 时,认为余数为 \(8\) ) 。上卦由三条爻竖直组成,每条爻要么是阳爻 (由一条连续横线构成) ,要么是阴爻 (由两条横线和中间的空格构成)。当余数分别为 1到 8时,对应的卦象形态分别为乾(☰)、兑(☱)、离(☲)、震(☳)、巽(☴)、坎(☵)、艮(☶)、坤(☷)。

随后,将\(y+m+d+h\)除以 \(8\)的余数作为下卦(同样,当余数为 \(0\)时,认为余数为 \(8\)) , 其对应卦象与上卦相同。

将这两步的上卦与下卦拼接起来,即能得到本卦。

而梅花易数又将 \(y+m+d+h\) 除以\(6\)的余数作为动爻(当余数为 \(0\)时,认为余数为 \(6\))。于是,将本卦从下往上数的对应爻翻转(即阴爻改为阳爻,阳爻改为阴爻)即可得到变卦。

现在,作为 Alice 的”好基友”,你需要帮他实现一个输入年、月、日、时,直接得出本卦和变卦图像的程序。为了方便实现,我们不妨假设 Alice 不会输入不合法的日期。

输入格式Input

输入一行包括四个部分组成,分别表示\(y,m,d,h\)

其中\(y,h\) 由十二地支的形式给定,保证其必为题中所给的十二种字符串之一。

\(m,d\) 以整数的形式给定,其中保证\(1 \leq m \leq 12\)\(1 \leq d \leq 31\)

输出格式Output

输出由\(13\)行构成 前\(6\)行为本卦,第\(7\)行为空行,后\(6\)行为变卦。

当卦象从上往下数的当前位为阴爻时,请在一行内输出”短线-空格-短线”的形式;当为阳爻时,请输出”短线-短线-短线”的形式。具体形式见样例。

请注意,不要输出行末空格。

样例Sample

提示Hint

取辰为\(5\), 申为\(9\)

故上卦 \(5+12+17=34\), \(34\)除以\(8\)\(2\)。得到上卦为兑”☱“。

而下卦 \(5+12+17+9=43\), \(43\)除以\(8\)\(3\)。得到下卦为离”☲“。

将上下卦拼接即得到本卦。

而动爻数为 \(43\) 除以\(6\)\(1\) , 故动爻为自下向上第一爻。将动爻翻转即得到变卦。