首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >感恩节是什么时候?

感恩节是什么时候?
EN

Code Golf用户
提问于 2015-11-25 18:01:54
回答 6查看 29.8K关注 0票数 38

背景

有些节日有固定的,容易记住的日期,如10月31日,12月25日等,然而,有些想麻烦。它们被指定为“9月的第一个星期一”或“11月的第四个星期四”。我怎么知道那是什么时候?

我只知道感恩节快到了,所以我需要一个程序来帮助我弄清楚什么时候是感恩节。有些人甚至说这是明天,所以你的程序需要尽可能短,以确保我能及时重新输入它。

挑战

创建一个程序或函数,给定一个四位数的年份(如2015或1984),输出或返回美国在该年的感恩节日期。根据维基百科页面的定义,感恩节是11月的第四个星期四。(提示:该页面还包含一些有关日期模式的有趣信息。)

输入:一个十进制数,最多四位数,代表公共时代的一年(C.E.)。例子: 987,1984,2101

产出:感恩节到来的日期,包括当月和日,如果有感恩节的话,会在该年下降。这可能是任何合理的格式,使用您的最佳判断。在所有情况下都要使用Gregorian,即使它当时没有使用。

(注意:确保正确处理闰年!)

测试用例输入1:

代码语言:javascript
复制
2015

产出1:

代码语言:javascript
复制
Nov 26

投入2:

代码语言:javascript
复制
1917

产出2:

代码语言:javascript
复制
Nov 22

评分

提交的分数将以字节为单位。我建议本网站跟踪您的字节计数,尽管您可以使用任何您喜欢的计数器。

奖金

-25%的分数,如果你把B.C.E.的日期作为负数处理(例如-480将是塞莫皮拉战役的一年)。

负测试用例输入:

代码语言:javascript
复制
-480

相应产出:

代码语言:javascript
复制
Nov 25

这是密码-高尔夫,所以最低分赢了!

编辑:我是标记托马斯邝其志的TI-基本提交为接受。不要让这阻碍你提交新的条目!

Leaderboards

这里有一个Stack代码片段,用于生成一个常规的领导板和一个按语言分列的获奖者概览。

为了确保您的答案显示出来,请使用下面的Markdown模板以标题开头:

代码语言:javascript
复制
# Language Name, N bytes

其中N是您提交的大小。如果你提高你的分数,你可以保持旧的分数在标题中,通过敲击他们。例如:

代码语言:javascript
复制
# Ruby, <s>104</s> <s>101</s> 96 bytes

如果您想在标题中包含多个数字(例如,因为您的分数是两个文件的总和,或者要分别列出解释器标志惩罚),请确保实际分数是标题中的最后一个数字:

代码语言:javascript
复制
# Perl, 43 + 2 (-p flag) = 45 bytes

您还可以将语言名称作为链接,然后将其显示在领导板片段中:

代码语言:javascript
复制
# [><>](http://esolangs.org/wiki/Fish), 121 bytes
代码语言:javascript
复制
var QUESTION_ID=64785,OVERRIDE_USER=45162;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?([\d.]+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
代码语言:javascript
复制
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
EN

回答 6

Code Golf用户

回答已采纳

发布于 2015-11-26 17:40:32

TI-BASIC,15字节* 0.75 = 11.25

在我的TI-84+计算器上测试

代码语言:javascript
复制
1129-dayOfWk(Ans+ᴇ4,9,1

感恩节是11月29日,减去9月1日那一周的那一天,那里1是星期天,7是星期六。这将以MMDD格式输出。

测试用例:2015 -> 11261917 -> 1122-480 -> 1125已得到验证。TI-BASIC似乎对所有日期都使用公历。

TI-BASIC不支持负年份,但这会得到额外的奖励,因为我们在输入中增加了10000。因为公历有400年的时间,这不会改变一周中的每一天。

票数 41
EN

Code Golf用户

发布于 2015-11-25 21:56:37

Python,38 * 0.75 = 28.5字节

代码语言:javascript
复制
lambda x:28.11-(x-2+x/4-x/100+x/400)%7

虽然我注意到,在公历中没有0岁,所以这种行为有点可疑,但这对负数年份起作用的方式在问题中是明确的。

票数 10
EN

Code Golf用户

发布于 2015-11-26 02:59:55

Golfscript,25 * 0.75 = 18.75字节

代码语言:javascript
复制
~.4/.25/.4/2---+7%28\--11

这使用了樱本的一周中的一天公式。因为有人这样做,所以输出以dd-mm的形式出现。以下是我先前提交的材料:

代码语言:javascript
复制
~.4/.25/.4/2---+7%"Nov "28@-
票数 3
EN
页面原文内容由Code Golf提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codegolf.stackexchange.com/questions/64785

复制
相关文章

相似问题

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