var QUESTION_ID=66656,OVERRIDE_USER=16196;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/66656/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://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;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}#answer-list{padding-right: 100px}
<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>
Ответы:
Желе, 9 байт
Это монадическая цепочка, которая принимает целочисленный аргумент командной строки в качестве входных данных. Он использует мой
(x+5+(x%4)**3%7)
алгоритм.Попробуй это здесь . Хотя это текущая версия Jelly, она также работает в этой версии , которая предшествует вызову. (Спасибо @Dennis!)
источник
Mathematica,
45372724 байтаУлучшения благодаря @ MartinBüttner (10 байтов) и @ChipHurst (еще 3 байта).
источник
#+5[6,6,11][[#~Mod~4]]&
5[6, 6, 11][[0]]
:)CJam,
211211 байт@martin нашел очень простой метод!
Попробуй это здесь .
РЕДАКТИРОВАТЬ: Спасибо, Деннис!
источник
5 6 6 11
трюк, который использовался в других ответах, но список закодирован как «цифры 9587 в базе 12» .gs2, 12 байт
Перевод моего ответа CJam. Кодируется в CP437 как обычно. Попробуйте онлайн !
источник
JavaScript (ES6),
504920 байт (без бонусов)Алгоритм @martin оказался намного меньше, поэтому я пошел с ним.
Я выбрал математический подход, потому что JavaScript имеет тенденцию быть многословным. Код достаточно короткий, чтобы бонусы только увеличивали его.
Вот мой предыдущий ответ (49 байт) и мой оригинальный ответ (50 байт):
F=(a,b=a)=>((a+--a/4|0)-(b++/4+b|0))%7?F(++a,b):b
F=(a,b=a)=>(f=c=>(c--+c/4|0)%7)(a)-f(++b)?F(a,b):b
Они работают, беря год и вычисляя число (0-6), чтобы представить «начальный день года». Поскольку диапазон дат для этого испытания находится в диапазоне лет, которые следуют простым правилам високосного года (без пропусков в 2000 году), рассчитать его довольно просто. Тогда это просто вопрос сравнения вперед, чтобы найти годы, которые начинаются с одинакового значения. Рекурсия оказалась самым лаконичным способом сделать это.
источник
Pyth,
141211 байтовЧетыре байта в строке должны быть
05 06 06 0B
.РЕДАКТИРОВАТЬ: Спасибо, FryAmTheEggman!
РЕДАКТИРОВАТЬ: Спасибо, Деннис!
источник
JavaScript (ES6), 104 байта - бонус 50% = 52
объяснение
Тест
Показать фрагмент кода
источник
Машинный код Z80, 12 байт
Процедура Z80, которая будет сохранена
0000h
, вызывается со входом inHL
, и все остальные регистры очищаются:Первые три инструкции являются «NOP», но они проиндексированы как данные позже в коде. По возвращении, выход в
HL
.источник
DE
и, следовательно, вы можете использоватьLD A, 3; AND E; LD L, A; LD L, (HL);
?Питон 3,
14010010284,5154 * 0,5 = 77 байтВозможно, я мог бы написать лучшее решение с помощью алгоритма Сакамото, но сейчас это подойдетЯ был прав. Вот реализация с использованием алгоритма Сакамото.
Объяснение:
источник
w="SMTWTFSuouehranneduit"
печатиw[d(i)::7]
?Серьезно,
3517 байт[5,6,6,11]
трюк спасает день.Попробуйте онлайн
Объяснение:
Старая версия:
Попробуйте онлайн
Объяснение:
Алгоритм Сакамото:
источник
C, 31 байт
После редактирования вопроса, который ограничивает диапазон ввода до 1970-2090, это становится довольно тривиальным:
Без не високосных лет столетия есть простая последовательность 5,6,6,11 интервалов для первого повторения того же дня.
Полное решение исходной задачи (не ограничено 2090), 90 байт:
Тестовая программа:
Тестовый забег:
источник
R
143136 * 0,5 = 68 байтИспользуйте
%A
для полного имени дня вместо `% a, зависит от желаемого состояния.R 120 * 0,7 = 84 байта
R, 90 байт
Все ответы выше являются производной работой, основанной на ответе @plannapus. Использование
;
разделителя, чтобы избежать необходимостиsource
файла или запустить его как скрипт в командной строке.источник
weekdays
, милая.R 145 байт -50% -> 72,5
Примеры:
R, 97 байт (без бонуса)
С отступом, с новыми строками:
Тестовые случаи:
источник
;
...y=scan;
и используя,x=y<-scan()+1
я думаю,as.POSIXlt(paste(y,1),,"%Y %j")$wday
качестве своего тела функцийscan
во второй строке будет отображаться как ввод.x=y<-scan()+1
с 2014 года в качестве стандартного ввода даст вам х = 2015 и у = 2015 (т.е. присвоениеy <- scan()+1
) , и если вы попытаетесь сделатьx=1+y<-scan()
это даст вам ошибку (Error in 1 + y <- scan() : target of assignment expands to non-language object
) , потому что он пытается назначитьscan()
на1+y
....$wday
будет номер дня недели: но здесь мне нужно название дня недели, чтобы я мог напечататьAdvance Happy New Year, 2012 (Sun)
VBA, 130 * 0,50 = 65 байт
VBA делает поиск дней недели таким простым ... Если бы это было не так уж многословно.
источник
PHP, 120
139байт - 50% = 60 байтФункциональный подход:
Принимает один ввод из командной строки, например:
Путь ООП, как всегда, длиннее (143 байта):
Правки
+1year
, я теперь просто увеличиваю данный год.-1-1
в переменной.источник
C, оценка
5352 (104 байта)Идея заимствована у Тоби Спейта ; добавлен бонусный дисплей дня недели.
Укоротил строку, сдвинув коды символов в более удобный диапазон. Нужно было выбрать правильную величину сдвига (например, 43), чтобы заставить
x*5/4%7
работать код вычисления короткого рабочего дня .источник
" !!&"
.Mathematica, 145 * 50% =
7473.572.5 bytesUses standard date functions.
источник
Pyth, 23 bytes
Doesn't qualify for any of the bonuses.
Try it here.
Similar to the pure python answer.
источник
Java,
(1-.2)*323(1-.5)*350348339 =258.4175174169.5 bytesUgh.
Ungolfed:
Try it online!
Thanks to @Kenney for pointing out that I could shorten with
new Long
andprintf
! :Dисточник
long y=new Long(a[0])
saves 6 (12) bytes, and usingprintf
saves another 3 (6).GNU coreutils,
525149 bytes(98 bytes program - 50% bonus)
Input is from command-line argument, and output is to stdout.
Explanation
Test run:
All locale settings can be
C
orPOSIX
.Limitation: this only works up to year 2147485519 (though the question is now changed to permit a lower limit).
источник
MATL, 28 bytes
Example
Code explained
источник
Perl 6,
7023 bytesusage:
источник
J, 14 bytes
источник
Japt, 12 bytes
As with the Pyth answer, the four bytes in the string should be
05 06 06 0B
. Try it online!источник
Jelly, 14 bytes
Try it online!
Until today, Jelly had no array indexing, so the above will have to do. Since the latest commit, array indexing has been implemented as
ị
, giving the following solution (10 bytes).Try it online!
источник
Pyth, 35 bytes
Try it online.
источник
C# (6.0) .Net Framework 4.6 173 Bytes - 30% = 121.1 Bytes
источник
Javascript ES7, 17 bytes
It's my first time using JS. I found this using a Python script, and I believe it to be optimal. It works because
0**3
is 0 mod 7,1**3
and2**3
are both 1, and3**3
is 6.источник
**
an ES7 feature? Or are you using Babel?Python, 23 bytes
A port of my JavaScript answer.
источник
Pyth, 12 bytes
Try it online! or Check out the Test Suite.
Pyth, 18 bytes
This second approach is mainly a golf of @wizzwizz4's Pyth answer.
Try it online! or Check out the Test Suite.
Explanation
источник