160 votes

Stack code de débordement de golf

Pour commémorer le lancement public de Débordement de Pile, ce qui est le plus court code de provoquer un débordement de pile? Toute langue de bienvenue.

ETA: Juste pour être clair sur cette question, vu que j'en suis une occasionnelle Régime de l'utilisateur: queue-appel "récursivité" est vraiment itération, et toute solution qui peut être transformée en une solution itérative relativement trivialement par un décent compilateur ne sera pas comptabilisée. :-P

ETA2: maintenant, j'ai sélectionné une "meilleure réponse"; voir ce post pour justification. Merci à tous ceux qui ont contribué! :-)

291voto

jrudolph Points 3726

Lisez cette ligne, et faites ce qu'il dit deux fois .

212voto

Patrick Points 20392

Toutes ces réponses et pas de Befunge? J'avais miser un montant juste que c'est plus court de solution de tous les:

1

Ne plaisante pas. Essayez-le vous-même: http://www.quirkster.com/iano/js/befunge.html

EDIT: je suppose que j'ai besoin d'expliquer celui-ci. Le 1 opérande pousse un 1 sur Befunge interne de la pile et le manque de quoi que ce soit d'autre le met dans une boucle sous les règles de la langue.

À l'aide de l'interprète fourni, vous finirez par--et je veux dire finalement--par atteindre un point où le Javascript tableau qui représente l'Befunge de la pile devient trop grand pour le navigateur afin de les réaffecter. Si vous aviez un simple Befunge interprète avec un plus petit et limité pile-comme c'est le cas avec la plupart des langues ci-dessous--ce programme serait la cause d'une plus notable de dépassement de plus en plus vite.

174voto

GateKiller Points 19113

Vous pouvez également essayer ceci dans C # .net

 throw new StackOverflowException();
 

159voto

Cody Brocious Points 24042

Nemerle :

Cela plante le compilateur avec une exception StackOverflowException:

 def o(){[o()]}
 

119voto

Chris Jester-Young Points 102876

Mon meilleur actuel (en assemblage x86) est:

 push eax
jmp short $-1
 

ce qui donne 3 octets de code objet ( 50 EB FD ). Pour le code 16 bits, cela est également possible:

 call $
 

ce qui entraîne également 3 octets ( E8 FD FF ).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X