Le programme le plus court qui génère une erreur StackOverflow [fermé]

75

Ecrivez un programme qui génère une erreur StackOverflow ou l’équivalent dans la langue utilisée. Par exemple, en Java , le programme devrait lancer java.lang.StackOverflowError.

Vous n'êtes pas autorisé à définir une fonction qui s'appelle elle-même ou une nouvelle classe (sauf celle contenant mainjava). Il devrait utiliser les classes du langage de programmation sélectionné.

Et il ne faut pas jeter l'erreur explicitement.

True Soft
la source
4
Je ne comprends pas "utiliser les classes du langage de programmation sélectionné"
Prince John Wesley
3
Est-il possible de définir une fonction qui appelle une fonction interne comme celle-ci def s{def t=s;t}?
Prince John Wesley
12
Dans la plupart des langues, les classes ne sont qu'un type spécial de structure de données, et non le centre de l'univers. Beaucoup ne sont même pas avoir une telle chose.
cessé de tourner dans le sens anti-horaire le
1
La chose amusante ici est que les langues qui exigent l’élimination de la récursion finale (et les implémentations qui la supportent quand elles ne l’exigent pas) - qui sont vraiment meilleures au sens réel - sont désavantagées à cet égard. La réponse de TwiNight renvoie à la version de this existante sur Stack Overflow des premiers jours.
dmckee
1
De la doc java: levé lorsqu'un débordement de pile se produit car une application est trop récursive. docs.oracle.com/javase/6/docs/api/java/lang/…
jsedano

Réponses:

90

Befunge, 1

Je ne sais pas Befunge, mais ...

1

de Stack Overflow Code Golf

TwiNight
la source
21
Explication: 1 est un littéral numérique qui est poussé dans la pile lorsqu'il est rencontré. Dans Befunge, le flux de contrôle s’enroule jusqu’à la @fin du programme.
Histocrat
6
Je ne savais pas qu'il y avait cette question sur StackOverflow. J'ai cherché uniquement sur ce site avant de poster.
True Soft
31
Je suis légèrement flatté de voir ma réponse ici.
Patrick
4
Cela fonctionne dans> <> aussi.
Cruncher
49

Python (2.7.3), 35 caractères

import sys
sys.setrecursionlimit(1)

Cette opération elle-même réussit, mais le script et l’interactif jetteront immédiatement la RuntimeError: 'maximum recursion depth exceeded'suite.

Inspiré par la réponse d'elssar.

Kevin Reid
la source
Je pensais plutôt mettre cela comme solution, mais je ne savais pas si l'erreur pouvait être considérée comme un dépassement de capacité. Bien que, essentiellement, c'est ce que c'est, non?
elssar
2
@elssar: Je suppose qu'il y a deux façons de déborder de la pile: agrandir la partie utilisée de la pile ou réduire la partie inutilisée de la pile. Si vous imaginez un seau se remplissant d’eau, vous pouvez le déborder en ajoutant de l’eau, mais vous pouvez également le faire en rétrécissant le seau.
19

Coq

Compute 70000.

70000est juste du sucre syntaxique pour S (S ( ... (S O) ...))avec 70000 S. Je pense que c'est le vérificateur de type qui cause le débordement de pile.

Voici un avertissement imprimé avant l'exécution de la commande:

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).
ReyCharles
la source
2
Cela pourrait vous laisser penser que Coq est un langage incroyablement stupide ... drôle ...
cessé de tourner en contre-horaire le
1
@leftaroundabout En fait non. Le type Nat est un peano numeral de niveau type qui doit faire office de liste chaînée.
FUZxxl
1
@FUZxxl: mon commentaire n'était pas du tout ironique. Décidez vous-même si vous voulez inclure la logique classique dans cette phrase, ou si vous préférez rester constructif ...
Cessé de tourner à contre sens, le
2
@leftaroundabout Oups ... désolé. J'ai oublié que l'analyseur de démarques mange toujours ces balises <lt; ironie </ b>;
FUZxxl
19

Java - 35

