Programa más corto que arroja StackOverflow Error [cerrado]


75

Escriba un programa que arroje un error StackOverflow o el equivalente en el idioma utilizado. Por ejemplo, en Java , el programa debería lanzar java.lang.StackOverflowError.

No está permitido definir una función que se llame a sí misma o una nueva clase (excepto la que contiene mainen Java). Debe usar las clases del lenguaje de programación seleccionado.

Y no debe arrojar el error explícitamente.


44
No entiendo "usar las clases del lenguaje de programación seleccionado"
Prince John Wesley

3
¿Está bien definir una función que llame a una función interna como esta def s{def t=s;t}?
Príncipe John Wesley

12
En la mayoría de los idiomas, las clases son solo un tipo especial de estructura de datos, no el centro del universo. Muchos ni siquiera tienen tal cosa.
dejó de girar en sentido contrario a las agujas del reloj el

1
Lo curioso aquí es que los lenguajes que requieren la eliminación de la recursividad de cola (y las implementaciones que lo admiten cuando los idiomas no lo requieren), que en un sentido muy real son mejores, están en desventaja en esto. La respuesta de TwiNight enlaza con la versión de esto que existe en Stack Overflow desde los primeros días.
dmckee

1
Desde el documento de Java: se produce cuando se produce un desbordamiento de la pila porque una aplicación se repite demasiado profundamente. docs.oracle.com/javase/6/docs/api/java/lang/…
jsedano

Respuestas:


90

Befunge, 1

No sé Befunge, pero ...

1

del código de desbordamiento de pila golf


21
Explicación: 1 es un literal numérico que se inserta en la pila cuando se encuentra. En Befunge, el flujo de control se envuelve hasta encontrar un @final para el programa.
Histocrat

66
No sabía que había esta pregunta en StackOverflow. Solo busqué en este sitio antes de publicar.
True Soft

31
Me siento un poco halagado de ver mi respuesta aquí.
Patrick

44
Esto también funciona en> <>.
Cruncher el

49

Python (2.7.3), 35 caracteres

import sys
sys.setrecursionlimit(1)

Esta operación en sí tiene éxito, pero tanto el script como el interactivo se lanzarán inmediatamente RuntimeError: 'maximum recursion depth exceeded'como consecuencia.

Inspirado por la respuesta de elssar.


Pensé en poner eso como mi solución, pero no estaba seguro de si el error podría considerarse un desbordamiento de pila. Aunque, esencialmente, eso es lo que es, ¿verdad?
elssar

2
@elssar: Creo que hay dos formas de desbordar la pila: agrandar la parte usada de la pila o reducir la parte no utilizada de la pila. Si imagina que un cubo se llena con agua, puede desbordarlo agregando más agua, pero también puede desbordarlo encogiendo el cubo.

19

Coq

Compute 70000.

70000es solo azúcar sintáctico para S (S ( ... (S O) ...))70000 S's. Creo que es el verificador de tipos lo que causa el desbordamiento de la pila.

Aquí hay una advertencia que se imprime antes de ejecutar el comando:

Warning: Stack overflow or segmentation fault happens when working with large
numbers in nat (observed threshold may vary from 5000 to 70000 depending on
your system limits and on the command executed).

2
Eso podría hacerte pensar que Coq es un lenguaje increíblemente tonto ... divertido ...
dejó de girar en contra del reloj el

1
@leftaroundabout En realidad no. El tipo Nat es un número peano de nivel de tipo que debe actuar como si fuera una lista vinculada.
FUZxxl

1
@FUZxxl: mi comentario no fue irónico en absoluto. Decide por ti mismo si quieres incluir la lógica clásica en esa oración, o prefieres seguir siendo constructivo ...
dejó de girar en contra del reloj el

2
@leftaroundabout Vaya ... lo siento. Olvidé que el analizador de rebajas siempre se come esas lindas etiquetas de "ironía".
FUZxxl

19

Java - 35

class S{static{new S();}{new S();}}

¿OP no dijo que no hay nuevas clases? No veo un public static void mainahí dentro. ¿O simplemente no entiendo Java?
Braden Best

