var QUESTION_ID=13152,OVERRIDE_USER=8611;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:
Befunge (1)
Salidas
0para siempre. Funciona porque en las líneas Befunge se envuelven, y obtienes0si pop de la pila vacía.fuente
x86 .COM ejecutable, 7
en hexadecimal:
Los otros necesitan kilobytes o más de bibliotecas del sistema y tiempo de ejecución. Volver a lo básico:
Puede cambiar el segundo byte (
0x21o!) para cambiar la salida.Utiliza una interrupción del BIOS para la salida; no necesita DOS, pero no tenía QEMU configurado.
Explicación
El código de máquina corresponde con el siguiente ensamblaje:
La salida está toda en la
intllamada: según esta referencia , int 0x10 con 0x0e en AH imprimirá el byte en AL en la pantalla.Sabiendo que el registro AX es una palabra de 16 bits compuesta de AH en el byte alto y AL en el byte bajo, podemos guardar una carga adicional (y, por lo tanto, un byte en el código de la máquina) cargándolos juntos.
fuente
Archivo de lote de Windows, 2 caracteres
Se llama a sí mismo infinitamente.
fuente
%0no tiene un@, por lo que constantemente generaría algo como...> %0. Sin embargo, esto podría consumir toda la RAM en algún momento, ya que es recursivo.Befunge 98 - 2
Salidas ",,,,,,,,,,," por la eternidad.
fuente
sh, 3 bytes
salidas
ycontinuamentefuente
yeses un binario externo, y no forma parte de bash (estrictamente hablando).y=yesy si su sistema no es esotérico, puede suponer queyesestá en su$PATH(vea GNU Core Utilities ). Con su lógica, es posible asumir constelaciones extrañas para cada solución.bashcapacidad: es una parte básica del shell POSIX de las utilidades principales . (Es decir: cambie el título de sh: 3 caracteres ;-)Haskell: 8 personajes
Hilo viejo, pero uno divertido es
en Haskell, imprime
para siempre ya que básicamente se está ejecutando
Sabe que
xes una cadena, por lo que el primer carácter lo es", por lo que se debe escapar\", pero se\debe escapar\\\x, y así sucesivamente.fuente
fix$showhubiera sido más estético :-)import Data.Function, y porque devuelve la cadena en lugar de imprimirla, cuestiono la imparcialidad del recuento de caracteres. Además, la cadena es en realidad "\" \\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\\\ ...".Archivo de lote de Windows, 8 caracteres
fuente
:a\r\ngoto a3a 61 0a 67 6f 74 6f 20funciona en mi Windows 8 ...: PBrainfuck, 4
Alternativamente,
fuente
\x01tampoco\xFFson caracteres imprimibles. Sin embargo, supongo que no era un requisito: - /Java, 54 caracteres
Mejor intento en Java:
fuente
for(;;)patrón clásico ? ¿Qué hay dewhile(true)?staticbloque.Bash, 4 bytes
Salidas
./forever2.sh: line 1: $: command not foundcontinuas.Debido a que
$0está en segundo plano, cada padre muere después del comando no válido$, por lo que la pila / memoria no se consume, y esto debería continuar indefinidamente.Extrañamente, la salida se vuelve más y más lenta con el tiempo.
topinforma que el uso de la CPU del sistema es cercano al 100%, pero hay procesos de memoria o CPU. Presumiblemente, alguna asignación de recursos en el núcleo se vuelve cada vez menos eficiente.fuente
$0falla.LOLCODE (36)
Pensé que le daría una oportunidad a LOLCODE, tiene una funcionalidad sorprendentemente grande.
fuente
HAIyKTHXBYEJavaScript: 14
fuente
alert()me da este errorError: Not enough arguments [nsIDOMWindow.alert]Máquina de Turing - 6 personajes:
donde
#está el símbolo en blanco (en la cinta por defecto),sdescribe el único estado existente (inicio),1está imprimiendo un dígito,Rsignifica desplazarse hacia la derecha,sal final permanece en el mismo estado.fuente
s#1Rs(estado actual, símbolo actual, símbolo para escribir, dirección para cambiar, siguiente estado).Haskell, 10
Creo que este es el código más corto para
Showestructura de datos infinita : capaz.Para los interesados, imprime:
fuente
Marbelous 4
Marbelous sorprende sorprendentemente bien aquí. Esto publicará una cantidad infinita de signos de dólar
$, aunque alcanzará el límite de la pila con bastante rapidez.Cómo funciona.
24 es un lenguaje literal, que se caerá del tablero y se imprimirá en STDOUT como su correspondiente carácter ascii. MB es el nombre implícitamente dado a la placa principal, ya que la placa principal no tiene entrada, disparará cada tic. Y dado que las celdas se evalúan de izquierda a derecha, el literal siempre se imprimirá antes de la próxima llamada recursiva.
Entonces esto es equivalente a este pseudocódigo:
Una solución sin recursión infinita 11
Este funciona haciendo un bucle literal entre dos portales
@0, cada vez que el 24 golpea el inferior@0se transporta a la celda debajo del superior@0. Cuando aterriza en el/\, que es un operador de clonación, coloca una copia de la canica (literal) a su izquierda (nuevamente en el portal) y otra a su derecha. Esta copia se cae del tablero (ya que..es una celda vacía) y se imprime en STDOUT. En pseudocódigo, esto se traduciría en:Una solución más corta sin recursión infinita 9
Éste tira constantemente la canica entre un clonador y un deflector, colocando una copia en la celda más a la derecha, para que se caiga del tablero. En pseudocódigo que se vería así:
Nota
Las
..celdas son necesarias en los dos últimos tableros ya que las canicas caerían del tablero (y serían descartadas) de lo contrario. Para más diversión, reemplaza la24canica porFFy la..celda vacía por a??, lo que convierte cualquier canica en una canica entre 0 y su valor actual antes de soltarla. Adivina cómo se vería eso en STDOUT.fuente
C, 23 caracteres
Ligeramente más corto que la mejor respuesta C / C ++ hasta ahora. Imprime líneas vacías infinitamente (pero si se compila sin optimizaciones, desborda la pila).
fuente
putc(0)(o 1, o 2, ..., o 9). Funcionaría eso?putcrequiere 2 parámetros.Python 3: 15, 17 o 18 caracteres
La respuesta de mdeitrick es más larga en Python 3, que reemplaza la
printdeclaración con una llamada de función (15 caracteres):Este sigue siendo el más corto que he encontrado en Python 3. Sin embargo, hay algunas formas más interesantes de imprimir en un bucle infinito que solo tienen unos pocos caracteres más.
print()devuelveNone, que! = 9, lo que lo convierte en un bucle infinito; the8es un no-op que sustituye apass(18 caracteres):iter(print, 9)define un iterable que devuelve la salida deprint()hasta que sea igual9(lo que nunca sucede).anyconsume la entrada iterable buscando un valor verdadero, que nunca llega ya queprint()siempre regresaNone. (También puede usarsetpara el mismo efecto).O bien, podemos consumir el iterable probando si contiene
8(17 caracteres):O desempaquételo con el operador splat :
La forma más rara pensé es utilizar desestructuración splat dentro de una llamada de función,
function(*iterable). Parece que Python intenta consumir todo el iterable incluso antes de intentar la llamada a la función, incluso si la llamada a la función es falsa. Esto significa que ni siquiera necesitamos una función real, porque el error de tipo solo se generará después de que se agote el iterable (es decir, nunca):fuente
*iter(print,1),funciona y tiene solo 15 caracteres, pero consume bastante memoria.piet - 3 codeles
Emite un número infinito de 1
fuente
x86 .COM ejecutable, 5 bytes
en hexadecimal:
en asm:
Explicación:
inc axincrementa el registro AX en uno.int 0x29es la rutina "fast put char" de MSDOS, que simplemente genera el valor en AL (la parte baja de AX) y avanza el cursor en uno.jmp sies solo una forma extraña de volver a la cima, ya que el registro SI es 0x100 en casi todos los sistemas operativos tipo DOS, que también es donde comienza un programa .com;) También es posible hacer un salto corto, que también Utiliza 2 bytes.Fuentes:
Valores iniciales de MSDOS
Sizecoding WIKI
fuente
Bitxtreme , 0.25 bytes
Representación binaria:
De la documentación:
El contador del programa y el acumulador se inicializan a cero; entonces, el contenido de la ubicación de memoria 0 se resta del acumulador. Esto pasa a ser 0, dejando el acumulador en cero. Como no hubo carry, el segundo bit no se agrega al contador del programa.
El contador del programa se incrementa en 2 módulo 2, enviándolo de vuelta al inicio y provocando un bucle infinito. En cada paso, la ubicación especial de memoria 0 se modifica, lo que hace que su contenido (a
0) se escriba en la salida.Se puede argumentar que este programa debe puntuarse como 1 byte, porque el intérprete oficial en Python requiere relleno cero. Sin embargo, no creo que el relleno cero sea realmente código .
fuente
Resumen: Ruby - 9, Golfscript - 6,> <> - 2, Espacio en blanco - 19,
Perl - 2Un idioma que conozco y dos que nunca he usado antes: D
EDITAR: Perl uno no funcionó cuando instalé Perl para probarlo :(
Rubí, 9
Simplemente imprime 1 en líneas separadas continuamente.
Además, un montón de alternativas:
Solución de 10 carbonos:
De hecho, me sorprendió poder eliminar el espacio entre el primero
1y elwhile, pero aparentemente funcionaGolfscript, 6
¡Mi primer programa Golfscript! :PAGS
> <> ( Pez ), 2
Espacio en blanco , 19
Donde
srepresenta un espacio,trepresenta una pestaña ylun salto de línea.fuente
{1p}dosolo imprime1y se cierra, porque do es una secuencia de prueba de ejecución de ejecución que solo continúa si es verdadera. (Dado que no hay entrada, la pila es inicialmente"", que, después de ejecutar1p, aparece y prueba falso). Sin embargo, solo agregar un dup funcionará, es decir{1.p}do(a 7 bytes).C,
2524fuente
s/while/main/return main(puts("1"))entonces, habría sido una llamada de cola.methodName(void)acepta exactamente cero parámetros.> <> (Pez) , 2
Una forma creativa de usar el código infinito de peces:
Debido a que el puntero de instrucciones regresa al principio de la línea después de llegar al final, este código puede leerse esencialmente como
que significa 'leer la cadena "o" y luego generarla ".
Puedes probar el código aquí
fuente
perl, 10 caracteres
Aquí hay otra solución de 10 char perl con algunas compensaciones diferentes. Específicamente, no requiere el indicador -n o la entrada del usuario para comenzar. Sin embargo, sigue comiendo memoria hasta el infinito.
guardar en un archivo, ejecutar ese archivo y obtendrá, por ejemplo:
fuente
say(que siempre imprime una nueva línea, incluso si no puede encontrar un argumento desde cualquier lugar) en lugar de hacerlowarn? (Esto requiere la selección de una variante moderna Perl usando-M5.010, pero eso no cuenta para el recuento de caracteres.)dc , 7
imprime 'pdx \ n' infinitamente muchas veces.
fuente
VBA: 12
Se emite audio, ¿verdad?
¡Ponga eso en el archivo de MS Office favorito de su compañero de trabajo 'favorito' para una 'diversión'!
Puntos de bonificación si usan auriculares.
fuente
Semilla , 4 bytes
Pruébalo en línea! Salidas
11infinitasGenera el siguiente programa Befunge-98:
Pruébalo en línea!
La parte relevante es solo esto:
bempuja11a la pila y lo.imprime.1y49también se empujan a la pila, pero en realidad nunca se imprimen.Animación del código en ejecución:
fuente
C,
262524 (sin recursión)Imprime infinitos
'\n'personajes. Este es un byte más largo que la respuesta C más corta, pero no se basa en la optimización de llamadas de cola para evitar desbordar la pila.fuente
for(;;)en lugar dewhile(!!ya que sigue\nR, 13 caracteres
fuente
repeat cat(1)debería funcionarPowerShell 2.0:
17118Mi solución inicial:
Gracias a res:
Creo que Danko Durbić tiene el ganador, aquí. Ni siquiera estoy seguro de por qué esto debería funcionar, pero funciona y no puedo pensar en nada más corto hasta ahora.
fuente
while(1){1}.while($true){1}pero su solución definitivamente gana; lo olvidé en PowerShell$true -eq 1. Publíquelo como respuesta y le daré un voto.for(){1}.