1271 : 梅花易数
题目描述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\) , 故动爻为自下向上第一爻。将动爻翻转即得到变卦。