44
@ B1KMusic No hay nuevas clases, solo hay una clase (S). El código usa un inicializador estático, arroja el SO antes de que jvm descubra que no hay un método principal. Funciona con Java 6.
Aditsu

1
Entiendo el bloque estático. ¿Pero cuál es el próximo bloque?
Nicolas Barbulesco

1
@NicolasBarbulesco Ese es un bloque inicializador, se ejecuta cuando construyes una nueva instancia.
aditsu

1
@LuigiCortese Creo que solo funciona con Java 6 o más viejo
aditsu

19

Javascript 24 caracteres

Respuesta dependiente del navegador (debe tener acceso a apply):

eval.apply(0,Array(999999))
  • eval fue el nombre de función global más corto que pude encontrar (¿alguien sabe de uno que sea más corto?)
  • applynos permite convertir una matriz en parámetros de función, siendo el primer parámetro el contexto de la función ( this)
  • Array(999999)creará una matriz con la longitud indicada. No estoy seguro de cuál es el número máximo de argumentos, pero es menor que esto y más de99999

IE9:

SCRIPT28: Out of stack space 
SCRIPT2343: Stack overflow at line: 20 

Chrome 24:

Uncaught RangeError: Maximum call stack size exceeded 

FireFox 18

RangeError: arguments array passed to Function.prototype.apply is too large

Nota : Debido a la naturaleza de un solo subproceso de javascript, los bucles infinitos terminan bloqueando la interfaz de usuario y nunca lanzan una excepción.

while(1);
for(;;);

Ninguno de estos califica.

Actualización : esto elimina tres caracteres:

eval.apply(0,Array(1e7))

MDN dice que evales el más corto.
Peter Taylor el

55
eval.apply(0,Array(1e6))ahorra 3 caracteres, incluso puedes ir 9e9sin costo
ThinkChaos

1
applyes una característica estándar de ECMAScript. No hay nada que dependa del navegador. A menos que esté hablando de navegadores muy antiguos, pero de applytodos modos esto no funcionaría en el hipotético Netscape 2 , porque la Arrayclase no existe en Netscape 2.
Konrad Borowski

1
nuevo más corto en ES6:eval(...Array(9e9))
Patrick Roberts el

1
Probablemente no estándar, arroja Chrome desde la consola. dir.apply(0,Array(1e7));
Paul J

17

Python 2.7 (12 caracteres)

exec('{'*99)

da como resultado un «s_push: desbordamiento de la pila del analizador»


44
TengoSyntaxError: unexpected EOF while parsing
Martin Thoma

1
Con exec('{'*101)I getMemoryError
Martin Thoma

44
En Python2, execes una declaración, por lo que puede usar exec'{'*999(99 no parece ser suficiente)
gnibbler

Necesita al menos 100 para activar un MemoryError. Y ese ≠ desbordamiento de pila
noɥʇʎԀʎzɐɹƆ

13

Mathematica, 4 caracteres

x=2x

$ RecursionLimit :: reclim: se excedió la profundidad de recursión de 1024. >>


1
"No puede definir una función que se llame a sí misma"
Tomás

13
Esa no es una función, es una variable (a menos que no sea lo que parece).
AMK

Tomaste mi idea.
PyRulez

12

Clojure, 12 caracteres

