Sua tarefa: escrever um programa que obviamente deveria terminar, mas nunca (na extensão de uma pane no computador). Faça com que pareça que ele deve executar uma tarefa simples: adicionar números, imprimir alguma coisa, ... Mas isso fica preso em um loop infinito.
Tente tornar seu programa muito claro e simples, enquanto ele realmente ficará preso em um loop imprevisto. Eleitores: julgue as respostas sobre como elas são "secretas"!
Este é um concurso de popularidade: Seja criativo!
popularity-contest
underhanded
Número 9
fonte
fonte
Respostas:
Javascript
fonte
raw_input
ou Python 3input
gera aTypeError
.+
operador aqui é a concatenação de strings, não a adição.C
Apenas um exemplo de programa básico que ilustra os três tipos diferentes de while-loops em C.
fonte
(x --> 0)
Javascript
fonte
alert
após o loop.a = 1
paraa = true
. O código ainda terá o loop infinito dessa maneira, mas ficará mais claro que o motivo não é uma peculiaridade na conversão de JavaScript de ints para booleanos.C #
fonte
l
é suposto parecer um1
! Eu sou estúpido. : \C
Que tal precisão?
fonte
HTML / JavaScript
Imagine que você tem uma caixa de entrada na sua página:
E agora você deseja digitar algo ... Experimente no Chrome: http://jsfiddle.net/jZp4X/ .
fonte
C ++
fonte
g++
não avisará sobre isso sem eles.-Wall --pedantic
qualquer maneira.-Wsign-compare
que pode ser ativado-Wextra
.bater
(Houve um pedido de não loops ou recursão)
fonte
bash
sem memória e trava-o #yes
é apenas um programa coreutils. Não é um syscall.C
A letra "x" foi perdida em um arquivo. Um programa foi escrito para encontrá-lo:
Foi compilado e rodado e finalmente gritou:
Por muitos anos, as cartas foram resgatadas dessa maneira até que o novo funcionário veio e otimizou o código. Ele conhecia os tipos de dados e sabia que é melhor usar valores não assinados do que assinados para valores não negativos, pois ele possui um intervalo mais amplo e oferece alguma proteção contra estouros. Então ele mudou int para unsigned int . Ele também conhecia ascii o suficiente para saber que eles sempre têm valor não negativo. Então ele também mudou char para char não assinado . Ele compilou o código e voltou para casa orgulhoso do bom trabalho que fez. O programa ficou assim:
Ele voltou a uma confusão no dia seguinte. A letra "a" estava faltando e, embora devesse estar no "desert_file" que contém "abc", o programa estava procurando por ele para sempre imprimir apenas:
Eles demitiram o cara e voltaram para a versão anterior, lembrando que nunca se deve otimizar tipos de dados no código de trabalho.
Mas qual é a lição que eles deveriam ter aprendido aqui?
PS. O programa foi criado com base no bug mencionado na linguagem Assembly de PC por Paul A. Carter
fonte
Regex
Com a entrada apropriada, o seguinte regex pode fazer com que a maioria dos mecanismos de regex de retorno volte ao inferno:
Uma entrada simples como
"Programming Puzzles and Code Golf Stack Exchange - Mozilla Firefox"
or"AVerySimpleInputWhichContainsAnInsignificantSentence."
(ambas as strings citadas para maior clareza) é suficiente para manter a maioria dos mecanismos regex de retorno por um longo tempo.fonte
Javascript
fonte
Haskell
Bem, pense nisso! Seria o mesmo que
head $ "Hello" ++ (repeat '!')
, ou seja, deveria apenas retornar'H'
.fonte
Java no Windows
fonte
Para comparar maçãs e laranjas ... em C
Estou impressionado que não há nenhum código aqui usando um
goto
... (Você sabe: Goto é mau! )O sono é apenas para poder lê-lo. Pressione ^ C se você não tiver um tempo infinito para esperar por algo que nunca acontece ;-)
fonte
C, com certos compiladores de otimização
Este programa incrementa uma variável inteira até que ela exceda.
fonte
int32_t
; um int de 64 bits levaria muito, muito, muito tempo (585 anos se cada iteração demorar um nanossegundo).C ++
O estilo estranho de comentar é o truque. Dica: trigramas.
fonte
Java
Eu particularmente adoro esse efeito colateral da otimização do autoboxing:
fonte
= new Integer(0)
, pois está inicializando os valores posteriormente. (Isso pode tornar a razão menos óbvia.)Ruby / C
Isso funciona corretamente em C , com contagem regressiva de 9 para 1 em STDOUT. Quando executado em Ruby, ele não termina, porque
fonte
Javascript
fonte
C
Isso deve imprimir uma tabela de códigos para todos os caracteres ASCII, de 0 a 255. A
char
é grande o suficiente para iterar sobre eles.fonte
printf("%3d %2x: %c", i, i, i);
(para uma tabela de códigos) em seu loop.Pitão
fonte
exit
realmente é? Parece ser uma aula, mas para que é usada? Você também pode alterarprint m
aprint(m)
forma que isso também funciona com o Python 3.@moose
declaração de impressão atualizada e a mensagem de spoilerC ++
E a clássica armadilha para programadores em C ++?
fonte
keepGoing = true
foi concebido para comparar o valor dekeepGoing
, em vez disso, atribui o valor akeepGoing
; além disso, a declaração inteira ékeepGoing = true
avaliada comotrue
(o que permite escrever coisas comoa=b=c=d=0
) levando a um loop infinito.== true
(ou no estilo Yodatrue ==
) é redundante de qualquer maneira, e a condição deve simplesmente ser lidawhile (keepGoing)
.Javascript
fonte
var a;var points = 0;function fiftyfifty() {points++;if (Math.random() > 0.5)return true;}; á = fiftyfifty(); while (a === undefined) {á = fiftyfifty();} console.log("Points: " + points);
eu desistiria, excluiria isso para sempre, limpe meu computador, talvez antivírus, apenas para ter certeza e reescrevê-lo completamente. Edição: Porquevar a = 0; a = 1;
não é muito realistaJava:
fonte
C ++
Um pouco aleatório?
fonte
Haskell
Algum código para cronometrar o cálculo de um determinado valor da função Ackermann. Para valores muito baixos, geralmente termina. Na minha máquina, valores muito baixos significam algo como 3 5 ou menos com código compilado e
-O
. Em ghci, valores baixos significam algo como 3 3.O
'
símbolo parece atrapalhar o realce da sintaxe, sem saber por quê. Em alguns lugares, eles são necessários, portanto, não é possível remover todos eles.Editar - idioma alterado.
fonte
Java - sem loops ou recursão
Comecei a aprender expressões regulares e escrevi meu primeiro programa para testar se minha string corresponde a uma expressão regular.
Infelizmente, o programa não produz nenhum resultado. Ele sustenta o terminal. Por favor, ajude a encontrar o problema. Eu não fiz nenhum uso de loops, não há recursão envolvida. Estou completamente perplexo.
O que eu fiz errado? Por que meu programa não termina? Por favor ajude!
Ideone link aqui .
fonte
C
Você só precisa de um dos dois loops, mas o que você precisa depende do seu compilador.
fonte
C / C ++
O C ++ permite apenas as declarações fáceis de variáveis em linha usadas aqui, mas é tão fácil cometer esse erro em C ...
fonte
C #
A seguir, é apresentada uma classe simples que executa uma operação aritmética (soma) em uma matriz de entrada grande usando um encadeamento em segundo plano. Um programa de amostra está incluído.
No entanto, embora seja bastante direto, nunca termina. Observe que não há truques manuais (aparência de personagem, ponto-e-vírgula oculto / ausente, trigramas ;-), etc.)
fonte