var QUESTION_ID=93441,OVERRIDE_USER=41723;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}
<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:
Sesos ,
11 33 bytesPruébalo en línea! Verifique la depuración para ver el código SBIN generado.
Asamblea Sesos
El archivo binario anterior se ha generado al ensamblar el siguiente código SASM.
fuente
Haskell, 19 bytes
Produce la lista infinita.
[0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...
Haskell permite infinitas listas de forma nativa. Imprimir dicha lista imprimirá sus elementos uno por vez para siempre.
fuente
[n,1-n]
![1-n,n]
produciría una mejor producción.concatMap (\n -> [1-n, n]) [1..]
, ¿verdad? ¡Agradable!Brainfuck, 6 bytes
Esto hace uso del ajuste de celda e imprime todos los valores posibles. En Brainfuck, la representación entera nativa es por valor de byte .
Pruébalo en línea!
fuente
int
no tiene repentinamente más o menos bits solo porque agregó o quitó algo de ram.Cubix ,
1412 bytes¡Pruébelo en línea! Ahora puede ajustar la velocidad si desea que funcione más rápido o más lento.
Cómo funciona
Lo primero que hace el intérprete es eliminar todo el espacio en blanco y rellenar el código con no-ops
.
hasta que encaje perfectamente en un cubo. Eso significa que el código anterior también se puede escribir así:Ahora se ejecuta el código. El IP (puntero de instrucción) comienza en la esquina superior izquierda de la cara izquierda, apuntando al este. Estas son las rutas que toma durante el transcurso de la ejecución del programa:
La IP comienza en el camino rojo en el extremo izquierdo de la imagen. Luego se ejecuta
OSo;
, lo que hace lo siguiente:O
Imprima los TOS (top-of-stack) como un número entero. Al comienzo del programa, la pila contiene ceros infinitos, por lo que se imprime0
.S
Empuje32
, el código de char para el carácter de espacio.o
Imprime los TOS como un personaje. Esto imprime un espacio.;
Pop the TOS. Elimina el32
de la pila.Ahora la IP golpea el
?
, que lo dirige hacia la izquierda, la derecha o la recta según el signo de los TOS. En este momento, el TOS es0
, por lo que va directo. Este es el camino azul;.
no hace nada, y la IP golpea la flecha>
, que lo dirige al este a lo largo del camino rojo nuevamente.~
toma el NOT bit a bit del TOS, cambiándolo a-1
.Aquí la IP llega al borde derecho de la red, que la envuelve de nuevo a la izquierda; esto nuevamente imprime los TOS (esta vez
-1
) y un espacio.Ahora la IP golpea de
?
nuevo. Esta vez, el TOS es-1
; Como esto es negativo, la IP gira a la izquierda, tomando el camino verde. El espejo\
desvía la IP hacia el(
, lo que disminuye el TOS, cambiándolo a-2
. Vuelve y golpea la flecha;~
toma bit a bit NO de nuevo, girando el-2
a1
.Una vez más se imprime el TOS y se imprime un espacio. Esta vez, cuando la IP llega a
?
, el TOS es1
; Como esto es positivo, la IP gira a la derecha, tomando el camino amarillo. El primer operador que encuentra esS
empujar un extra32
; el;
aparece antes de que pueda causar problemas.Ahora la IP vuelve a la flecha y realiza su rutina,
~
cambiando el TOS-2
eO
imprimiéndolo. Dado que el TOS es negativo nuevamente, la IP toma el camino verde una vez más. Y sigue ciclando así para siempre *: rojo, verde, rojo, amarillo, rojo, verde, rojo, amarillo ..., imprimiéndose en el siguiente ciclo:TL; DR
Este programa realiza repetidamente estos 3 sencillos pasos:
Versión no separada, 6 bytes
Eliminar la separación simplifica tanto el programa que puede caber en un cubo unitario:
* Nota : Ninguno de los programas es realmente infinito, ya que solo cuentan hasta 2 52 (donde JavaScript comienza a perder precisión entera).
fuente
MATL , 8 bytes
Utiliza el tipo de datos predeterminado de MATL, que es
double
, por lo que funciona2^53
en valor absoluto. La salida esPruébalo en línea!
Explicación
fuente
@_@XD
lugar de@_D@D
para que pueda incluir el 0 en la primera ejecución.XD
+1 para smileyLenguaje de programación Shakespeare , 227 bytes
Obviamente, esta respuesta no está cerca de ganar, pero me gustó que este es un caso de uso para el que el SPL es relativamente adecuado.
Explicado:
Como puede ver al comparar este código con mi respuesta al desafío relacionado de contar para siempre (es decir, imprimir todos los números naturales), la longitud del código SPL crece bastante mal cuando aumenta el tamaño del problema ...
fuente
Let us return to scene II.
debería serscene I
.$puck
a 0 y luego el conteo ya no funcionaría. Agregué lo que faltabaI
en el código y corregí la longitud del byte (que de todos modos estaba un poco fuera de lugar)Python 2, 27 bytes
Huellas dactilares
-1 0 -2 1 -3 2 -4 3 ...
fuente
05AB1E ,
96 bytesGuardado 3 bytes gracias a Adnan
Pruébalo en línea!
Impresiones
0, -1, 1, -2, 2 ...
separadas por líneas nuevas.fuente
[N,N±,
.±
y terminó 3 bytes más que el tuyo.D,
se puede reemplazar=
por guardar un byte.GNU sed, 189 + 2 (rn flags) = 191 bytes
Esta es probablemente la solución más larga, ya que sed no tiene tipo entero ni operaciones aritméticas. Como tal, tuve que emular un operador de incremento de tamaño arbitrario usando solo expresiones regulares.
Correr:
Salida:
fuente
Brainfuck, 127 bytes
Pruébalo en línea!
Dada una cinta infinita, teóricamente funcionaría para siempre.
Sin comprimir
fuente
ShadyAsFuck , 3 bytes
Explicación:
Esto hace uso del ajuste de celda e imprime todos los valores posibles. En SAF, la representación entera nativa es por valor de byte .
fuente
R,
2524 bytesGolfé un byte gracias a @JDL.
Pruébalo en línea!
Salida de ejemplo:
fuente
while(1)
conrepeat
para guardar un personaje.Lote, 56 bytes
Salida:
etc. Funciona hasta 2147483647; 58 bytes si desea (-) 2147483648 en la salida:
44 bytes si se imprimen todos los enteros positivos admitidos, entonces todos los enteros negativos admitidos, y luego se repiten sin fin, es aceptable:
fuente
Java 7,
151134122118 bytes12 bytes guardados gracias a @flawr (y @xnor indirectamente)
Después del cambio de regla .. (
595663 bytes)Dado que en Java
2147483647 + 1 = -2147483648
, no podemos simplemente haceri++
y continuar infinitamente, ya que el desafío era imprimir todos los números una vez. Con el código anterior con rango añadido, será su lugar muestra todos los números enteros de-2147483648
a2147483647
una vez cada uno, en el orden siguiente:0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648
. Gracias a @ OlivierGrégoire por señalar el comportamiento de Java con respecto aMIN_VALUE-1
/MAX_VALUE+1
. Pruébalo aquíUngolfed y código de prueba:
Pruébelo aquí: se produce un error de tiempo de ejecución
Salida:
fuente
int
programa de versión, dado un tiempo infinito, imprimirá cada número entero una cantidad infinita de tiempo.MAX_VALUE
, puede consultar mi respuesta (probablemente todavía en la última página).)DC (sabor GNU u OpenBSD) - 16 bytes
Esta versión no es más corta que la versión siguiente, pero debería poder ejecutarse sin que la pila explote en su PC. Sin embargo, infinitos números grandes ocuparán cantidades infinitas de memoria ... en algún momento ...
Debido al
r
comando necesita GNU-DC u OpenBSD-DC .Prueba:
DC - 16 bytes
Un poco malo ahora. ;-)
Esta versión está abusando de la longitud de la pila como contador mientras deja que la pila crezca.
Prueba:
DC - 17 bytes
Sin trucos sucios.
Prueba:
fuente
[-]P
hacerlo45P
. "GNU-Dc u OpenBSD-Dc" - ¿Hay alguna otra versión comúnmente encontrada en la naturaleza?dc
solo tiene unos pocos operadores. Los desarrollé independientemente de estos.r
como "intercambio". A veces me confundo al mirar las diferentes versiones. Probablemente ya nadie quiera codificar en Dc antiguo (y allír
se eliminaría la pila). ¿Quizás cambiaría "Dc" a "AT&T dc"? ... y gracias por la45P
pista ...C # 74 bytes
Salida:
Intentalo:
dotnetfiddle.net (limitado a 1000)
fuente
public
modificadores y guardar 14 bytes. Los valores predeterminados lo harán igualmente bien.Ruby,
26221916 bytesImprime números separados por nuevas líneas. -3 bytes de @manatwork. -3 bytes de @ m-chrzan.
fuente
p
lo que también lo hará.0.step{|n|p n,~n}
por 17 bytes.JavaScript,
2926 bytesVersión no infinita, 26 bytes.
Guardado 3 bytes gracias a ETHproductions
mostrará todos los enteros entre -9007199254740991 y 9007199254740992.
Versión infinita (ES6),
114112 bytesAhorró 2 bytes gracias a ETHproductions
mostrará todos los enteros, dado el tiempo y la memoria infinitos.
fuente
n[a,b,c]
devuelven[c]
, por lo que puede colocar los paréntesisn[(a||n.unshift(1),0)]
.1
bucle for;for(;;)
corre por siempre. Puede guardar dos bytes más confor(n=1;;)alert([1-n,n++])
. Además, esto ya no usa ninguna función de ES6 ;-)> <> ,
1915 bytesEsto imprime lo siguiente:
... y así. El separador es una nueva línea.
Reescrito después de leer la respuesta de @ xnor para usar una versión de ese algoritmo. Comenzando en
n=1
, el programa imprime1-n
yn
, cada uno seguido de una nueva línea, antes de incrementarn
. Después de desbordar el valor máximo, el programa terminará con un error desomething smells fishy...
. Exactamente cuándo ocurrirá esto depende de la implementación del intérprete.Versión previa:
A partir de 0, el programa se repite indefinidamente. En cada bucle, el valor actual se imprime junto con una nueva línea. Luego se niega y se incrementa si es positivo.
fuente
Bash + GNU utilidades, 26
fuente
$[++i]
hace en bash.seq NaN
a correr y después de 999999 la impresión se realiza en notación científica con precisión de 5 dígitos. Con respecto al desafío, ese valor es el mayor número entero que imprime, lo cual está bien ya que el resto no repetirá un número anterior. También noté que puede ejecutar seq coninf
mayúsculas y minúsculas al igual que paranan
. +1a. C.,
1716 bytesEditar: 1 byte menos gracias a Digital Trauma .
Agregando a la diversidad de lenguajes usados hasta ahora, presento una solución bc que funciona con enteros de tamaño arbitrario . Se requiere una nueva línea después del código y se cuenta en el total de bytes.
En la primera iteración
i
no está definida, pero la impresión da 0 para mi sorpresa.fuente
for(;;){i;-++i}
bc
tenía.for(;;){i++;-i}
(misma longitud).Laberinto , 9 bytes
Pruébalo en línea!
Esto también funciona y es esencialmente lo mismo:
Explicación
El flujo de control en este código es bastante divertido. Recuerde que el puntero de instrucción (IP) en un programa Labyrinth sigue la ruta de los caracteres que no son espacios y examina la parte superior de la pila en cualquier cruce para decidir qué ruta tomar:
Cuando la IP llega a un punto muerto, se da la vuelta (ejecutando el comando al final solo una vez). Y la IP comienza en la esquina superior izquierda hacia el este. También tenga en cuenta que la pila está implícitamente llena con una cantidad infinita de ceros para empezar.
El programa comienza con este breve fragmento:
Ahora la IP está en la unión relevante y avanza directamente hacia la
(
que disminuye la parte superior de la pila-1
. La IP llega a un callejón sin salida y se da vuelta.:
duplica la parte superior de la pila una vez más. Ahora la parte superior de la pila es negativa y la IP gira a la izquierda (oeste). Ahora ejecutamos una iteración más del bucle principal:Esta vez, la parte superior de la pila es positiva, por lo que IP gira a la derecha (oeste) e inmediatamente ejecuta otra iteración del bucle principal, que imprime el
1
. Luego, después de que se niega nuevamente, golpeamos:
con-1
en la pila.Esta vez la IP gira a la izquierda (este). El
"
es simplemente un no-op y la IP se da vuelta en el callejón sin salida.:
hace otra copia y esta vez la IP gira hacia el sur.(
disminuye el valor a-2
, la IP vuelve a girar. Con la parte superior de la pila aún negativa, la IP ahora gira hacia el oeste:
y realiza la siguiente iteración del bucle principal.De esta manera, la IP ahora iterará entre una iteración de bucle cerrado, imprimiendo un número positivo y una iteración que atraviesa ambos callejones sin salida para disminuir el valor antes de imprimir un número negativo.
Puede preguntarse por qué está
"
en la segunda línea si en realidad no hace nada: sin ella, cuando la IP alcanza:
un valor negativo, no puede girar a la izquierda (este), por lo que en su lugar giraría a la derecha (oeste) (como regla general, si la dirección habitual en un cruce no está disponible, la IP tomará la dirección opuesta). Eso significa que la IP nunca alcanzaría la(
parte inferior y no podríamos distinguir las iteraciones positivas de las negativas.fuente
JavaScript (ES5),
32313029 bytesHuellas dactilares
0 -1 1 -2 2 -3 3 -4 4 -5 5 ...
¡Salvado 1 byte gracias a Patrick Roberts! ¡Ahorré 2 bytes gracias a Conor O'Brien!
fuente
[i++,-i].map(alert)
lugar dealert(i++),alert(-i)
?for(;;)
es un byte más corto quewhile(1)
map
es ES6i=0;
bit dentro del bucle for para guardar un byte.Java,
6554 bytesCódigo de prueba sin golf
fuente
biggest magnitude of the standard integer type of your language
int
es el tipo entero estándar de Java.()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};
( 53 bytes )C #, 83 bytes
Sin golf:
Salidas:
fuente
void f(){code_present_in_main}
es suficiente para el conteo de bytes. En cuanto al código en sí, puede jugarlo un poco más de esta manera:void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}
( 61 bytes )decimal n=0
yn++;
dentro del ciclo for:void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}
:)C #
8666 bytesNueva respuesta:
Claro:
Respuesta anterior (86 bytes):
Sin golf:
fuente
Enumerable.Range
y otro antesint.MaxValue
.void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}
( 57 bytes ) .J, 25 bytes
Funciona en el sitio en línea , pero todavía no puedo verificarlo en la computadora. Imprime números como:
etc.
fuente
Powershell,
201918 bytesMejorado al robar descaradamente de la respuesta de TimmyD
Salida:
Versión antigua:
No estoy seguro de por qué tbh, pero - la variable no declarada (o - $ null) se evalúa como 0, lo que nos ahorró 2 bytes en esta versión ...
fuente
Pyke ,
72 bytesPruébalo aquí!
7 bytes
Pruébalo aquí!
Si imprimir + -0 está bien,
oD_r
fuente
Brachylog , 2 bytes
Pruébalo en línea!
Como el programa no recibe ninguna entrada, la variable de entrada del predicado principal se deja sin restricciones. Al principio, se supone que es 0, pero cuando la ejecución golpea
⊥
, retrocede al único punto posible de falla: la elección del valor para la variable de entrada. Entonces, intenta 1, y -1, y todos los demás enteros, imprimiendo cada uno separado por nuevas líneas para⊥
siempre porque siempre fuerza el retroceso, y el efecto deẉ
se ejecuta de inmediato.fuente