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
S
es un rango indexado en 1 ys
es 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
highlighted
texto muestra la pila actual (creciendo de izquierda a derecha), suponiendo que la entrada del usuario es5
:Ingrese un número y empújelo en la pila
Duplicar este número en la pila
Empuje 1 (el tamaño del área roja oscura) en la pila
Agrega los dos primeros números
Multiplica los dos primeros números
El área negra asegura que el cursor se mueva hacia la derecha hasta el códec verde claro. Esa transición empuja 2 (el tamaño del verde oscuro) en la pila
Divide el segundo número en la pila por el primero
Pop y salida el número superior (interpretado como número)
Al insertar un área blanca, la transición es a
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/2
también funciona, pero sólo paran < 2**31
lenguaje 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
shr
lugar 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 %edi
oimul %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-operandimul
se introdujo más tarde que la forma de un operando, y tiene un código de operación de 2 bytes con un0F
byte 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
×n
con 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+
1
por 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
-4
bytes!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
ÝO
También funciona y significahello
.Java (OpenJDK 8) , 10 bytes
Pruébalo en línea!
Tomó un momento para jugar golf
n->n*(n+1)/2
porque 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.p
imprime 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)/2
fuente
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
1
con el número de1
s a su izquierda más otro1
para1
sí mismo, contando así desde1
hastan
, 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,n
dc , 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
n
y 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
ECX
registro. 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
IMUL
que se usaEAX
implí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.LEA
también toma tres bytes, pero en realidad no hay forma de evitarlo porque necesitamos incrementar mientras conservamos el valor original. Si hiciéramos unMOV
para hacer una copia,INC
estaríamos en 4 bytes. (En x86-32, dondeINC
solo 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
shr
lugar 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 ecx
omul ecx
funcionarí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 uneax
operando implícito estaba bien.add
+loop
sería más corto queimul
mientras miraba la otra respuesta. Práctico que hay una convención de llamadas estándar que pasa el primer argumento enecx