Maya教程之Maya历法
白羽 2018-08-09 来源 :网络 阅读 1778 评论 0

摘要:本文将带你了解Maya教程之Maya历法,希望本文对大家学Maya有所帮助

        本文将带你了解Maya教程之Maya历法,希望本文对大家学Maya有所帮助


在学术休假期间,M.A. Ya教授在古老的Maya历法上有一个惊人的发现。从一个古老的令人棘手的信息中,教授发现Maya文明以365天为一年,称为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、1、2、3、4。玛雅人认为这个月是不吉利的,法院不开庭,贸易停止了,人们甚至停止清扫地板。

       出于宗教的目的,Maya人使用另外一套历法,叫做Tzolkin(冬青年)。一年被分为13个期间,每个期间20天。每天被表示为由数字和日期名表示的数对。使用20个名字:imix、ik、akbal、kan、chicchan、cimi、manik、lamat、muluk、ok、chuen、eb、ben、ix、mem、cib、caban、eznab、canac、ahau,以及13个数字,双循环使用。

       请注意,每一天都有一个明确的描述。例如,在年初的日子被描述如下:

       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.Ya教授写一个程序,将Haab日历转换为Tzolkin日历。  


【输入形式】

       在Haab中日期用以下形式表示:

               NumberOfTheDay. Month Year

       输入文件的第一行包含文件中输入日期的数目。接下来的n行包含Haab日历格式的n个日期,年份小于5000。


【输出形式】

        Tzolkin日期用一下格式:

               Number NameOfTheDay Year

        输出包括n行,按照与输入日期对应的顺序,输出tzolkin日历格式日期。 


【样例输入】

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

【样例输出】

3 chuen 0
1 imix 0
9 cimi 2801

问题分析及边界条件
要处理的问题:

1.如何将haab转化为tzolkin历法。

2.如何处理tzolkin历法中类似于天干地支双循环的问题。

边界条件:

haab的第一天从0开始。
 haab最后一个月有5天。
算法设计
通过上述分析,将采用下面的方法解决相关问题:

将haab历法中的年月日,转化成我们现在历法中的总天数。
 然后根据总天数换算成tzolkin历法中的年月日。
详细设计(从算法到程序)
设计结构体,分别存有haab的年月日,同时设置成员函数,计算出总天数。
 使用string类型的字符串数组,记录haab的各个年份,tzolkin的各个天数。
 使用三重for循环进行数字和日期的双重循环的演化。
样例设计与测试

   测试样例一
   
   
   hAAb历法中的最后一个月
   
  
   样例输入
   
   
   3

   2.uayet 12

   5.uayet 156

   0.uayet 23
   
  
   样例输出
   
   
   11 akbal 18

   2 cimi 220

   7 cib 33
   
  


   测试样例二
   
   
   haab中的第一天
   
  
   样例输入
   
   
   2

   0.mol 155

   0.chen 45
   
  
   样例输出
   
   
   10 cib 218

   11 cimi 63
   
  


   测试样例三
   
   
   haab中的任意一天
   
  
   样例输入
   
   
   3

   15.pax 2018

   20.no 111

   4.xul 951
   
  
   样例输出
   
   
   7 cimi 2834

   9 cib 155

   ahau 135
   
  程序如下:

#include<iostream>
#include<string>
using namespace std;
string sstr[19]={"pop","no","zip","zotz","tzec","xul","yoxkin","mol","chen","yax","zac","ceh","mac","kankin","muan","pax","koyab","cumhu","uayet"};
struct Haab
{
    int num;
    string month;
    int year;
    int sum_days;
    void sum_of_days()
    {
        sum_days=0;
        for(int i=0;sstr[i]!=month;i++)
        {
            sum_days+=20; 
        }
        sum_days+=num+1;
        sum_days+=year*365;
    }
};
int main()
{
    int n;
    cin>>n;
    Haab h[n];
    char ch;
    for(int i=0;i<n;i++) 
    {
        cin>>h[i].num>>ch>>h[i].month>>h[i].year;
        h[i].sum_of_days();
    }
    string str[20]={"imix","ik","akbal","kan","chicchan","cimi","manik","lamat","muluk","ok","chuen","eb","ben","ix","mem","cib","caban","eznab","canac","ahau"};
    for(int ii=0;ii<n;ii++)
    {
        int year=0;
        int i=0;
        int k=0;
        int c=0;
        bool flag=1;
        
        for(;flag;year++)
        {
            for(i=0;i<13&&flag;i++)  //error 条件要并列起来,不要用 ,号 
            {
                for(k=0;k<20;k++)
                {
                    h[ii].sum_days--;
                    c++;
                    if(c==14)
                    {
                        c=1;
                    }
                    if(h[ii].sum_days==0)
                    {
                        flag=0;
                        break;
                    }
                }
            }
        }
        cout<<c<<" "<<str[k]<<" "<<year-1<<endl;
    }
    return 0;
}    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标常用软件之Maya频道!

本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 2 不喜欢 | 0
看完这篇文章有何感觉?已经有2人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程