class S{static{new S();}{new S();}}
Aditsu
la source
OP n'a pas dit pas de nouvelles classes? Je ne vois pas public static void mainde là dedans. Ou est-ce que je ne parviens pas à comprendre Java?
Braden Best
4
@ B1KMusic Il n'y a pas de nouvelles classes, il n'y a qu'une classe (S). Le code utilise un initialiseur statique, il jette le SO avant que le JVM découvre qu'il n'y a pas de méthode principale. Fonctionne avec java 6.
Aditsu
1
Je comprends le bloc statique. Mais quel est le prochain bloc?
Nicolas Barbulesco
1
@ NicolasBarbulesco C'est un bloc d'initialisation, il est exécuté lorsque vous construisez une nouvelle instance.
Aditsu
1
@ LuigiCortese Je pense que cela ne fonctionne qu'avec java 6 ou plus ancien
aditsu
19

Javascript 24 caractères

Réponse dépendante du navigateur (doit avoir accès à apply):

eval.apply(0,Array(999999))
  • eval est-ce que le nom de fonction global le plus court que j'ai pu trouver (quelqu'un connaît-il un nom plus court?)
  • applynous permet de convertir un tableau en paramètres de fonction, le premier paramètre étant le contexte de la fonction ( this)
  • Array(999999)créera un tableau avec la longueur indiquée. Vous ne savez pas quel est le nombre maximum d'arguments, mais il est inférieur à cela et supérieur à99999

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

Remarque - En raison de la nature mono-threadée de javascript, des boucles infinies finissent par verrouiller l'interface utilisateur et ne jamais lancer d'exception.

while(1);
for(;;);

Ni l'un ni l'autre ne sont admissibles.

Mise à jour - cela rase trois personnages:

eval.apply(0,Array(1e7))
Shmiddty
la source
MDN dit que evalc'est le plus court.
Peter Taylor
5
eval.apply(0,Array(1e6))enregistre 3 caractères, vous pouvez même y aller 9e9sans frais
ThinkChaos
1
applyest une fonctionnalité standard d'ECMAScript. Il n'y a rien qui dépend du navigateur. Sauf si vous parlez de très vieux navigateurs, mais cela ne fonctionnerait pas dans l'hypothèse de Netscape 2 de applytoute façon, car la Arrayclasse n'existe pas dans Netscape 2.
Konrad Borowski
1
nouvelle plus courte en ES6:eval(...Array(9e9))
Patrick Roberts le
1
Probablement non standard, jette dans Chrome depuis la console. dir.apply(0,Array(1e7));
Paul J
17

Python 2.7 (12 caractères)

exec('{'*99)

résulte en un «s_push: débordement de pile de l'analyseur»

Daniel
la source
4
Je reçoisSyntaxError: unexpected EOF while parsing
Martin Thoma
1
Avec exec('{'*101)je reçoisMemoryError
Martin Thoma
4
En Python2, execc’est une déclaration que vous pouvez donc utiliser exec'{'*999(99 ne semble pas suffire)
gnibbler
Vous devez avoir au moins 100 pour déclencher une MemoryError. Et ce ≠ stack overflow
nozɐɹƆ
13

Mathematica, 4 caractères

x=2x

$ RecursionLimit :: reclim: La profondeur de récursivité de 1024 a été dépassée. >>

Alephalpha
la source
1
"Vous ne pouvez pas définir une fonction qui s'appelle elle-même"
Tomas
13
Ce n'est pas une fonction, c'est une variable (à moins que ça ne ressemble pas du tout à ça).
AMK
Tu as pris mon idée.
PyRulez
12

Clojure, 12 caractères

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

En cours d'exécution dans le repl:

