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>
Réponses:
Gelée, 9 octets
Il s'agit d'une chaîne monadique qui prend un argument de ligne de commande entier en entrée. Il utilise mon
(x+5+(x%4)**3%7)
algorithme.Essayez ici . Bien que ce soit la version actuelle de Jelly, cela fonctionne également dans cette version , antérieure au défi. (Merci @Dennis!)
la source
Mathematica,
45372724 octetsAméliorations grâce à @ MartinBüttner (10 octets) et à @ChipHurst (3 octets supplémentaires).
la source
#+5[6,6,11][[#~Mod~4]]&
5[6, 6, 11][[0]]
:)CJam,
211211 octets@martin a trouvé une méthode très simple!
Essayez-le ici .
EDIT: Merci, Dennis!
la source
5 6 6 11
astuce que dans d'autres réponses, mais la liste est codée comme "les chiffres de 9587 en base 12" .gs2, 12 octets
Traduction de ma réponse CJam. Encodé dans CP437 comme d'habitude. Essayez-le en ligne !
la source
JavaScript (ES6),
504920 octets (pas de bonus)L'algorithme de @martin se révèle beaucoup plus petit, alors je suis parti avec.
J'ai choisi une approche mathématique car JavaScript a tendance à être prolixe. Le code est suffisamment court pour que les bonus ne le rendent que plus long.
Voici ma réponse précédente (49 octets) et ma réponse originale (50 octets):
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
Ils travaillent en prenant l'année et en calculant un nombre (0-6) pour représenter le "jour de début de l'année". Étant donné que la plage de dates de ce défi est comprise dans la plage d'années qui suivent les règles simples des années bissextiles (ne pas ignorer 2000), le calcul est relativement simple. Ensuite, il suffit de comparer en avant pour trouver les années qui commencent avec la même valeur. La récursivité s'est avérée être le moyen le plus concis de procéder.
la source
Pyth,
141211 octetsLes quatre octets de la chaîne devraient être
05 06 06 0B
.EDIT: Merci, FryAmTheEggman!
EDIT: Merci, Dennis!
la source
JavaScript (ES6), 104 octets - 50% de bonus = 52
Explication
Tester
Afficher l'extrait de code
la source
Code machine Z80, 12 octets
Une procédure Z80 à stocker dans
0000h
, appelée avec l'entrée dansHL
et tous les autres registres effacés:Les trois premières instructions sont des "NOP", mais sont indexées en tant que données plus tard dans le code. Au retour, la sortie est en
HL
.la source
DE
et donc vous pouvez utiliserLD A, 3; AND E; LD L, A; LD L, (HL);
?Python 3,
14010010284,5154 * 0.5 = 77 octetsJe pourrais probablement écrire une meilleure solution avec l'algorithme de Sakamoto, mais cela ira pour le moment.J'avais raison. Voici une implémentation utilisant l'algorithme de Sakamoto.
Explication:
la source
w="SMTWTFSuouehranneduit"
et ensuite imprimerw[d(i)::7]
?Sérieusement,
3517 octets[5,6,6,11]
astuce sauve la journée.Essayez-le en ligne
Explication:
Ancienne version:
Essayez-le en ligne
Explication:
Algorithme de Sakamoto:
la source
C, 31 octets
Suite à la modification de la question qui limite la plage d’entrée à 1970-2090, cela devient assez trivial:
Sans les années non bissextiles, il existe une simple séquence d'intervalles 5,6,6,11 pour la première répétition du même jour.
Solution complète au problème initial (non limité à 2090), 90 octets:
Programme de test:
Essai:
la source
R,
143136 * 0,5 = 68 octetsUtilisez
%A
le nom de la journée complète au lieu de «% a», selon l’état souhaité.R, 120 * 0,7 = 84 octets
R, 90 octets
Toutes les réponses ci-dessus sont des travaux dérivés basés sur la réponse @plannapus. Utilisez le
;
séparateur pour éviter d’avoir besoinsource
du fichier ou de l’exécuter en tant que script en ligne de commande.la source
weekdays
, gentil.R, 145 octets -50% -> 72,5
Exemples:
R, 97 octets (sans bonus)
En retrait, avec de nouvelles lignes:
Cas de test:
la source
;
...y=scan;
et en utilisant,x=y<-scan()+1
je penseas.POSIXlt(paste(y,1),,"%Y %j")$wday
de votre corps fonctionnelscan
lirez la deuxième ligne comme entrée.x=y<-scan()+1
avec 2014 comme stdin vous donnera x = 2015 et y = 2015 (c'est-à-dire que l'affectation esty <- scan()+1
) et si vous essayez de le faire,x=1+y<-scan()
cela vous donnera une erreur (Error in 1 + y <- scan() : target of assignment expands to non-language object
) car il essaie d'assignerscan()
à1+y
....$wday
sont le numéro du jour de la semaine: mais ici, j'ai besoin du nom du jour de la semaine afin que je puisse imprimerAdvance Happy New Year, 2012 (Sun)
VBA, 130 * 0,50 = 65 octets
VBA facilite la recherche des jours de la semaine ... Si seulement ce n'était pas aussi prolixe à ce sujet.
la source
PHP, 120
139octets - 50% = 60 octetsUne approche fonctionnelle:
Prend une entrée de la ligne de commande, comme:
La méthode POO semble être plus longue, comme toujours (143 octets):
Édite
+1year
simplement l’année donnée.-1-1
dans une variable.la source
C, note
5352 (104 octets)Idée empruntée à Toby Speight ; ajout de l'affichage bonus du jour de la semaine.
Raccourcissez la chaîne en déplaçant les codes de caractères dans une plage plus confortable. Dû choisir le bon montant (par exemple 43) pour que le code de calcul de jour court
x*5/4%7
fonctionne.la source
" !!&"
.Mathematica, 145 * 50% =
7473,572,5 octetsUtilise les fonctions de date standard.
la source
Pyth, 23 octets
Ne se qualifie pour aucun des bonus.
Essayez ici .
Semblable à la réponse en python pur.
la source
Java,
(1 à 0,2) * 323(1 à 0,5) *350348339 =258,4175174169,5 octetsPouah.
Ungolfed:
Essayez-le en ligne!
Merci à @Kenney pour avoir signalé que je pouvais raccourcir avec
new Long
etprintf
! :RÉla source
long y=new Long(a[0])
enregistre 6 (12) octets et en utiliseprintf
un autre (3).GNU coreutils,
525149 bytes(Programme de 98 octets - bonus de 50%)
L'entrée provient de l'argument de ligne de commande et la sortie est sur stdout.
Explication
Essai:
Tous les paramètres régionaux peuvent être
C
ouPOSIX
.Limitation: cela ne fonctionne que jusqu'en 2147485519 (bien que la question soit maintenant modifiée pour permettre une limite inférieure).
la source
MATL , 28 octets
Exemple
Code expliqué
la source
Perl 6 ,
7023 octetsusage:
la source
J, 14 octets
la source
Japt, 12 octets
Comme avec la réponse Pyth, les quatre octets de la chaîne devraient être
05 06 06 0B
. Essayez-le en ligne!la source
Gelée , 14 octets
Essayez-le en ligne!
Jusqu’à aujourd’hui, Jelly n’avait pas d’indexation de tableaux, ce qui doit être fait ci-dessus. Depuis la dernière validation, l'indexation de tableaux a été implémentée en tant que
ị
, donnant la solution suivante ( 10 octets ).Essayez-le en ligne!
la source
Pyth, 35 octets
Essayez-le en ligne.
la source
C # (6.0) .Net Framework 4.6 173 octets - 30% = 121,1 octets
la source
Javascript ES7, 17 octets
C'est la première fois que j'utilise JS. J'ai trouvé cela en utilisant un script Python, et je pense que c'est optimal. Cela fonctionne parce que
0**3
0 mod 7,1**3
et2**3
les deux 1 et3**3
6.la source
**
n'est-il pas une fonctionnalité de l' ES7 ? Ou utilisez-vous Babel ?Python, 23 octets
Un port de ma réponse JavaScript.
la source
Pyth , 12 octets
Essayez-le en ligne! ou consultez la suite de tests.
Pyth , 18 octets
Cette deuxième approche est principalement un jeu de réponses Pyth de @ wizzwizz4 .
Essayez-le en ligne! ou consultez la suite de tests.
Explication
la source