0017-玛雅历

作者: 指尖极光 | 来源:发表于2017-03-13 17:51 被阅读11次

问题描述

上周末,M.A 教授对古老的玛雅有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛雅人使用了一个一年有 365 的叫做 Haab 的日历。这个Haab 日历拥有 19 个月, 在开始的 18 个月,一个月有 20 天, 月份的名字分别是 pop, no,zip, zotz, tzec, xul, yoxkin, mol, chen, yax, zac, ceh, mac, kankin, muan, pax, koyab, cumhu.这些月份中的日期用 0 到 19 表示。Haab 历的最后一个月叫做 uayet,它只有 5 天,用 0到 4 表示。玛雅人认为这个日期最少的月份是不吉利的,在这个月法庭不开庭,人们不从事交易,甚至没有人打扫屋中的走廊。
因为宗教的原因,玛雅人还使用了另一个日历,在这个日历中年被称为 Tzolkin(holly年),一年被分成 13 个不同的时期,每个时期有 20 天,每一天用一个数字和一个单词相组合的形式来表示。使用的数字是 1~13,使用的单词共有 20 个,它们分别是:imix,ik, akbal, kan, chicchan, cimi, manik, lamat, muluk, ok, chuen, eb, ben, ix, mem, cib, caban,eznab, canac, ahau。注意:年中的每一天都有着明确的描述,比如,在一年的开始,日期如下描述: 1 imix, 2 ik, 3 akbal, 4 kan, 5 chicchan, 6 cimi, 7 manik, 8 lamat, 9 muluk, 10 ok, 11 chuen, 12 eb, 13 ben, 1 ix, 2 mem, 3 cib, 4 caban, 5 eznab, 6 canac, 7 ahau, ,8 imix, 9 ik, 10 akbal . . . 。也就是说数字和单词各自独立循环使用。

Haab 历和 Tzolkin 历中的年都用数字 0,1,...表示,数字 0 表示世界的开始。所以第一天被表示成:
Haab: 0. pop 0
Tzolkin: 1 imix 0
请帮助 M.A.教授写一个程序可以把 Haab 历转化成 Tzolkin 历。

输入

Haab 历中的数据由如下的方式表示:
日期. 月份 年数
第一行表示要转化的 Haab 历的数据量。下面的每一行表示一个日期,年数小于5000。

输出

Tzolkin 历中的数据由如下的方式表示:
天数字 天名称 年数
第一行表示需要转化的 Haab 历的数据量。下面的每一行表示一个日期。

输入样列

3
10. zac 0
0. pop 0
10. zac 1995

输出样例

3
3 chuen 0
1 imix 0
9 cimi 2801

算法实现

using System;

namespace Questions{
    class Program{
        public static void Main(string[] args){
            string[] tzolkin = {
                "imix","ik","akbal","kan","chicchan",
                "cimi","manik","lamat","muluk","ok",
                "chuen","eb","ben","ix","mem","cib",
                "caban","eznab","canac","ahau" };
            string[] haab = { 
                "pop","no","zip","zotz","tzec",
                "xul","yoxkin","mol","chen","yax",
                "zac","ceh","mac","kankin","muan",
                "pax","koyab","cumh" }; 

            int n = int.Parse(Console.ReadLine());
            while(n > 0){
                n--;
                string input = Console.ReadLine();
                string[] data = input.Split();
                int sum = int.Parse(data[2])*365;
                for (int i = 0; i < 19; i++) {
                    if (data[1].Equals(haab[i])) {
                        break;
                    }
                    sum += 20;
                }
                int dayHaab = 0;
                int j = 0;
                while (true) {
                    if (data[0][j] == '.')
                        break;
                    dayHaab = dayHaab * 10 + data[0][j++] - '0';
                }
                sum += dayHaab;
                int year = sum / 260;
                sum = sum % 260;
                string moon = tzolkin[sum % 20];
                //在Haab中0是每个月第一天所有,而Tzolkin1是每个月的第一天
                int day = (sum+1) % 13;
                if (day == 0)
                    day = 13;
                Console.WriteLine("{0} {1} {2}", day, moon, year);
            }
            Console.ReadKey();
        }
    }
}

相关文章

  • 0017-玛雅历

    问题描述 上周末,M.A 教授对古老的玛雅有了一个重大发现。从一个古老的节绳(玛雅人用于记事的工具)中,教授发现玛...

  • 13月亮历

    1。玛雅文明的故事。 2。玛雅日历-卓尔金历,哈布历,长计历。 3。古玛雅与时间法则 4。荷西博士 5。玛雅人在地...

  • 玛雅历能为你带来什么

    很多人问我玛雅历是占卜吗?是算命吗? NO ! 玛雅历不是占卜,不是算命! 玛雅历即十三月亮历是一个工具!一个工具...

  • 玛雅五大印记的解读

    我的玛雅印记的解读 玛雅历...

  • 许自己一个新契机,时间可以治愈一切,包括拖延症。

    13月亮历(玛雅历)

  • 玛雅历是什么?

    经常有小伙伴问我,玛雅历是什么?就是那个预言世界灭亡的民族的历法吗? 今天,我们就来科普一下玛雅历。玛雅历又称13...

  • 把握生命能量的潮汐~《玛雅日历2012》

    很久之前就耳闻过玛雅历,也追随欣频老师去南美,亲历玛雅历传播者安娜老师每日活在玛雅历的指引中,而真正深入去学习和感...

  • 对等kin计算

    第一步 将阳历生日转玛雅历生日 例:阳历2月20日➡️玛雅历8月14。如下图小字为阳历: 第二步:根据自己的玛雅历...

  • 玛雅天赋:20个图腾解读

    玛雅天赋起源于玛雅历法中的卓尔金历。 卓尔金历是玛雅历法中的神历,由20个图腾和13个数字,不断组合循环,就像中国...

  • 20个玛雅图腾

    玛雅天赋起源于玛雅历法中的卓尔金历。 卓尔金历是玛雅历法中的神历,由20个图腾和13个数字,不断组合循环,就像中国...

网友评论

    本文标题:0017-玛雅历

    本文链接:https://www.haomeiwen.com/subject/bacqnttx.html