user=> (#(%%)#(%%))
StackOverflowError   user/eval404/fn--407 (NO_SOURCE_FILE:1)
David Cabana
la source
Cela me rappelle l'expression du lambda calcul (\x.xx)(\x.xx), mais je ne connais pas assez la méthode du clojure pour savoir avec certitude si c'est ce qui se passe. Je ne vois pas non plus pourquoi l'expression ci-dessus entraînerait un débordement de pile, alors peut-être que vous faites une supercherie avec le combinateur en Y? Cette réponse m'intéresse et une explication serait bien.
Zwei
12

Java - 113 caractères

Je pense que cela reste dans l'esprit de la règle "pas de méthode d'auto-appel". Il ne le fait pas explicitement et passe même par une construction de langage Java.

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

Version condensée:

public class S{public String toString(){return ""+this;}public static void main(String[] a){new S().toString();}}
Joe K
la source
9
En ""+thisfait ""+this.toString(), la méthode s’appelle elle-même.
True Soft
1
@ TrueSoft Assez sûr que java jette un StringBuilderobjet là-bas. toStringsera probablement appelé de l'intérieur.
Cruncher
1
Au moment où le compilateur et l'optimiseur sont terminés, la toString()méthode finit par êtrepublic java.lang.String toString() { return this.toString(); }
Jonathan Callen
12

C, 19 octets

main(){int i[~0u];}
Jens
la source
4
@Thomas Oui, il s'agit d' un débordement de pile sur toute machine où des variables locales sont allouées sur la pile. Comme le langage C n’a pas de concept d’indication de débordement de pile (il s’agit d’un comportement indéfini; l’un d’eux se manifeste par une erreur de segmentation), cela correspond à l’exigence initiale.
Jens
OK, désolé, accepté.
Tomas
3
cela donne main.c:1:16: error: size of array 'i' is negativepour moi sur gcc 4.8.1. La version non signée main(){int i[~0U];}fonctionne.
Csq
Ne fonctionne pas pour moi après avoir configuré manuellement une pile de 4 Go.
FUZxxl
@FUZxxl Intéressant; sont vos bits 32 bits? Si oui, sizeof(i)est de 16 Go. L'utilisation d'un suffixe ulou d' un ullsuffixe fait-elle une différence? Certains systèmes surchargent la mémoire et ne se bloquent que si la mémoire est écrite.
Jens
10

GolfScript (8 caractères)

{]}333*`

Résultat:

$ 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

Fondamentalement, cela crée une structure de données fortement imbriquée, puis déborde de la pile lorsque vous essayez de la transformer en chaîne.

Peter Taylor
la source
Pour moi, cela ne jette pas une erreur, mais des sorties[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ [[[[[[[[[[[[[""]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]] ]]]]]]]]]]]]]]]]] (and so on, output too long for comments)
ProgramFOX le
@ProgramFOX, il y aura une valeur que vous pourrez remplacer 333et qui cèdera. 333C’était la plus petite valeur qui m’ait cassé pour moi, mais si vous avez une version différente de Ruby (ou peut-être la même version sous un système d’exploitation différent, pour autant que je sache), elle pourrait gérer un nombre différent de cadres de pile avant de déborder.
Peter Taylor
1
Breaks à 3192 sur ma machine, fonctionne donc 6.?toujours sans ajouter de caractères.
Dennis
10

Assemblage x86, syntaxe NASM, 7 octets

db"Pëý"

"Pëý" est 50 EB FD en hexadécimal, et

_loop:
push eax
jmp _loop

en assemblage x86.


la source
8

Rubis, 12

eval"[]"*9e3

Donne

SystemStackError: stack level too deep

Probablement dépendant du système, mais vous pouvez ajouter des ordres de grandeur en rapprochant le dernier chiffre (non recommandé).

Modifier pour l'explication: comme dans d'autres exemples, cela crée une chaîne de [][][]... répétée 9000 fois, puis l'évalue: la plus à droite []est analysée comme un appel de fonction au reste, etc. Si elle commence réellement au début, elle générera une ArgumentError car il []s'agit d'un objet avec une []méthode qui nécessite un argument, mais ma machine génère une erreur un peu avant que la pile dépasse 9 000.

histocrate
la source
hmm ... s'est écrasé IRB: P
Poignée de porte
Quelle version? ruby1.9.2 génère «ArgumentError: nombre d'arguments incorrect (0 pour 1..2)».
Manatwork
Trouvé un ancien ruby1.8.7. Là, le code posté fonctionne comme décrit.
Manatwork
Odd, cela fonctionne sur mes 1.8.7, 1.9.2 et 1.9.3.
Histocrate
J'aurais ditdef f;f;end;f
EMBLEM
8

Rebol (11 Chars)

do s:[do s]

Rendements:

>> 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...

Bien que Rebol ait des fonctions, des fermetures et des objets… cela ne définit aucun de ceux-ci. Il définit une structure de données qui, dans le paradigme code en tant que données, peut être traitée comme un code utilisant DO.

Nous pouvons approfondir la question de "qu'est-ce que S" avec le REPL:

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

>> type? s
== block!

>> length? s
== 2

>> type? first s
== word!

>> type? second s
== word!

NE transforme jamais cela en une fonction, il appelle l'évaluateur dans l'environnement actuel de la structure.

rgchris
la source
1
+1 ... Je n'avais pas remarqué que ma réponse définissait une fonction et que c'était contraire aux règles, mais j'ai modifié ma réponse pour utiliser DO ... puis j'ai remarqué que vous aviez déjà soumis cette réponse. Donc, je viens de supprimer le mien, mais depuis que j'ai écrit pourquoi ceci ne définit pas un objet / une fonction / une fermeture, je pensais mettre l'explication dans le vôtre. Aussi, je pense que le do do do do est assez drôle et mérite d’être inclus. :-) J'espère que ça va!
Dr. Rebmu
7

C, 35 caractères

main(){for(;;)*(int*)alloca(1)=0;}
Emploi
la source
Pourquoi stocker quoi que ce soit dans l'espace attribué?
Peter Taylor
1
Dans ce cas, il est impossible de résoudre ce problème en C.
FUZxxl
3
@dmckee, toutes les erreurs de segmentation ne sont pas des débordements de pile, mais je dirais que c'est le cas, car elles résultent d'un dépassement de la capacité de la pile.
Ugoren
1
@dmckee, alloca alloue depuis la pile.
Ugoren
1
@PeterTaylor: Cela dépend probablement de la mise en œuvre, mais dans mon cas, la alloca(1)traduction est essentiellement traduite de sub $1, %espmanière à ne pas toucher à la pile.
Job
7

Common Lisp, 7 caractères

#1='#1#
Erik Haliewicz
la source
Magnifique ... Je prévoyais utiliser #1=(#1#)pour le terminal et (print #1=(#1#)), mais votre solution est tellement meilleure.
protiste
En réalité, cela ne déborde pas au moment de la lecture, mais uniquement lorsque vous essayez de l’imprimer. Donc, mis à part la différence d'un caractère, le vôtre ne vaut pas mieux.
protiste
Vous avez raison, venez de modifier cela. Je ne sais pas s'il existe un moyen de provoquer un débordement au moment de la lecture.
Erik Haliewicz
En fait, #. # 1 = '# 1 # provoque un débordement en lecture :-)
Erik Haliewicz
7

Python - 11 caractères

exec'('*999

>>> exec'('*999
s_push: parser stack overflow
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
MemoryError
gnibbler
la source
Solution très intelligente.
mbomb007
7

Calculatrice Casio, 11 touches

Il est assez difficile de compter les octets / jetons dans cette "langue" - j'ai donné le nombre de touches requis, à l'exclusion de Shift, Alpha (la touche de la deuxième touche) et =à la fin - cela correspond certainement à 1 octet par touche.

Testé sur le modèle fx-85GT PLUS , qui est une calculatrice scientifique standard, non graphique, "non programmable". D'autres modèles fonctionneront.

Il suffit d'empiler 11 racines de cube:

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

Il ne donne même pas d'erreur de syntaxe sur le nombre manquant sous la racine carrée.

Cela ne semble pas fonctionner avec des racines carrées.

Sinon, répétez cos(31 fois.

Sortie

Stack ERROR

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

Je crois que cela peut être qualifié de débordement de pile. La pile semble être minuscule ...


la source
J'ai toujours pensé que cela s'appelait erreur de pile parce que vous "empiliez" trop de racines: P
FlipTack
Ma calculatrice Canon donne une erreur de pile avec à peu près n'importe quel opérateur (à l'exception des +, -, * et / au moins) si elle est répétée 25 fois ou plus. Par exemple, cela provoque une erreur de pile (sans erreur de syntaxe):(((((((((((((((((((((((((
Steadybox
7

FORTH, 13 octets

BEGIN 1 AGAIN

déborde de la pile de valeurs

monstre à cliquet
la source
: X X ; X(9) doit déborder de la pile de retour
AMK le
ne fonctionnera pas (X n'est pas défini lors de la définition de l'appel et il s'agit d'une référence / récursivité automatique
phénomène de cliquet
@ratchetfreak, ces mots de contrôle ne peuvent être utilisés que dans un état de compilation, ils doivent donc être enveloppés dans une :... ;définition de mot. Cela ajoute au moins 6 caractères, plus au moins 2 autres pour l’exécuter en tant que programme. Vous pourriez être en mesure de le faire plus court, mais voici un exemple: : F BEGIN 1 AGAIN ; F. Je suggère cela parce que la question demande: "Écris un programme." Quoi qu'il en soit, vous avez donné un vote positif pour Forth, quel que soit le nombre de personnages! :-)
Darren Stone
6

Postscript, 7

{1}loop

Par exemple.

$ 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>
luser droog
la source
6

Haskell (GHC, pas d'optimisation), 25

main=print$sum[1..999999]

la somme est paresseuse dans le total. Cela empile un tas de thunks, puis tente de les évaluer tous à la fin, ce qui entraîne un débordement de pile.

Joey Adams
la source
J'ai toujours pensé que sum était implémenté en utilisant foldl '. n'est ce pas?
fier haskeller
6

LaTeX: 8 caractères

\end\end

C'est le même code utilisé dans cette réponse . Pour l' essentiel, la \endmacro se développe à plusieurs reprises, ce qui entraîne un débordement de pile: TeX capacity exceeded, sorry [input stack size=5000]. Une explication plus détaillée peut être trouvée ici .

bwDraco
la source
5

PHP 5.4, 33 caractères

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

Cela provoque un débordement de pile lorsque les objets imbriqués stdClass sont automatiquement détruits:

$ 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 ()
Veuillez vous lever
la source
2
+1 pour ce qui doit être la deuxième apparition de PHP sur CodeGolf!
Bojangles
5

Q / k (16 caractères)

Pas sûr que ce soit dans l'esprit du défi mais je ne pense pas que cela enfreigne les règles:

s:{f`};f:{s`};f`
Skeevey
la source
Dommage que C # nécessite tant de frappe, vous avez inspiré ma réponse!
Andrew Gray
5

Un groupe dans le même style:

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)
Eric
la source
En Python x=lambda y:y(y);x(x)est plus court (20 caractères). Cette fonction n'est pas récursive. x appelle toute fonction qui lui est transmise en tant qu'argument.
AMK
Ruby 2.0 -->x{x[x]}[->y{y[y]}]
John Dvorak
Mathematica#@#&[#@#&]
alephalpha
Vous utilisez simplement la récursivité, alors pourquoi ne pas le faire, par exemple dans JS: (fonction x () {x ()}) ()?
xem
@xem Requirements dit non récursivité, c'est pourquoi.
Danny
5

