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>
Respuestas:
Jalea, 9 bytes
Esta es una cadena monádica que toma un argumento de línea de comando entero como entrada. Utiliza mi
(x+5+(x%4)**3%7)
algoritmo.Probarlo aquí . Aunque esa es la versión actual de Jelly, también funciona en esta versión , que es anterior al desafío. (¡Gracias @ Dennis!)
fuente
Mathematica,
45372724 bytesMejoras gracias a @ MartinBüttner (10 bytes) y @ChipHurst (otros 3 bytes).
fuente
#+5[6,6,11][[#~Mod~4]]&
5[6, 6, 11][[0]]
:)CJam,
211211 bytes@martin encontró un método muy simple!
Probarlo aquí .
EDITAR: ¡Gracias, Dennis!
fuente
5 6 6 11
truco utilizado en otras respuestas, pero la lista está codificada como "los dígitos de 9587 en la base 12" .gs2, 12 bytes
Traducción de mi respuesta CJam. Codificado en CP437 como de costumbre. Pruébalo en línea !
fuente
JavaScript (ES6),
504920 bytes (sin bonificaciones)El algoritmo de @martin demuestra ser mucho más pequeño, así que lo seguí.
Elegí un enfoque matemático porque JavaScript tiende a ser detallado. El código es lo suficientemente corto como para que los bonos solo lo alarguen.
Aquí está mi respuesta anterior (49 bytes) y mi respuesta original (50 bytes):
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
Trabajan tomando el año y calculando un número (0-6) para representar el "día de inicio del año". Debido a que el rango de fechas para este desafío se encuentra dentro del rango de años que siguen reglas simples de año bisiesto (sin saltarse el año 2000), es bastante sencillo de calcular. Entonces es solo cuestión de comparar para encontrar años que comiencen con el mismo valor. La recursión demostró ser la forma más concisa de hacer esto.
fuente
Pyth,
141211 bytesLos cuatro bytes en la cadena deben ser
05 06 06 0B
.EDITAR: ¡Gracias, FryAmTheEggman!
EDITAR: ¡Gracias, Dennis!
fuente
JavaScript (ES6), 104 bytes - 50% de bonificación = 52
Explicación
Prueba
Mostrar fragmento de código
fuente
Código máquina Z80, 12 bytes.
Un procedimiento Z80 para ser almacenado en
0000h
, llamado con la entradaHL
, y todos los demás registros borrados:Las primeras tres instrucciones son "NOP", pero se indexan como datos más adelante en el código. Al regresar, la salida está adentro
HL
.fuente
DE
y, por lo tanto, puede usarlaLD A, 3; AND E; LD L, A; LD L, (HL);
?Python 3,
14010010284,5154 * 0,5 = 77 bytesProbablemente podría escribir una mejor solución con el algoritmo de Sakamoto, pero esto funcionará por ahoraYo tenía razón. Aquí hay una implementación usando el algoritmo de Sakamoto.
Explicación:
fuente
w="SMTWTFSuouehranneduit"
y luego imprimirw[d(i)::7]
?En serio,
3517 bytes[5,6,6,11]
El truco salva el día.Pruébalo en línea
Explicación:
Versión antigua:
Pruébalo en línea
Explicación:
Algoritmo de Sakamoto:
fuente
C, 31 bytes
Después de editar la pregunta que restringe el rango de entrada a 1970-2090, esto se vuelve bastante trivial:
Sin los años del siglo no bisiesto, hay una secuencia simple de intervalos de 5,6,6,11 para la primera repetición del mismo día.
Solución completa al problema original (no limitado a 2090), 90 bytes:
Programa de prueba:
Prueba de funcionamiento:
fuente
R,
143136* 0,5 = 68 bytesUtilizar
%A
para el nombre de día completo en lugar de `% a, depende del estado deseado.R, 120 * 0.7 = 84 bytes
R, 90 bytes
Todas las respuestas anteriores son trabajos derivados basados en la respuesta @plannapus. Usar el
;
separador para evitar la necesidadsource
del archivo o ejecutarlo como script en la línea de comando.fuente
weekdays
, bien.R, 145 bytes -50% -> 72.5
Ejemplos:
R, 97 bytes (sin bonificación)
Sangrado, con nuevas líneas:
Casos de prueba:
fuente
;
...y=scan;
y usandox=y<-scan()+1
creoas.POSIXlt(paste(y,1),,"%Y %j")$wday
como su cuerpo de funciónscan
se leerá en la segunda línea como entrada.x=y<-scan()+1
con 2014 como entrada estándar le dará x = 2,015 ey = 2015 (es decir, la asignación esy <- scan()+1
) y si se intenta hacerx=1+y<-scan()
que le dará un error (Error in 1 + y <- scan() : target of assignment expands to non-language object
) porque está tratando de asignarscan()
a1+y
....$wday
es el número del día de la semana: pero aquí necesito el nombre del día de la semana para poder imprimirAdvance Happy New Year, 2012 (Sun)
VBA, 130 * 0.50 = 65 bytes
VBA hace que encontrar los días de la semana sea tan fácil ... Si no fuera tan detallado.
fuente
PHP,
120139bytes - 50% = 60 bytesUn enfoque funcional:
Toma una entrada de la línea de comando, como:
La forma de OOP parece ser más larga, como siempre (143 bytes):
Ediciones
+1year
, ahora simplemente incremento el año dado.-1-1
en una variable.fuente
C, puntaje
5352 (104 bytes)Idea tomada de Toby Speight ; Se agregó la pantalla de bonificación del día de la semana.
Acortó la cadena cambiando los códigos de caracteres a un rango más cómodo. Tuve que elegir la cantidad de desplazamiento correcta (por ejemplo, 43) para que el código de cálculo de día laborable corto
x*5/4%7
funcionara.fuente
" !!&"
.Mathematica, 145 * 50% =
7473.572.5 bytesUtiliza funciones de fecha estándar.
fuente
Pyth, 23 bytes
No califica para ninguno de los bonos.
Pruébalo aquí .
Similar a la respuesta pura de Python.
fuente
Java,
(1-.2) * 323(1-.5) *350348339 =258,4175174169,5 bytesUgh
Sin golf:
Pruébalo en línea!
¡Gracias a @Kenney por señalar que podría acortar con
new Long
yprintf
! :REfuente
long y=new Long(a[0])
ahorra 6 (12) bytes, y el usoprintf
guarda otros 3 (6).GNU coreutils,
525149 bytes(Programa de 98 bytes - 50% de bonificación)
La entrada es del argumento de la línea de comandos y la salida es stdout.
Explicación
Prueba de funcionamiento:
Todas las configuraciones regionales pueden ser
C
oPOSIX
.Limitación: esto solo funciona hasta el año 2147485519 (aunque la pregunta ahora se ha cambiado para permitir un límite inferior).
fuente
MATL , 28 bytes
Ejemplo
Código explicado
fuente
Perl 6 ,
7023 bytesuso:
fuente
J, 14 bytes
fuente
Japt, 12 bytes
Al igual que con la respuesta de Pyth, los cuatro bytes en la cadena deberían ser
05 06 06 0B
. Pruébalo en línea!fuente
Jalea , 14 bytes
Pruébalo en línea!
Hasta hoy, Jelly no tenía indexación de matriz, por lo que lo anterior tendrá que hacer. Desde la última confirmación, la indexación de matriz se ha implementado como
ị
, dando la siguiente solución ( 10 bytes ).Pruébalo en línea!
fuente
Pyth, 35 bytes
Pruébalo en línea.
fuente
C # (6.0) .Net Framework 4.6 173 Bytes - 30% = 121.1 Bytes
fuente
Javascript ES7, 17 bytes
Es la primera vez que uso JS. Encontré esto usando un script de Python, y creo que es óptimo. Funciona porque
0**3
es 0 mod 7,1**3
y2**3
son ambos 1 y3**3
es 6.fuente
**
una característica de ES7 ? ¿O estás usando Babel ?Python, 23 bytes
Un puerto de mi respuesta de JavaScript.
fuente
Pyth , 12 bytes
Pruébalo en línea! o Echa un vistazo a Test Suite.
Pyth , 18 bytes
Este segundo enfoque es principalmente un golf de la respuesta Pyth de @ wizzwizz4 .
Pruébalo en línea! o Echa un vistazo a Test Suite.
Explicación
fuente