Su tarea: escribir un programa que obviamente debería terminar, pero nunca lo hace (en la medida de una falla de la computadora). Haga que parezca que debería realizar una tarea simple: agregar números, imprimir algo, ... Pero simplemente queda atrapado en un bucle infinito.
Trate de hacer que su programa sea muy claro y simple, mientras que en realidad se atascará en un bucle imprevisto. Votantes: ¡juzguen las respuestas sobre cuán "descuidados" son!
Este es un concurso de popularidad: ¡Sé creativo!
popularity-contest
underhanded
Número 9
fuente
fuente
Respuestas:
Javascript
fuente
raw_input
o Python 3input
eleva aTypeError
.+
operador aquí es la concatenación de cadenas, no la adición.C
Solo un programa de ejemplo básico que ilustra los tres tipos diferentes de bucles while en C.
fuente
(x --> 0)
JavaScript
fuente
alert
después del bucle.a = 1
aa = true
. El código todavía tendrá el bucle infinito de esa manera, pero será más claro que la razón no es una peculiaridad en la conversión de JavaScript de ints a booleans.C#
fuente
l
se supone que parece un1
! Soy estúpido. : \C
¿Qué tal la precisión?
fuente
HTML / JavaScript
Imagine que tiene un cuadro de entrada en su página:
Y ahora quieres escribir algo en él ... Pruébalo en Chrome: http://jsfiddle.net/jZp4X/ .
fuente
C ++
fuente
g++
no te advertiré sobre esto sin ellos.-Wall --pedantic
todos modos.-Wsign-compare
que se puede activar con-Wextra
.golpetazo
(Hubo una solicitud de no bucles o recursión)
fuente
bash
sin memoria y se bloqueayes
es solo un programa coreutils. No es un syscall.C
La letra "x" se perdió en un archivo. Se escribió un programa para encontrarlo:
Fue compilado y corrió y finalmente gritó:
Durante muchos años, las cartas han sido rescatadas de esta manera hasta que llegó el nuevo tipo y optimizó el código. Estaba familiarizado con los tipos de datos y sabía que es mejor usar valores sin signo que con signo para valores no negativos, ya que tiene un rango más amplio y brinda cierta protección contra desbordamientos. Entonces cambió int por unsigned int . También conocía ascii lo suficientemente bien como para saber que siempre tienen un valor no negativo. Entonces él también cambió el carácter a un carácter sin signo . Compiló el código y se fue a casa orgulloso del buen trabajo que hizo. El programa se veía así:
Volvió a los estragos al día siguiente. Faltaba la letra "a" y, aunque se suponía que estaba en el "archivo_desierto" que contenía "abc", el programa la estaba buscando para siempre imprimiendo solo:
Despidieron al tipo y volvieron a la versión anterior recordando que nunca se deben optimizar los tipos de datos en el código de trabajo.
¿Pero cuál es la lección que deberían haber aprendido aquí?
PD. El programa fue construido alrededor del error mencionado en el lenguaje ensamblador de PC por Paul A. Carter
fuente
Regex
Con la entrada adecuada, la siguiente expresión regular puede hacer que la mayoría de los motores de expresión regular de retroceso entren en el infierno de retroceso:
Una entrada simple como
"Programming Puzzles and Code Golf Stack Exchange - Mozilla Firefox"
o"AVerySimpleInputWhichContainsAnInsignificantSentence."
(ambas cadenas citadas para mayor claridad) es suficiente para mantener la mayoría de los motores regex de marcha atrás funcionando durante mucho tiempo.fuente
JavaScript
fuente
Haskell
Bueno, piénsalo! Sería lo mismo que
head $ "Hello" ++ (repeat '!')
, es decir, debería regresar'H'
.fuente
Java bajo Windows
fuente
Para comparar manzanas y naranjas ... en C
Estoy impresionado de que no haya ningún código aquí usando un
goto
... (Ya sabes: ¡ Goto es malvado! )El sueño es solo para poder leerlo. Presione ^ C si no tiene una cantidad interminable de tiempo para esperar algo que nunca sucede ;-)
fuente
C, con ciertos compiladores optimizadores
Este programa incrementa una variable entera hasta que se desborda.
fuente
int32_t
; un int de 64 bits tomaría mucho, mucho, mucho tiempo (585 años si cada iteración toma un nanosegundo).C ++
El estilo de comentario extraño es el truco. Sugerencia: trigrafos.
fuente
Java
En particular, me encanta este efecto secundario de la optimización de autoboxing:
fuente
= new Integer(0)
, ya que de todos modos está inicializando los valores después. (Esto podría hacer que la razón sea menos obvia.)Ruby / C
Esto funciona correctamente en C , contando de 9 a 1 en STDOUT. Cuando se ejecuta en Ruby, no termina, porque
fuente
JavaScript
fuente
C
Esto debería imprimir una tabla de códigos para todos los caracteres ASCII, de 0 a 255. A
char
es lo suficientemente grande como para iterar sobre ellos.fuente
printf("%3d %2x: %c", i, i, i);
(para una tabla de códigos) en su bucle.Pitón
fuente
exit
es realmente? Parece ser una clase, pero ¿para qué se utiliza? También puede cambiarprint m
paraprint(m)
que esto también funcione con Python 3.@moose
comunicado impreso actualizado y el mensaje de spoilerC ++
¿Qué tal la clásica C ++ - trampa del programador?
fuente
keepGoing = true
estaba destinado a comparar el valor dekeepGoing
, en su lugar, asigna el valor akeepGoing
; Además, toda la declaración sekeepGoing = true
evalúatrue
(lo que te permite escribir cosas comoa=b=c=d=0
) que conduce a un bucle infinito.== true
(o al estilo Yodatrue ==
) es redundante de todos modos, y la condición simplemente debería leersewhile (keepGoing)
.Javascript
fuente
var a;var points = 0;function fiftyfifty() {points++;if (Math.random() > 0.5)return true;}; á = fiftyfifty(); while (a === undefined) {á = fiftyfifty();} console.log("Points: " + points);
me daría por vencido, lo eliminaría para siempre, limpiaría mi computadora, tal vez un escáner de virus solo para estar seguro y reescribirlo por completo. EDITAR: Porquevar a = 0; a = 1;
no es muy realistaJava:
fuente
C ++
Un poco al azar?
fuente
Haskell
Algún código para calcular el tiempo de un determinado valor de la función de Ackermann. Para valores muy bajos, generalmente termina. En mi máquina, valores muy bajos significan algo así como 3 5 o menos con código compilado y
-O
. En ghci valores bajos significa algo así como 3 3.El
'
símbolo parece estropear el resaltado de sintaxis, no estoy seguro de por qué. En algunos lugares son necesarios, por lo que no se pueden eliminar todos.Editar: cambio de idioma.
fuente
Java: sin bucles ni recursividad
Acabo de comenzar a aprender expresiones regulares y escribí mi primer programa para probar si mi cadena coincide con una expresión regular.
Lamentablemente, el programa no produce ningún resultado. Sostiene la terminal. Por favor, ayuda a encontrar el problema. No he hecho ningún uso de bucles, no hay recurrencia involucrada. Estoy completamente desconcertado.
¿Qué he hecho mal? ¿Por qué no termina mi programa? ¡Por favor ayuda!
Ideone enlace aquí .
fuente
C
Solo debe necesitar uno de los dos bucles, pero el que necesita depende de su compilador.
fuente
C / C ++
C ++ solo permite las declaraciones de variables en línea fáciles de usar aquí, pero es igual de fácil cometer este error en el viejo y simple C ...
fuente
C#
La siguiente es una clase simple que realiza una operación aritmética (suma) en una matriz de entrada grande utilizando un hilo de fondo. Se incluye un programa de muestra.
Sin embargo, aunque es bastante sencillo, nunca termina. Tenga en cuenta que no hay juegos de manos (parecidos a personajes, puntos y comas ocultos / faltantes, trigrafos ;-), etc.)
fuente