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
0
para siempre. Funciona porque en las líneas Befunge se envuelven, y obtienes0
si 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 (
0x21
o!
) 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
int
llamada: 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
%0
no 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
y
continuamentefuente
yes
es un binario externo, y no forma parte de bash (estrictamente hablando).y=yes
y si su sistema no es esotérico, puede suponer queyes
está en su$PATH
(vea GNU Core Utilities ). Con su lógica, es posible asumir constelaciones extrañas para cada solución.bash
capacidad: 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
x
es 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$show
hubiera 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 a
3a 61 0a 67 6f 74 6f 20
funciona en mi Windows 8 ...: PBrainfuck, 4
Alternativamente,
fuente
\x01
tampoco\xFF
son 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)
?static
bloque.Bash, 4 bytes
Salidas
./forever2.sh: line 1: $: command not found
continuas.Debido a que
$0
está 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.
top
informa 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
$0
falla.LOLCODE (36)
Pensé que le daría una oportunidad a LOLCODE, tiene una funcionalidad sorprendentemente grande.
fuente
HAI
yKTHXBYE
JavaScript: 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),s
describe el único estado existente (inicio),1
está imprimiendo un dígito,R
significa desplazarse hacia la derecha,s
al 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
Show
estructura 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@0
se 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 la24
canica porFF
y 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?putc
requiere 2 parámetros.Python 3: 15, 17 o 18 caracteres
La respuesta de mdeitrick es más larga en Python 3, que reemplaza la
print
declaració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; the8
es 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).any
consume la entrada iterable buscando un valor verdadero, que nunca llega ya queprint()
siempre regresaNone
. (También puede usarset
para 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 ax
incrementa el registro AX en uno.int 0x29
es 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 si
es 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
1
y elwhile
, pero aparentemente funcionaGolfscript, 6
¡Mi primer programa Golfscript! :PAGS
> <> ( Pez ), 2
Espacio en blanco , 19
Donde
s
representa un espacio,t
representa una pestaña yl
un salto de línea.fuente
{1p}do
solo imprime1
y 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
11
infinitasGenera el siguiente programa Befunge-98:
Pruébalo en línea!
La parte relevante es solo esto:
b
empuja11
a la pila y lo.
imprime.1
y49
tambié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\n
R, 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}
.