Votre tâche: écrire un programme qui doit évidemment se terminer, mais ce n’est jamais le cas (même dans le cas d’une panne d’ordinateur). Faites en sorte qu'il semble devoir effectuer une tâche simple: ajouter des chiffres, imprimer quelque chose, ... Mais cela reste pris dans une boucle infinie.
Essayez de rendre votre programme très clair et simple, tout en restant bloqué dans une boucle imprévue. Les électeurs: jugez les réponses à quel point elles sont "sournoises"!
Concours de popularité: soyez créatif!
popularity-contest
underhanded
Nombre9
la source
la source
Réponses:
Javascript
la source
raw_input
ou Python 3input
déclenche aTypeError
.+
opérateur est ici la concaténation de chaîne, pas l'addition.C
Juste un exemple de programme de base illustrant les trois types différents de boucles while en C.
la source
(x --> 0)
JavaScript
la source
alert
après la boucle.a = 1
àa = true
. Le code aura toujours la boucle infinie de cette façon, mais il sera plus clair que la raison n’est pas due à une certaine bizarrerie dans la conversion JavaScript d’ints en booléens.C #
la source
l
est censé ressembler à un1
! Je suis stupide. : \C
Qu'en est-il de la précision?
la source
HTML / JavaScript
Imaginez que vous avez une zone de saisie dans votre page:
Et maintenant, vous voulez taper quelque chose dedans ... Essayez dans Chrome: http://jsfiddle.net/jZp4X/ .
la source
C ++
la source
g++
ne vous préviendrai pas sans eux.-Wall --pedantic
quand même.-Wsign-compare
ce qui peut être activé avec-Wextra
.frapper
(Il y avait une demande pour pas de boucles ou de récursivité)
la source
bash
de mémoire, elle tombe en panneyes
n’est qu’un programme coreutils. Pas un appel systémique.C
La lettre "x" a été perdue dans un fichier. Un programme a été écrit pour le trouver:
Il a été compilé et à courir et il a finalement crié:
Pendant de nombreuses années, les lettres ont été sauvées de cette façon jusqu'à ce que le nouveau type optimise le code. Il connaissait bien les types de données et savait qu'il valait mieux utiliser des signatures non signées que signées pour les valeurs non négatives, car cette plage est plus étendue et offre une certaine protection contre les débordements. Alors il a changé int en unsigned int . Il connaissait également suffisamment l'ascii pour savoir qu'ils avaient toujours une valeur non négative. Donc, il a également changé de caractère en caractère non signé . Il compila le code et rentra chez lui fier du bon travail qu'il accomplissait. Le programme ressemblait à ceci:
Il est revenu à un désastre le lendemain. La lettre "a" était manquante et même si elle était supposée se trouver dans le "fichier_du_ désert" contenant "abc", le programme le cherchait pour toujours en imprimant:
Ils ont renvoyé le gars et sont revenus à la version précédente en se rappelant qu'il ne fallait jamais optimiser les types de données dans du code de travail.
Mais quelle est la leçon qu'ils auraient dû apprendre ici?
PS Le programme a été construit autour du bogue mentionné dans PC Assembly Language par Paul A. Carter
la source
Regex
Avec les entrées appropriées, les expressions rationnelles suivantes peuvent entraîner l'encrassement de la plupart des moteurs de expressions rationnelles:
Une simple entrée telle que
"Programming Puzzles and Code Golf Stack Exchange - Mozilla Firefox"
ou"AVerySimpleInputWhichContainsAnInsignificantSentence."
(les deux chaînes sont citées pour plus de clarté) suffit pour que la plupart des moteurs de regex en marche arrière puissent fonctionner pendant longtemps.la source
JavaScript
la source
Haskell
Eh bien, pense à ça! Ce serait la même chose
head $ "Hello" ++ (repeat '!')
, c.-à-d. Devrait tout simplement revenir'H'
.la source
Java sous Windows
la source
Comparer des pommes et des oranges ... en C
Je suis impressionné par le fait qu'il n'y a pas de code ici qui utilise un
goto
... (Vous savez: Goto is evil! )Le sommeil est juste pour pouvoir le lire. Appuyez sur ^ C si vous ne disposez pas de beaucoup de temps pour attendre quelque chose qui ne se produit jamais ;-)
la source
C, avec certains compilateurs optimiseurs
Ce programme incrémente une variable entière jusqu'à ce qu'elle déborde.
la source
int32_t
; un int de 64 bits prendrait vraiment, vraiment, vraiment très long (585 ans si chaque itération prend une nanoseconde).C ++
Le style de commentaire étrange est le truc. Indice: trigraphes.
la source
Java
J'aime particulièrement cet effet secondaire de l'optimisation automatique:
la source
= new Integer(0)
, car vous initialisez les valeurs par la suite. (Cela pourrait rendre la raison moins évidente.)Ruby / C
Cela fonctionne correctement en C , le décompte de 9 à 1 dans STDOUT. Lorsqu'il est exécuté en Ruby, il ne se termine pas, car
la source
JavaScript
la source
C
Cela devrait imprimer une table de codes pour tous les caractères ASCII, de 0 à 255. La valeur de A
char
est suffisante pour les parcourir.la source
printf("%3d %2x: %c", i, i, i);
(pour une table de code) dans votre boucle.Python
la source
exit
qui est réellement? Cela semble être un cours, mais à quoi sert-il? Vous pouvez aussi changerprint m
pourprint(m)
que cela fonctionne aussi avec Python 3.@moose
déclaration mise à jour et le message spoilerC ++
Qu'en est-il du piège classique du programmeur C ++?
la source
keepGoing = true
était destiné à comparer la valeur dekeepGoing
, au lieu de cela il attribue la valeur àkeepGoing
; de plus, l'instruction entière estkeepGoing = true
évaluéetrue
(ce qui vous permet d'écrire des choses commea=b=c=d=0
) menant à une boucle infinie.== true
(ou à la manière de Yodatrue ==
) est quand même redondant, et la condition devrait simplement se lirewhile (keepGoing)
.Javascript
la source
var a;var points = 0;function fiftyfifty() {points++;if (Math.random() > 0.5)return true;}; á = fiftyfifty(); while (a === undefined) {á = fiftyfifty();} console.log("Points: " + points);
j’abandonnerais, effacerais cela pour toujours, nettoyerais mon ordinateur, peut-être un scanner de virus juste pour être sûr et réécrirais complètement. EDIT: Parce que cevar a = 0; a = 1;
n'est pas très réalisteJava:
la source
C ++
Un peu de hasard?
la source
Haskell
Certains codes permettent de chronométrer le calcul d’une valeur donnée de la fonction Ackermann. Pour des valeurs très faibles, il se termine généralement. Sur ma machine, des valeurs très basses signifient quelque chose comme 35 ou moins avec un code compilé et
-O
. En ghci, les valeurs basses signifient quelque chose comme 3 3.Le
'
symbole semble gâcher la mise en évidence de la syntaxe, sans savoir pourquoi. Dans certains endroits, ils sont nécessaires, ils ne peuvent donc pas tous être supprimés.Modifier la langue modifiée.
la source
Java - Pas de boucles ni de récursivité
Je viens juste de commencer à apprendre les expressions régulières et j'ai écrit mon premier programme pour vérifier si ma chaîne correspond à une expression régulière.
Malheureusement, le programme ne produit aucun résultat. Il supporte le terminal. S'il vous plaît aider à trouver le problème. Je n'ai pas utilisé de boucles, il n'y a pas de récursivité. Je suis complètement dérouté.
Qu'est ce que j'ai mal fait? Pourquoi mon programme ne se termine-t-il pas? S'il vous plaît aider!
Lien Ideone ici .
la source
C
Vous ne devriez avoir besoin que d’une des deux boucles, mais celle dont vous avez besoin dépend de votre compilateur.
la source
C / C ++
C ++ n'autorise que les déclarations de variables en ligne simples utilisées ici, mais il est tout aussi facile de faire cette erreur en clair vieux C ...
la source
C #
Ce qui suit est une classe simple effectuant une opération arithmétique (somme) sur un grand tableau en entrée utilisant un thread en arrière-plan. Un exemple de programme est inclus.
Cependant, même si c'est assez simple, cela ne se termine jamais. Notez qu'il n'y a pas de tour de passe-passe (sosies de caractères, points-virgules cachés / manquants, trigraphes ;-), etc.)
la source