C #: 106 86 58 46 32 28

32 : Les Getters peuvent SO votre machine facilement en C #:

public int a{get{return a;}}
Andrew Gray
la source
1
Pas besoin de passeurpublic int a {get{return a;}}
Mike Koder
3
Ceci enfreint la règle "Vous n'êtes pas autorisé à définir une fonction qui s'appelle elle-même". Certes, il est caché derrière le sucre de syntaxe, mais il manque toujours le but du défi.
Peter Taylor
Ajouter le setter contourne quelque peu la règle, car vous avez maintenant deux fonctions qui s'appellent. Mais je me demande: est-ce que cela viole toujours les intentions du PO derrière ce défi?
Andrew Gray
1
Si je comprends bien, l’idée est de trouver une récursion trop imbriquée dans l’interpréteur ou dans l’API standard du langage. Cela pourrait ne pas être trop facile en C #.
Peter Taylor
1
Pourquoi "chaîne publique"? "int" fonctionne aussi bien:int a { get { return a; } }
NPSF3000
5

INTERCAL, 12 octets

(1)DO(1)NEXT

Explication:

NEXTest la version d’un appel de sous-programme par INTERCAL (ou du moins, la plus proche que vous puissiez obtenir). Il pousse la position actuelle sur la NEXTpile et saute à l'étiquette donnée.

Cependant, si la NEXTlongueur de la pile dépasse 80, vous obtenez ce qui est à peu près la version INTERCAL d'un débordement de pile:

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

Essayez-le sur Ideone. .

kirbyfan64sos
la source
6
"S'EST DISPARU DANS LA LAGUNE NOIRE" qu'est-ce que c'est, ArnoldC?
Addison Crump
5

Croissant Mornington, 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
poivré
la source
4

Assemblage X86 (AT & T), 33 caractères

Notez que bien que j'utilise l'étiquette maincomme cible de saut, il ne s'agit pas d' une fonction récursive.

.globl main
main:push $0;jmp main
Emploi
la source
Belle idée: c'est une sorte de récursion sans récursion!
Andrea Corbellini
en utilisant a86: dd 0fdeb6010 caractères!
Skizz
4

Python (17):

c='exec c';exec c
ıʇǝɥʇuʎs
la source
hm, je reçoisKeyError: 'unknown symbol table entry'
stefreak