var QUESTION_ID=13152,OVERRIDE_USER=8611;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Respostas:
Befunge (1)
Saídas
0
para sempre. Funciona porque nas linhas do Befunge são contornadas e você obtém0
se sair da pilha vazia.fonte
x86 .COM Executável, 7
em hexadecimal:
Os outros precisam de kilobytes ou mais de bibliotecas do sistema e tempo de execução. Voltar à rotina:
Você pode alterar o segundo byte (
0x21
, ou!
) para alterar a saída.Usa uma interrupção do BIOS para saída; não precisa do DOS, mas eu não tinha o QEMU configurado.
Explicação
O código da máquina corresponde ao seguinte conjunto:
A saída está toda na
int
chamada - por esta referência , int 0x10 com 0x0e em AH imprimirá o byte em AL na tela.Sabendo que o registro AX é uma palavra de 16 bits composta por AH no byte alto e AL no byte baixo, podemos economizar uma carga extra (e, portanto, um byte no código da máquina) carregando-os juntos.
fonte
Arquivo em lote do Windows, 2 caracteres
Chama a si mesmo infinitamente.
fonte
%0
não possui um@
, por isso produzia constantemente algo parecido...> %0
. Porém, isso pode consumir toda a RAM em algum momento, uma vez que é recursivo.Befunge 98-2
Saídas ",,,,,,,,,,," para a eternidade.
fonte
sh, 3 bytes
saídas
y
continuamentefonte
yes
seja um binário externo, e não faz parte do bash (a rigor).y=yes
e se o seu sistema não é esotérico, você pode assumir queyes
está no seu$PATH
(consulte GNU Core Utilities ). Com sua lógica, é possível assumir constelações estranhas para cada solução.bash
recurso: é uma parte básica do shell POSIX dos utilitários principais . (Ie: por favor, altere o título para sh: 3 caracteres ;-)Haskell: 8 caracteres
Fio antigo, mas divertido é
em Haskell, imprime
para sempre, uma vez que está basicamente rodando
Ele sabe que
x
é uma string, então o primeiro caractere é"
, então isso precisa ser escapado\"
, mas saiba que\
precisa ser escapado assim\\\x
, e assim por diante.fonte
fix$show
teria sido :-) mais estéticaimport Data.Function
, e porque retorna a sequência, em vez de imprimi-la, questiono a imparcialidade da contagem de caracteres. Além disso, a cadeia é realmente "\" \\\ "\\\\\\\" \\\\\\\\\\\\\\\ "\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\ "\\\\\\\\\\\\\\\\ ...".Arquivo em lote do Windows, 8 caracteres
fonte
:a\r\ngoto a
porque o Windows usa CRLF3a 61 0a 67 6f 74 6f 20
funciona no meu windows 8 ...: PBrainfuck, 4
Alternativamente,
fonte
\x01
nem\xFF
são caracteres imprimíveis. Eu acho que não era uma exigência, no entanto: - /Java, 54 caracteres
Melhor tentativa em Java:
fonte
for(;;)
padrão clássico ? Que talwhile(true)
?static
bloco.Bash, 4 bytes
Saídas
./forever2.sh: line 1: $: command not found
continuamente.Por
$0
ser em segundo plano, cada pai morre após o comando inválido$
e, portanto, a pilha / memória não é consumida e isso deve continuar indefinidamente.Estranhamente, a produção fica cada vez mais lenta com o tempo.
top
relata que o uso da CPU do sistema é próximo de 100%, mas existem processos de memória ou CPU-hog. Presumivelmente, alguma alocação de recursos no kernel fica cada vez menos eficiente.fonte
$0
falhe.LOLCODE (36)
Pensei que eu daria uma chance ao LOLCODE, com uma quantidade surpreendentemente grande de funcionalidades.
fonte
HAI
eKTHXBYE
JavaScript: 14
fonte
alert()
me dá esse erroError: Not enough arguments [nsIDOMWindow.alert]
Máquina de Turing - 6 caracteres:
onde
#
está o símbolo em branco (na fita por padrão),s
descreve o único estado existente (início),1
está imprimindo um dígito,R
significa mudar para a direita e,s
no final, permanecer no mesmo estado.fonte
s#1Rs
(estado atual, símbolo atual, símbolo a escrever, direção a mudança, próximo estado).Haskell, 10
Eu acho que esse é o código mais curto para
Show
e capaz.Para os interessados, imprime:
fonte
Marbelous 4
Marbelous surpreendentemente se sai bem aqui. Isso publicará uma quantidade infinita de cifrões
$
, embora atinja o limite da pilha rapidamente.Como funciona.
24 é uma linguagem literal, que cairá do quadro e será impressa em STDOUT como seu caractere ascii correspondente. MB é o nome implicitamente dado à placa principal, uma vez que a placa principal não tem nenhuma entrada, ela acionará todos os ticks. E como as células são avaliadas da esquerda para a direita, o literal sempre será impresso antes da próxima chamada recursiva.
Portanto, isso é equivalente a este pseudocódigo:
Uma solução sem recursão infinita 11
Este funciona rodando o literal entre dois portais
@0
, sempre que o 24 atinge o mais baixo,@0
ele é transportado para a célula abaixo do superior@0
. Nas terras do/\
, que é um operador de clone, coloca uma cópia do mármore (literal) à sua esquerda (de volta ao portal) e outra à sua direita. Essa cópia copiada então cai fora do quadro (já que..
é uma célula vazia) e é impressa em STDOUT. No pseudocódigo, isso seria traduzido para:Uma solução mais curta sem recursão infinita 9
Este constantemente joga o mármore entre um clonador e um defletor, colocando uma cópia na célula mais à direita, para ser jogada fora do tabuleiro. No pseudocódigo, seria algo como:
Nota
As
..
células são necessárias nas duas últimas placas, uma vez que os mármores cairiam da placa (e seriam descartados) caso contrário. Para uma diversão extra, você substitui o24
mármore porFF
e a..
célula vazia por a??
, que transforma qualquer mármore em mármore entre 0 e seu valor atual antes de soltá-lo. Adivinhe como isso seria no STDOUT.fonte
C, 23 caracteres
Um pouco mais curto que a melhor resposta C / C ++ até agora. Imprime linhas vazias infinitamente (mas, se compiladas sem otimizações, sobrecarrega a pilha).
fonte
putc(0)
(ou 1, ou 2, ... ou 9). Isso funcionaria?putc
requer 2 parâmetros.Python 3: 15, 17 ou 18 caracteres
A resposta de mdeitrick é mais longa no Python 3, que substitui a
print
instrução por uma chamada de função (15 caracteres):Este ainda é o mais curto que encontrei no Python 3. No entanto, existem algumas maneiras mais interessantes de imprimir em um loop infinito que têm apenas alguns caracteres a mais.
print()
retornaNone
, que! = 9, tornando-o um loop infinito; o8
é um no-op que substituipass
(18 caracteres):iter(print, 9)
define um iterável que retorna a saídaprint()
até que seja igual9
(o que nunca acontece).any
consome a entrada iterável procurando um valor verdadeiro, que nunca chega, poisprint()
sempre retornaNone
. (Você também pode usarset
o mesmo efeito.)Ou, podemos consumir o iterável testando se ele contém
8
(17 caracteres):Ou descompacte-o usando o operador splat :
A maneira mais estranha que pensei é usar a desestruturação de splat dentro de uma chamada de função
function(*iterable)
,. Parece que o Python tenta consumir todo o iterável antes mesmo de tentar a chamada de função - mesmo que a chamada de função seja falsa. Isso significa que nem precisamos de uma função real, porque o erro de tipo só será gerado depois que o iterável estiver esgotado (ou seja, nunca):fonte
*iter(print,1),
funciona e possui apenas 15 caracteres, mas consome bastante memória.piet - 3 codéis
Emite um número infinito de 1's
fonte
x86 .COM Executável, 5 bytes
em hexadecimal:
em asm:
Explicação:
inc ax
incrementa o registro AX em um.int 0x29
é a rotina "fast put char" do MSDOS, que simplesmente gera o valor em AL (a parte baixa do AX) e avança o cursor em um.jmp si
é apenas uma maneira estranha de voltar ao topo, já que o registro SI é 0x100 em quase todos os sistemas operacionais semelhantes ao DOS, que também é onde um programa .com é iniciado;) Também é possível fazer um salto curto, o que também usa 2 bytes.Fontes:
Valores Iniciais do MSDOS
Sizecoding WIKI
fonte
Bitxtreme , 0,25 bytes
Representação binária:
A partir da documentação:
O contador de programa e o acumulador são inicializados em zero; então, o conteúdo do local da memória 0 é subtraído do acumulador. Isso passa a ser 0, deixando o acumulador em zero. Como não houve transporte, o segundo bit não é adicionado ao contador do programa.
O contador de programa é então incrementado em 2 módulos 2, enviando-o de volta ao início e causando um loop infinito. Em cada etapa, o local especial da memória 0 é modificado, fazendo com que seu conteúdo (a
0
) seja gravado na saída.Pode-se argumentar que esse programa deve ser pontuado como 1 byte, porque o intérprete oficial do Python exige preenchimento zero. No entanto, não acho que o preenchimento zero seja realmente um código .
fonte
Resumo: Ruby - 9, Golfscript - 6,> <> - 2, Espaço em branco - 19,
Perl - 2Um idioma que eu conheço e dois que nunca usei antes: D
EDIT: Perl, um não funcionou quando instalei o Perl para experimentá-lo :(
Ruby, 9
Simplesmente imprime 1 em linhas separadas continuamente.
Além disso, várias alternativas:
Solução de 10 caracteres:
Fiquei realmente surpreso por poder remover o espaço entre o primeiro
1
e owhile
, mas aparentemente funcionaGolfscript, 6
Meu primeiro programa Golfscript! : P
> <> ( Peixe ), 2
Espaço em branco , 19
Onde
s
representa um espaço,t
representa uma guia el
um avanço de linha.fonte
{1p}do
apenas imprime1
e sai, porque o do é uma sequência de exec-pop-test que continua apenas se for verdadeira. (Como não há entrada, a pilha é inicialmente""
, que, após a execução de1p
, é exibida e testa falso.) Apenas adicionar um dup funcionará, por exemplo,{1.p}do
(a 7 bytes).C,
2524fonte
s/while/main/
return main(puts("1"))
, havia sido uma chamada de emergência.methodName(void)
aceita exatamente zero parâmetros.> <> (Peixe) , 2
Uma maneira criativa de usar a infinita caixa de códigos de peixes:
Como o ponteiro de instruções retorna ao início da linha após atingir o final, esse código pode ser essencialmente lido como
o que significa 'leia a string "o" e depois a produza'.
Você pode testar o código aqui
fonte
perl, 10 caracteres
Aqui está outra solução de 10 char perl com algumas vantagens diferentes. Especificamente, ele não requer o sinalizador -n ou a entrada do usuário para iniciar. No entanto, ele continua comendo memória ad infinitum.
salve em um arquivo, execute esse arquivo e você obtém, por exemplo:
fonte
say
(que sempre imprime uma nova linha, mesmo que não consiga encontrar um argumento de qualquer lugar)warn
? (Isso requer a seleção de uma variante Perl moderno usando-M5.010
, mas que não contam contra a sua contagem de caracteres.)dc , 7
imprime 'pdx \ n' infinitamente várias vezes.
fonte
VBA: 12
O áudio é emitido, certo?
Coloque isso no arquivo MS office habilitado para macro favorito do seu colega de trabalho 'favorito' para se divertir!
Pontos de bônus se eles estiverem usando fones de ouvido.
fonte
Semente , 4 bytes
Experimente online! Saídas
11
infinitamenteGera o seguinte programa Befunge-98:
Experimente online!
A parte relevante é exatamente isso:
b
empurra11
para a pilha e a.
imprime.1
e49
também são enviados para a pilha, mas nunca são impressos.Animação do código em execução:
fonte
C,
262524 (sem recursão)Imprime
'\n'
caracteres sem fim . Esse é um byte mais longo que a resposta C mais curta, mas não depende da otimização da chamada de cauda para evitar o transbordamento da pilha.fonte
for(;;)
no lugar dewhile(!
!
como ele continua produzindo\n
R, 13 caracteres
fonte
repeat cat(1)
deve trabalharPowerShell 2.0:
17118Minha solução inicial:
Graças a res:
Acho que Danko Durbić tem o vencedor aqui. Não sei ao certo por que isso deve funcionar, mas funciona e não consigo pensar em nada mais curto até agora.
fonte
while(1){1}
.while($true){1}
mas sua solução definitivamente vence - eu esqueci isso no PowerShell$true -eq 1
. Poste isso como resposta e eu vou lhe dar um voto.for(){1}
.