(#(%%)#(%%))

Ejecutando en la réplica:

user=> (#(%%)#(%%))
StackOverflowError   user/eval404/fn--407 (NO_SOURCE_FILE:1)

Esto me recuerda la expresión del cálculo lambda (\x.xx)(\x.xx), pero no sé lo suficientemente bien como para decir con certeza si esto es lo que está sucediendo. Tampoco veo por qué la expresión mencionada daría como resultado un desbordamiento de la pila, ¿entonces tal vez estás haciendo algún truco con el combinador Y? Esta respuesta me interesa y una explicación sería buena.
Zwei

12

Java - 113 caracteres

Creo que esto se mantiene dentro del espíritu de la regla "sin métodos de auto-llamada". No lo hace explícitamente, e incluso pasa por una construcción de lenguaje Java.

public class S {
    public String toString() {
        return ""+this;
    }
    public static void main(String[] a) {
        new S().toString();
    }
}

Versión condensada:

public class S{public String toString(){return ""+this;}public static void main(String[] a){new S().toString();}}

9
Bueno, ""+thises en realidad ""+this.toString(), así que el método se llama a sí mismo.
True Soft

1
@TrueSoft Bastante seguro de que Java arroja un StringBuilderobjeto allí. toStringprobablemente será llamado desde adentro.
Cruncher

1
Cuando el compilador y el optimizador terminan, el toString()método termina siendopublic java.lang.String toString() { return this.toString(); }
Jonathan Callen

12

C, 19 bytes

main(){int i[~0u];}

44
@Thomas Sí, es un desbordamiento de pila en cualquier máquina donde las variables locales se asignan en la pila. Dado que el lenguaje C no tiene el concepto de una indicación de desbordamiento de pila (todo es un comportamiento indefinido; uno de ellos se manifiesta como un defecto), esto cumple con el requisito original.
Jens

OK, lo siento, acepto.
Tomás

3
me da main.c:1:16: error: size of array 'i' is negativeen gcc 4.8.1. La versión sin firmar main(){int i[~0U];}funciona.
Csq

No me funciona después de configurar manualmente una pila de 4GB.
FUZxxl

@FUZxxl Interesante; son tus ints 32 bit? Si es así, sizeof(i)es de 16 GB. ¿El uso de un sufijo ulo ullhace alguna diferencia? Algunos sistemas sobre-confirman la memoria y solo se bloquean si se escribe en la memoria.
Jens

10

GolfScript (8 caracteres)

{]}333*`

Resultado:

$ golfscript.rb overflow.gs 
golfscript.rb:246:in `initialize': stack level too deep (SystemStackError)
from /home/pjt33/bin/golfscript.rb:130:in `new'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `map'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
from /home/pjt33/bin/golfscript.rb:130:in `map'
from /home/pjt33/bin/golfscript.rb:130:in `ginspect'
 ... 993 levels...
from (eval):4
from /home/pjt33/bin/golfscript.rb:293:in `call'
from /home/pjt33/bin/golfscript.rb:293:in `go'
from /home/pjt33/bin/golfscript.rb:485

Básicamente, esto crea una estructura de datos muy anidada y luego desborda la pila al intentar convertirla en una cadena.


Para mí, esto no arroja un error, sino salidas[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[""]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]] (and so on, output too long for comments)
ProgramFOX

@ProgramFOX, habrá algún valor con el que puede reemplazar 333y se romperá. 333fue el valor más pequeño que se rompió para mí, pero si tiene una versión diferente de Ruby (o tal vez la misma versión en un sistema operativo diferente, por lo que sé), podría manejar una cantidad diferente de marcos de pila antes de desbordarse.
Peter Taylor

1
Se rompe en 3192 en mi máquina, por lo que 6.?aún funciona sin agregar caracteres.
Dennis

10

Ensamblaje x86, sintaxis NASM, 7 bytes

db"Pëý"

"Pëý" es 50 EB FD en hexadecimal, y

_loop:
push eax
jmp _loop

en montaje x86.


8

Rubí, 12

eval"[]"*9e3

Da

SystemStackError: stack level too deep

Presumiblemente depende del sistema, pero puede agregar órdenes de magnitud subiendo el último dígito (no recomendado).

Editar para explicación: de manera similar a algunos otros ejemplos, esto crea una cadena de [][][]... repetida 9000 veces, luego la evalúa: el extremo derecho []se analiza como una llamada de función al resto, y así sucesivamente. Si realmente llegara al principio, arrojaría un ArgumentError porque []es un objeto con un []método que requiere un argumento, pero mi máquina arroja un error un poco antes de que la pila supere los nueve mil.


hmm ... se estrelló IRB: P
Pomo de la puerta

¿Cual version? ruby1.9.2 arroja "ArgumentError: número incorrecto de argumentos (0 para 1..2)".
manatwork 01 de

Encontrado un viejo ruby1.8.7. Allí el código publicado funciona como se describe.
manatwork 01 de

