首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >东正教复活节计算器

东正教复活节计算器
EN

Code Review用户
提问于 2014-10-29 11:22:40
回答 1查看 133关注 0票数 5

我有计算正统复活节日期的代码,当我看到if-else部分时,它让我哭泣。请给出你的建议,如何使它发光(如果可能)。

我想我可以将日/月格式化为DateTime格式,但恐怕会带来更多的混乱。

通过,它工作得很好。

来源

代码语言:javascript
复制
puts "- Hello, I'm EasterEvaluator. I can tell you when will be(or was) Easter."
puts "- Please enter the year which you'r interested in:"
year = gets.chomp.to_i
a = year % 19
b = year % 4
c = year % 7
d = (19*a+15) % 30
e = (2*b + 4*c + 6*d + 6) % 7
f = d + e
if f<=9 
    easter = 22+f
    easter = easter + 13 if year > 1918
    if easter > 31
        easter = easter - 31
        month = "April"
    else
        month = "March"
    end
else
    easter = f-9
    easter = easter + 13 if year > 1918
    if easter > 30
        easter = easter-30 
        month = "May"
    else 
        month = "April"
    end
end

puts "- In #{year}, Easter is going to be on #{easter} of #{month}."
EN

回答 1

Code Review用户

回答已采纳

发布于 2014-10-29 17:48:24

完全未经测试的psuedo代码,但关键是实现f=从3月22日到东正教复活节的天数。

代码语言:javascript
复制
(* f gives Easter as the number of days since March 22 *) 

easter = f+22+(year<1918)*13 

month = "March"; # default 
if f > 31 {month="April"; day=f-31} 
if f > 61 {month="May"; day=f-61} 

你也可以发到http://codegolf.stackexchange.com

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/68263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档