计算13日星期五的未来事件

Ada*_*vis 7 language-agnostic algorithm datetime

我希望能够从一年开始,并计算13日星期五的事件.蛮力解决方案简单明了.我有一些稍好的东西,但我毫不怀疑其他人可以为此提出一个优雅的算法.

也许有点棘手,我有兴趣给这个项目一个月,然后让它找到那个月的第三年星期五.

随意使用伪代码,但我希望人们会用你喜欢的语言投票更多地使用代码示例.

Dev*_*rre 10

由于您的强力算法显然是直观的逐日迭代选项,您可能还没有考虑过世界末日算法.这将允许您简单地检查第13个星期五是否是星期五.据我所知,这是解决问题的最有效方法.


nlu*_*oni 10

任何以星期日开始的月份都会在十三号星期五举行.只有14种组合可能知道今年的第一天是哪一天(有或没有闰年,太阳坐).你应该只计算一次并完成它.你只需要检查14*12个可能的月份开始,理由是这样.

结果表元素(自2009年,2010年):

[Thursday,false] => Feb, March, Nov
[Friday,false] => Aug
Run Code Online (Sandbox Code Playgroud)

填写表格你有一个月的通用月份(31),2月(28)..然后用一周的每一天的种子迭代,注意从星期日开始的月份,以及闰年和没有.很直接,一旦完成,你可以与我们分享:)

  • 这是最快的表格方法,afaict.工作日有14种类型 - 非闰年7种,闰年7种,12个月.一旦你知道1月1日的哪一天落在何处,以及它是否是闰年,二维或三维阵列都能提供非常快速的答案 - 两者都很容易计算. (2认同)