var QUESTION_ID=133109,OVERRIDE_USER=69148;function answersUrl(e){return"https://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"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} /* font fix */ body {font-family: Arial,"Helvetica Neue",Helvetica,sans-serif;} /* #language-list x-pos fix */ #answer-list {margin-right: 200px;}
<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:
Pyth , 2 bytes
Pruébalo en línea! Entrada implícita
Ses un rango indexado en 1 yses la suma.fuente
Cáscara , 1 byte
Pruébalo en línea!
¡Incorporado!
Σen Husk generalmente se usa para obtener la suma de todos los elementos de una lista, pero cuando se aplica a un número, devuelve exactamenten*(n+1)/2.fuente
Σes un carácter unicode de dos bytes en mi máquina. ¿Supongo que usas la página de códigos 1253? msdn.microsoft.com/en-us/library/cc195055.aspxPiet , 161 bytes / 16 codeles
Puede interpretarlo con este intérprete de Piet o cargar la imagen en este sitio web y ejecutarlo allí. No estoy seguro sobre el recuento de bytes, si pudiera codificarlo de manera diferente para reducir el tamaño.
Versión ampliada de la imagen de origen:
Explicación
El
highlightedtexto muestra la pila actual (creciendo de izquierda a derecha), suponiendo que la entrada del usuario es5:nop, el negro atrapa nuestro cursor. Esto finaliza la ejecución del programa.fuente
Brain-Flak , 16 bytes
Pruébalo en línea!
Esta es una de las pocas cosas en las que Brain Flak es realmente bueno.
Dado que esta es una de las cosas más simples que puede hacer en un ataque cerebral y tiene mucha visibilidad, aquí hay una explicación detallada :
fuente
Oasis , 3 bytes
Pruébalo en línea!
Cómo funciona
fuente
Mathematica, 9 bytes
Mathematica, 10 bytes
Mathematica, 11 bytes
Mathematica, 12 bytes
Mathematica, 14 bytes
(por @ user71546)
Mathematica, 15 bytes
Mathematica, 16 bytes
Mathematica, 17 bytes
(por @Ning a tree)
Mathematica, 18 bytes
Mathematica, 19 bytes
Mathematica, 20 bytes
(por @Ning a tree)
fuente
Array[Boole[#2>=#]&,{#,#}]~Total~2&JavaScript (ES6), 10 bytes
Ejemplo
Mostrar fragmento de código
fuente
n*-~n/2también funciona, pero sólo paran < 2**31lenguaje de máquina x86_64 (Linux),
98 bytesPara probarlo en línea! compila y ejecuta el siguiente programa en C.
Gracias a @CodyGray y @Peter por -1.
fuente
shrlugar desar, para tratar su salida como sin firmar (sin cambios en el tamaño del código). (Detectado por @CodyGray y señalado en su respuesta de 7 bytesadd+loop).mul %edioimul %edi(cada 2B) en lugar de la forma de dos operandos 3B. Golpea a EDX con el resultado de la mitad alta, pero está bien. Multi-operandimulse introdujo más tarde que la forma de un operando, y tiene un código de operación de 2 bytes con un0Fbyte de escape. Cualquiera de las tres opciones siempre producirá el mismo resultadoeax, es solo la mitad alta la que depende de firmado frente a no firmado.Python 2 ,
2416 bytes-8 bytes gracias a FryAmTheEggman.
Pruébalo en línea!
fuente
C # (.NET Core) , 10 bytes
Pruébalo en línea!
fuente
Java (OpenJDK 8) , 10 bytes
Pruébalo en línea!
fuente
Octava ,
2219 bytesPorque las operaciones aritméticas son aburridas ...
Pruébalo en línea!
Explicación
Dado
n, esto crea una matrizn×ncon todas las entradas iguales al número e ; realiza entradas debajo de la diagonal cero; y genera el número de valores distintos de cero.fuente
@(n)sum(1:n)sum.Jalea , 2 bytes
Pruébalo en línea!
Explicación
Suma de Gauss, 3 bytes
Explicación
fuente
APL, 3 bytes
Pruébalo en línea!
+/- suma (reducir+),⍳- rango.fuente
1+1por lo que no especifiqué. es común aquí especificar solo cuando se usa⎕IO←0(y no está incluido en el recuento de bytes)Haskell , 13 bytes
Este es el más corto (creo
quepensó):Pruébalo en línea!
Directo,
1713 bytes¡Gracias @WheatWizard por
-4bytes!Pruébalo en línea!
Pointfree directo, 15 bytes
Gracias @nimi por la idea!
Pruébalo en línea!
Punto libre vía
sum, 16 bytesPruébalo en línea!
Recurrentemente,
2218 bytes¡Gracias @maple_shaft por la idea y @Laikoni por jugar al golf!
Pruébalo en línea!
Estándar
fold, 19 bytesPruébalo en línea!
fuente
Estrellado ,
2722 bytes¡5 bytes guardados gracias a @miles !
Pruébalo en línea!
Explicación
fuente
05AB1E , 2 bytes
Pruébalo en línea!
Cómo funciona
Suma de Gauss, 4 bytes
Pruébalo en línea!
Cómo funciona
fuente
ÝOTambién funciona y significahello.Java (OpenJDK 8) , 10 bytes
Pruébalo en línea!
Tomó un momento para jugar golf
n->n*(n+1)/2porque soy lento.Pero esta no es una respuesta real de Java. Definitivamente no es lo suficientemente detallado.
No está mal, pero podemos hacerlo mejor.
Amo a Java
fuente
Cheque , 5 bytes
¡Check ni siquiera es un lenguaje de golf, pero supera a CJam!
Pruébalo en línea!
Explicación:
El número de entrada se coloca en la pila.
:lo duplica para darn, n. Luego se incrementa con), dandon, n+1.*multiplica los dos juntos y luego$divide el resultado entre 2.pimprime el resultado y el programa finaliza.fuente
MATL , 2 bytes
Pruébalo en línea!
No contento sonriente.
fuente
Taxi , 687 bytes
Pruébalo en línea!
Sin golf con comentarios:
Es 22.6% menos bytes para bucle de lo que es usar
x*(x+1)/2fuente
Julia, 10 bytes
Pruébalo en línea!
11 bytes (también funciona en Julia 0.4)
Pruébalo en línea!
fuente
Brainfuck, 24 bytes.
La E / S se maneja como bytes.
Explicado
fuente
,,, 6 bytes
Explicación
Si implemento el rango en el corto plazo ...
fuente
Retina , 13 bytes
Pruébalo en línea! Explicación: La primera y la última etapa son solo unario ⇔ conversión decimal. La etapa intermedia reemplaza cada uno
1con el número de1s a su izquierda más otro1para1sí mismo, contando así desde1hastan, sumando los valores implícitamente.fuente
> <> , 7 + 3 = 10 bytes
Calcula n (n + 1) / 2 .
3 bytes agregados para la bandera -v
Pruébalo en línea!
O si la entrada se puede tomar como un código de caracteres:
> <> , 9 bytes
Pruébalo en línea!
fuente
(n^2+n)/2) también es de 7 bytes:::*+2,ndc , 7 bytes
O
O
Pruébalo en línea!
fuente
PHP, 19 bytes
usando builtins, 29 bytes:
bucle, 31 bytes:
fuente
for(;$argn;$s+=$argn--);echo$s;Cubix ,
1210 bytesVersión inicial
Pruébalo en línea!
Explicación
Ampliado en un cubo, el código se ve así:
El puntero de instrucción (IP) comienza en el
I, moviéndose hacia el este. Continúa moviéndose hacia el este hasta que se encuentra con el/espejo, que lo refleja hacia el norte. Cuando la IP llega a la parte superior del código, se ajusta al último.en la tercera línea, moviéndose hacia el sur. Luego se envuelve al penúltimo.en la última línea, moviéndose hacia el norte. Luego alcanza el/espejo nuevamente, que lo refleja hacia el este, solo para que el siguiente lo/refleje hacia el norte nuevamente. Esta vez, la IP se ajusta al penúltimo.en la tercera línea, y luego al último.en la última línea.Las instrucciones se ejecutan en el siguiente orden.
fuente
Código de máquina x86-64, 7 bytes
Los bytes anteriores definen una función que acepta un único parámetro
ny devuelve un valor que contiene la suma de todos los enteros de 1 an.Está escrito en la convención de llamadas x64 de Microsoft , que pasa el parámetro en el
ECXregistro. El valor de retorno se dejaEAX, como todas las convenciones de llamadas x86 / x86-64.Mnemónicos de ensamblaje sin golf:
Pruébalo en línea!
(La llamada de función C allí está anotada con un atributo que hace que GCC lo llame usando la convención de llamadas de Microsoft que usa mi código de ensamblaje. Si TIO hubiera proporcionado MSVC, esto no sería necesario).
Según los estándares inusuales del golf de código, verá que este enfoque de bucle iterativo es preferible a los enfoques que usan la fórmula matemática más sensata (
n(n+1) / 2), aunque obviamente es mucho menos eficiente en términos de velocidad de tiempo de ejecución.Usando la teoría de números, la implementación de ceilingcat todavía puede ser superada por un byte. Cada una de estas instrucciones es esencial, pero hay una codificación ligeramente más corta
IMULque se usaEAXimplícitamente como un operando de destino (en realidad, se usaEDX:EAX, pero podemos ignorar los 32 bits superiores del resultado). Esto es solo 2 bytes para codificar, en lugar de 3.LEAtambién toma tres bytes, pero en realidad no hay forma de evitarlo porque necesitamos incrementar mientras conservamos el valor original. Si hiciéramos unMOVpara hacer una copia,INCestaríamos en 4 bytes. (En x86-32, dondeINCsolo hay 1 byte, estaríamos en los mismos 3 bytes queLEA.)El último desplazamiento a la derecha es necesario para dividir el resultado a la mitad, y ciertamente es más compacto (y más eficiente) que una multiplicación. Sin embargo, el código realmente debería estar usando en
shrlugar desar, ya que se supone que el valor de entradan, es un entero sin signo. (Esa suposición es válida de acuerdo con las reglas, por supuesto, pero si sabe que la entrada no está firmada, entonces no debería estar haciendo un cambio aritmético firmado, ya que el bit superior que se establece en un valor grande sin signo causará el resultado ser incorrecto)Ahora solo 8 bytes (gracias a Peter Cordes). Aún así, 8> 7.
fuente
imul ecxomul ecxfuncionaría y guardaría un byte en la implementación de forma cerrada. No lo vi de inmediato; Estaba a punto de comentar que era óptimo tanto para el rendimiento como para el tamaño del código antes de darme cuenta de que uneaxoperando implícito estaba bien.add+loopsería más corto queimulmientras miraba la otra respuesta. Práctico que hay una convención de llamadas estándar que pasa el primer argumento enecx