ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 2011复活节就要到了,来个最短源代码比赛吧!

2011复活节就要到了,来个最短源代码比赛吧!

原创 Linux操作系统 作者:lastwinner 时间:2011-04-19 00:19:58 0 删除 编辑
本周日,也就是4月24日,是今年的复活节,复活节(Easter),是纪念耶稣基督复活的节日,西方信基督教的国家都过这个节。
复活节的日期是不固定的在西方教会传统里,春分之后第一次满月之后的第一个星期日即为复活节。东方教会则规定,如果满月恰逢星期日,则复活节再推迟一周。因此,节期大致在3月22日至4月25日之间。复活节是最古老最有意义的基督教节日之一,庆祝的是基督的复活,世界各地的基督徒每年都要举行庆祝。

节日的算法也不劳大家去找了

QUOTE:

现在有一个简便的算法供大家参考!

年份只限于1900年到2099年
1 设要求的那一年是Y年,从Y减去1900,其差记为N。
2 用19作除数去除N,余数记为A。
3 用4作除数去除N,不管余数,把商记为Q。
4 用19去除7A+1,把商记为B,不管余数。
5 用29去除11A+4-B,余数记为M。
6 用7去除N+Q+31-M,余数记为W。
7 计算25-M-W。

得出答数即可定出复活节的日期。若为正数,月份为4月,如为负数,月份为3月。若为0,则为3 月31日。
现在提出比赛要求:
  1. 用最短的代码,求出2011~2099之间的复活节,具体为:

    • Q1:2011~2099之间每一年的复活节的具体日期
    • Q2:2011~2099之间,几月几号出现得最多?3月出现得最多的是几号?4月出现得最多的又是几号?分别出现了多少次?
    • Q3:2011~2099之间的复活节,3月22日至4月25日之间哪些日子没有出现过?
    • Q4:2011~2099之间“愚蛋节”的次数,即4月1日同时又是复活节的数量以及都在哪些年份出现。
  • 答案要求用Package给出,package名为easter:

    • package声明为create or replace package easter
    • Q1的声明为procedure showAllEasterDay,无参数,输出为一列表,形式如下所示:
      YEAR     DAY
      2011    04-24
      2012    04-08
      …………
    • Q2的声明为procedure showMaxOccurenceEasterDay,无参数,输出为一行数据,日期后面跟着输出出现的次数,如果是多个日期,则按从小到达,用“/”分隔显示,形式如下所示:
      MAXOCC   MO_CNT        MAXOCC_3   MO3_CNT              MAXOCC_4          MO4_CNT   
      xx-xx                x1               03-xx                 x2            04-xx/04-yy                       x3
    • Q3的声明为procedure showLeapEasterDay,无参数,连续未出现的日期用一行显示,输出为一列表,形式如下所示:
      ABSENT_START      ABSENT_END
      03-22                             03-25
      04-02                             04-02
      04-11                             04-22
      ………………(以上为示例数据,并非真实数据)
    • Q4的声明为procedure showFoolEasterDay,无参数,输出为一列表,形式如下所示:
      YEAR        TOTAL
      yyyy1            xx
      yyyy2            xx
      …………
      yyyyn            xx
    1. 包名和Q1~Q4的四个过程必须按约定给出,若需要在包中加入其他过程,请自便,但需要注意,目标是源代码字节数最小哦!空格、TAB、CR、LF都不算字节数,代码中不要包含注释,注释请写在另外的文件中,4月22日提交你的结果,期间可在本帖随意show你的代码的字节数
          特别注意:此次比赛没有奖品
          未尽事宜可参考 http://www.itpub.net/viewthread.php?tid=977079&extra=page%3D5%26amp%3Bfilter%3Ddigest ,俺困了,今天先睡觉去了

          [ 本帖最后由 lastwinner 于 2011-4-19 00:17 编辑 ]
        1. 来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29867/viewspace-692800/,如需转载,请注明出处,否则将追究法律责任。

          请登录后发表评论 登录
          全部评论

          注册时间:2007-12-12

          • 博文量
            223
          • 访问量
            2830893