Extraño, funciona en mi 1.8.7, 1.9.2 y 1.9.3.
histocrat

Hubiera dichodef f;f;end;f
EMBLEMA

8

Rebol (11 caracteres)

do s:[do s]

Rendimientos:

>> do(s:[do s])    
** Internal error: stack overflow
** Where: do do do do do do do do do do do do do do do do 
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do 
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do do do do do do do do
do do do do do do do do do do do do...

Aunque Rebol tiene funciones, cierres y objetos ... esto no define ninguno de esos. Define una estructura de datos, que en el paradigma de código como datos puede tratarse como código usando DO.

Podemos investigar la cuestión de "qué es S" con el REPL:

>> s: [do s]
== [do s]

>> type? s
== block!

>> length? s
== 2

>> type? first s
== word!

>> type? second s
== word!

DO nunca convierte esto en una función, invoca al evaluador en el entorno actual de la estructura.


1
+1 ... No me había dado cuenta de que mi respuesta estaba definiendo una función y eso estaba en contra de las reglas, pero edité mi respuesta para usar DO ... luego noté que ya había enviado esa respuesta. Así que acabo de eliminar el mío, pero dado que escribí por qué esto no define un objeto / función / cierre, pensé en poner la explicación en la tuya. También creo que el do do do do es divertido y vale la pena incluirlo. :-) Espero que esté bien!
Dr. Rebmu

7

C, 35 caracteres

main(){for(;;)*(int*)alloca(1)=0;}

¿Por qué almacenar algo en el espacio asignado?
Peter Taylor

1
En este caso, es imposible resolver este problema en C.
FUZxxl

3
@dmckee, no todas las fallas de segmentación son desbordamientos de pila, pero diría que sí, ya que es el resultado de exceder la capacidad de la pila.
Ugoren

1
@dmckee, alloca asigna de la pila.
ugoren

1
@PeterTaylor: Probablemente depende de la implementación, pero en mi caso alloca(1)se traduce básicamente para sub $1, %espque no se toque la pila.
Trabajo

7

Lisp común, 7 caracteres

#1='#1#

Hermoso ... planeaba usarlo #1=(#1#)para la terminal y (print #1=(#1#)), pero su solución es mucho mejor
protista el

En realidad, eso no se desborda en el momento de la lectura, solo cuando intentas imprimirlo. Entonces, aparte de la diferencia de 1 personaje, el tuyo no es mejor.
Protista

Tienes razón, solo lo edité. No estoy seguro de si hay una manera de causar un desbordamiento en el momento de la lectura.
Erik Haliewicz

En realidad, #. # 1 = '# 1 # causa un desbordamiento del tiempo de lectura :-)
Erik Haliewicz

7

Python - 11 caracteres

exec'('*999

>>> exec'('*999
s_push: parser stack overflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError

Solución muy inteligente.
mbomb007

7

Calculadora Casio, 11 pulsaciones de teclas

Es bastante difícil contar bytes / tokens en este "idioma": he dado la cantidad de pulsaciones de teclas requeridas, excluyendo Shift, Alpha (la segunda tecla de mayúsculas) y =al final, esto ciertamente cabe en 1 byte por pulsación de tecla.

Probado en el modelo fx-85GT PLUS , que es una calculadora científica estándar, no gráfica, "no programable". Otros modelos funcionarán.

Solo apila 11 raíces cúbicas:

3√ 3√ 3√ 3√
3√ 3√ 3√ 3√
3√ 3√ 3√

Ni siquiera da un error de sintaxis sobre el número que falta debajo de la raíz cuadrada.

Esto no parece funcionar con raíces cuadradas.

Alternativamente, repita cos(31 veces.

Salida

Stack ERROR

[AC]  :Cancel
[<][>]:Goto

Creo que esto califica como un desbordamiento de pila. La pila parece ser pequeña ...


Siempre pensé que se llamaba error de pila porque "apilabas" demasiadas raíces: P
FlipTack

Mi calculadora Canon da un error de pila con casi cualquier operador (excluyendo al menos +, -, * y /) si se repite 25 veces o más. Por ejemplo, esto causa un error de pila (sin error de sintaxis):(((((((((((((((((((((((((
Steadybox

7

FORTH, 13 bytes

BEGIN 1 AGAIN

desborda la pila de valores


: X X ; X(9) debe desbordar la pila de devolución
AMK

no funcionará (X no se define mientras se define la llamada y eso es una auto referencia / recursión
ratchet freak

@ratchetfreak, esas palabras de control solo se pueden usar en un estado de compilación, por lo que deben incluirse en una :... ;definición de palabras. Eso agrega al menos 6 caracteres, más al menos 2 más para que esto se ejecute como un programa. Usted puede ser capaz de hacerlo más corto, pero aquí está un ejemplo: : F BEGIN 1 AGAIN ; F. Sugiero esto porque la pregunta es: "Escribe un programa". De todos modos, ¡te di un voto a favor para Forth, independientemente del recuento de char! :-)
Darren Stone

6

Postdata, 7

{1}loop

P.ej.

$ gsnd
GPL Ghostscript 9.06 (2012-08-08)
Copyright (C) 2012 Artifex Software, Inc.  All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
GS>{1}loop
Error: /stackoverflow in 1
Operand stack:
   --nostringval--
Execution stack:
   %interp_exit   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue   --nostringval--   --nostringval--   false   1   %stopped_push   .runexec2   --nostringval--   --nostringval--   --nostringval--   2   %stopped_push   --nostringval--   --nostringval--   %loop_continue
Dictionary stack:
   --dict:1168/1684(ro)(G)--   --dict:0/20(G)--   --dict:77/200(L)--
Current allocation mode is local
Last OS error: No such file or directory
Current file position is 8
GS<1>


6

LaTeX: 8 caracteres

\end\end

Este es el mismo código utilizado en esta respuesta . Esencialmente, la \endmacro se expande repetidamente, lo que resulta en un desbordamiento de pila: TeX capacity exceeded, sorry [input stack size=5000]. Una explicación más detallada se puede encontrar aquí .


5

PHP 5.4, 33 caracteres

for($n=1e5;$n--;)$a=(object)[$a];

Esto provoca un desbordamiento de la pila cuando los objetos stdClass anidados se destruyen automáticamente:

$ gdb -q php
Reading symbols from /usr/bin/php...(no debugging symbols found)...done.
(gdb) set pagination 0
(gdb) r -nr 'for($n=1e5;$n--;)$a=(object)[$a];'
Starting program: /usr/bin/php -nr 'for($n=1e5;$n--;)$a=(object)[$a];'
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Program received signal SIGSEGV, Segmentation fault.
0x00000000006debce in zend_objects_store_del_ref_by_handle_ex ()
(gdb) bt
#0  0x00000000006debce in zend_objects_store_del_ref_by_handle_ex ()
#1  0x00000000006dee73 in zend_objects_store_del_ref ()
#2  0x00000000006a91ca in _zval_ptr_dtor ()
#3  0x00000000006c5f78 in zend_hash_destroy ()
#4  0x00000000006d909c in zend_object_std_dtor ()
#5  0x00000000006d9129 in zend_objects_free_object_storage ()
#6  0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#7  0x00000000006dee73 in zend_objects_store_del_ref ()
#8  0x00000000006a91ca in _zval_ptr_dtor ()
#9  0x00000000006c5f78 in zend_hash_destroy ()
#10 0x00000000006d909c in zend_object_std_dtor ()
#11 0x00000000006d9129 in zend_objects_free_object_storage ()
[...]
#125694 0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#125695 0x00000000006dee73 in zend_objects_store_del_ref ()
#125696 0x00000000006a91ca in _zval_ptr_dtor ()
#125697 0x00000000006c5f78 in zend_hash_destroy ()
#125698 0x00000000006d909c in zend_object_std_dtor ()
#125699 0x00000000006d9129 in zend_objects_free_object_storage ()
#125700 0x00000000006dee53 in zend_objects_store_del_ref_by_handle_ex ()
#125701 0x00000000006dee73 in zend_objects_store_del_ref ()
#125702 0x00000000006a91ca in _zval_ptr_dtor ()
#125703 0x00000000006c4945 in ?? ()
#125704 0x00000000006c6481 in zend_hash_reverse_apply ()
#125705 0x00000000006a94e1 in ?? ()
#125706 0x00000000006b80e7 in ?? ()
#125707 0x0000000000657ae5 in php_request_shutdown ()
#125708 0x0000000000761a18 in ?? ()
#125709 0x000000000042c420 in ?? ()
#125710 0x00007ffff5b6976d in __libc_start_main (main=0x42bf50, argc=3, ubp_av=0x7fffffffe738, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe728) at libc-start.c:226
#125711 0x000000000042c4b5 in _start ()

2
¡+1 para lo que debe ser la segunda aparición de PHP en CodeGolf!
Bojangles

5

Q / k (16 caracteres)

No estoy seguro si esto está en el espíritu del desafío, pero no creo que rompa las reglas:

s:{f`};f:{s`};f`

Es una pena que C # requiera tanto tipeo, ¡inspiraste mi respuesta!
Andrew Gray

5

Un grupo del mismo estilo:

Python, 30

(lambda x:x(x))(lambda y:y(y))

Javascript, 38

(function(x){x(x)})(function(y){y(y)})

Lua, 44

(function(x) x(x) end)(function(y) y(y) end)

En Python x=lambda y:y(y);x(x)es más corto (20 caracteres). Esta función no es recursiva. x llama a cualquier función que se le pase como argumento.
AMK

Ruby 2.0 -->x{x[x]}[->y{y[y]}]
John Dvorak

Mathematica#@#&[#@#&]
alephalpha

Solo está utilizando la recursividad, entonces ¿por qué no hacer eso, por ejemplo, en JS: (función x () {x ()}) ()?
xem

Los requisitos de @xem dicen que no hay recursión, por eso.
Danny

5

C #: 106 86 58 46 32 28

32 : Getters puede SO su máquina fácil en C #:

public int a{get{return a;}}

1
No necesita setterpublic int a {get{return a;}}
Mike Koder

3
Esto viola la regla "No está permitido definir una función que se llame a sí misma". Es cierto que está oculto detrás de la sintaxis de azúcar, pero todavía le falta el punto del desafío.
Peter Taylor

Agregar el setter elude la regla, porque ahora tiene dos funciones que se llaman entre sí. Pero me pregunto: ¿eso todavía viola las intenciones del OP detrás de este desafío?
Andrew Gray

1
La idea, según tengo entendido, es encontrar una recursión excesivamente anidada en el intérprete o API estándar del lenguaje. Esto podría no ser demasiado fácil en C #.
Peter Taylor

1
¿Por qué "cadena pública"? "int" funciona igual de bien:int a { get { return a; } }
NPSF3000

5

INTERCAL, 12 bytes

(1)DO(1)NEXT

Explicación:

NEXTes la versión de INTERCAL de una llamada de subrutina (o, al menos, la más cercana que puede obtener). Empuja la posición actual en la NEXTpila y salta a la etiqueta dada.

Sin embargo, si la NEXTlongitud de la pila excede 80, obtienes lo que es más o menos la versión INTERCAL de un desbordamiento de pila:

ICL123I PROGRAM HAS DISAPPEARED INTO THE BLACK LAGOON
    ON THE WAY TO 1
        CORRECT SOURCE AND RESUBNIT

Pruébalo en Ideone. .


66
"HA DESAPARECIDO EN LA LAGUNA NEGRA" ¿Qué es esto, ArnoldC?
Addison Crump

5

Mornington Crescent, 139 133

Take Northern Line to Bank
Take Circle Line to Temple
Take Circle Line to Temple
Take Circle Line to Bank
Take Northern Line to Angel

4

Conjunto X86 (AT&T), 33 caracteres

Tenga en cuenta que aunque estoy usando la etiqueta maincomo un objetivo de salto, esta no es una función recursiva.

.globl main
main:push $0;jmp main

Buena idea: esta es una especie de recursión sin recursión.
Andrea Corbellini

usando a86: dd 0fdeb6010 caracteres!
Skizz

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.