var QUESTION_ID=93441,OVERRIDE_USER=41723;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:
Sesos ,
11 33 bytesExperimente online! Marque Debug para ver o código SBIN gerado.
Montagem Sesos
O arquivo binário acima foi gerado montando o seguinte código SASM.
fonte
Haskell, 19 bytes
Produz a lista infinita
[0,1,-1,2,-2,3,-3,4,-4,5,-5,6,-6,7,-7...
Haskell permite listas infinitas nativamente. A impressão dessa lista imprime seus elementos uma vez para sempre.
fonte
[n,1-n]
![1-n,n]
produziria uma saída melhor.concatMap (\n -> [1-n, n]) [1..]
, certo? Agradável!Brainfuck, 6 bytes
Isso utiliza o agrupamento de células e imprime todos os valores possíveis. No Brainfuck, a representação inteira nativa é pelo valor de byte .
Experimente online!
fonte
int
repente, um Java não possui mais ou menos bits apenas porque você adicionou ou removeu um pouco de memória RAM.Cubix ,
1412 bytesTeste online! Agora você pode ajustar a velocidade se quiser que ela corra mais rápido ou mais devagar.
Como funciona
A primeira coisa que o intérprete faz é remover todo o espaço em branco e preencher o código com no-ops
.
até que ele caiba perfeitamente em um cubo. Isso significa que o código acima também pode ser escrito assim:Agora o código está sendo executado. O IP (ponteiro de instrução) começa no canto superior esquerdo da face esquerda, apontado para leste. Aqui estão os caminhos a seguir ao longo da execução do programa:
O IP começa na trilha vermelha na extrema esquerda da imagem. Em seguida
OSo;
, é executado , o que faz o seguinte:O
Imprima os TOS (topo da pilha) como um número inteiro. No início do programa, a pilha contém zeros infinitos, então isso é impresso0
.S
Empurre32
, o código de caractere para o caractere de espaço.o
Imprima os Termos de Serviço como um caractere. Isso imprime um espaço.;
Faça o TOS. Remove o32
da pilha.Agora o IP atinge o
?
, que o direciona para a esquerda, direita ou reta, dependendo do sinal dos Termos de Serviço. No momento, o TOS é0
, então segue direto. Este é o caminho azul;.
não faz nada e o IP atinge a seta>
, que o direciona para o leste ao longo do caminho vermelho novamente.~
pega o NOT bit a bit do TOS, alterando-o para-1
.Aqui, o IP atinge a borda direita da rede, que o envolve de volta para a esquerda; isso novamente imprime os TOS (desta vez
-1
) e um espaço.Agora o IP atinge
?
novamente. Desta vez, o TOS é-1
; Como isso é negativo, o IP vira à esquerda, seguindo o caminho verde. O espelho\
desvia o IP para o(
, que diminui os TOS, alterando-o para-2
. Ele volta e acerta a flecha;~
leva bit a bit NOT novamente, virando-2
para1
.Novamente, o TOS é emitido e um espaço é impresso. Desta vez, quando o IP atinge o
?
, o TOS é1
; Como isso é positivo, o IP vira à direita, seguindo o caminho amarelo. O primeiro operador que encontra éS
empurrar um extra32
; o;
abre antes que possa causar qualquer problema.Agora, o IP volta para a seta e executa sua rotina,
~
alterando os Termos de Serviço-2
eO
imprimindo-os. Como os TOS são negativos novamente, o IP segue o caminho verde mais uma vez. E continua a pedalar assim para sempre *: vermelho, verde, vermelho, amarelo, vermelho, verde, vermelho, amarelo ..., imprimindo no seguinte ciclo:TL; DR
Este programa repete repetidamente estas três etapas fáceis:
Versão não separada, 6 bytes
A remoção da separação simplifica tanto o programa que ele pode caber em um cubo de unidade:
* Nota : nenhum dos programas é realmente infinito, pois conta apenas até 2 52 (quando o JavaScript começa a perder precisão inteira).
fonte
MATL , 8 bytes
Isso usa o tipo de dados padrão do MATL, que é
double
, portanto, funciona2^53
em valor absoluto. A saída éExperimente online!
Explicação
fonte
@_@XD
vez de@_D@D
incluir o 0 na primeira execução.XD
+1 para smileyLinguagem de programação de Shakespeare , 227 bytes
Obviamente, essa resposta não está nem perto de ganhar, mas eu gostei que esse seja um caso de uso em que o SPL seja comparativamente adequado.
Explicado:
Como você pode ver ao comparar esse código à minha resposta ao desafio relacionado de contar para sempre (ou seja, imprimir todos os números naturais), o tamanho do código SPL aumenta bastante quando o tamanho do problema aumenta ...
fonte
Let us return to scene II.
deveria serscene I
.$puck
para 0 e, em seguida, a contagem não funcionaria mais. I adicionado a faltaI
no código e corrigido o comprimento em bytes (que era um pouco fora de qualquer maneira opa)Python 2, 27 bytes
Impressões
-1 0 -2 1 -3 2 -4 3 ...
fonte
05AB1E ,
96 bytesEconomizou 3 bytes graças a Adnan
Experimente online!
Imprime
0, -1, 1, -2, 2 ...
separado por novas linhas.fonte
[N,N±,
.±
e acabou com 3 bytes a mais que o seu.D,
pode ser substituído por=
para salvar um byte.GNU sed, 189 + 2 (sinalizadores de rn) = 191 bytes
Essa é provavelmente a solução mais longa, pois o sed não possui operações de tipo inteiro ou aritmética. Como tal, tive que emular um operador de incremento de tamanho arbitrário usando apenas expressões regulares.
Corre:
Resultado:
fonte
Brainfuck, 127 bytes
Experimente online!
Dada uma fita infinita, teoricamente, funcionaria para sempre.
Descomprimido
fonte
ShadyAsFuck , 3 bytes
Explicação:
Isso utiliza o agrupamento de células e imprime todos os valores possíveis. No SAF, a representação inteira nativa é pelo valor de byte .
fonte
R,
2524 bytesGolpeou um byte graças a @JDL.
Experimente online!
Exemplo de saída:
fonte
while(1)
porrepeat
para salvar um caractere.Lote, 56 bytes
Resultado:
etc. Funciona até 2147483647; 58 bytes, se desejar (-) 2147483648 na saída:
44 bytes se a impressão de todos os números inteiros positivos suportados, todos os números inteiros negativos suportados e a repetição sem fim forem aceitáveis:
fonte
Java 7,
151134122118 bytes12 bytes salvos graças a @flawr (e @xnor indiretamente)
Após a alteração da regra .. (
595663 bytes)Como em Java
2147483647 + 1 = -2147483648
, não podemos simplesmente fazeri++
e continuar infinitamente, pois o desafio era imprimir todos os números uma vez. Com o código acima com escala adicionado, ele, ao contrário, imprimir todos os números inteiros de-2147483648
até2147483647
uma vez cada, na seguinte seqüência:0, -1, 1, -2, 2, -3, 3, -4, ..., 2147483646, -2147483647, 2147483647, -2147483648
. Obrigado a @ OlivierGrégoire por apontar o comportamento do Java em relação aMIN_VALUE-1
/MAX_VALUE+1
. Experimente aqui.Ungolfed & código de teste:
Experimente aqui - resultando em erro de tempo de execução
Resultado:
fonte
int
programa de versão, com tempo infinito, imprimirá todo número inteiro por um tempo infinito.MAX_VALUE
, pode verificar a minha resposta (provavelmente ainda na última página).)DC (sabor GNU ou OpenBSD) - 16 bytes
Esta versão não é mais curta que a versão abaixo, mas deve poder ser executada sem a pilha explodir no seu PC. No entanto, grandes números infinitos ocupam quantidades infinitas de memória ... em algum momento ...
Por causa do
r
comando, ele precisa do GNU-DC ou do OpenBSD-DC .Teste:
DC - 16 bytes
Um pouco malvado agora. ;-)
Esta versão está abusando do comprimento da pilha como contador, enquanto deixa a pilha crescer.
Teste:
DC - 17 bytes
Sem truques sujos.
Teste:
fonte
[-]P
, faça45P
. "GNU-Dc ou OpenBSD-Dc" - Existem outras versões comumente encontradas na natureza?dc
tem apenas alguns operadores. Eu os desenvolvi independentemente destes.r
como "swap". Às vezes fico confuso ao olhar para as versões diferentes. Provavelmente, ninguém quer mais codificar na antiga DC (er
isso limparia a pilha). Talvez eu mude "Dc" para "AT&T dc"? ... e obrigado pela45P
dica ...Bytes em C # 74
Resultado:
Tente:
dotnetfiddle.net (limitado a 1000)
fonte
public
modificadores e salvar 14 bytes. Os padrões farão igualmente bem.Ruby,
26221916 bytesImprime números separados por novas linhas. -3 bytes de @manatwork. -3 bytes de @ m-chrzan.
fonte
p
também o fará.0.step{|n|p n,~n}
por 17 bytes.JavaScript,
2926 bytesVersão não infinita, 26 bytes
Economizou 3 bytes graças a ETHproductions
exibirá todos os números inteiros entre -9007199254740991 e 9007199254740992.
Versão infinita (ES6),
114112 bytesEconomizou 2 bytes graças a ETHproductions
exibirá todos os números inteiros, com tempo e memória infinitos.
fonte
n[a,b,c]
retornan[c]
, para que você possa colocar os parêntesesn[(a||n.unshift(1),0)]
.1
loop for;for(;;)
corre para sempre. Você pode salvar mais dois bytes comfor(n=1;;)alert([1-n,n++])
. Além disso, este não usa qualquer ES6 características ;-)> <> ,
1915 bytesIsso imprime o seguinte:
... e assim por diante. O separador é uma nova linha.
Reescrito depois de ler a resposta do @ xnor para usar uma versão desse algoritmo. Começando em
n=1
, o programa imprime1-n
en
, cada um seguido por uma nova linha, antes de incrementarn
. Após exceder o valor máximo, o programa terminará com um erro desomething smells fishy...
. Exatamente quando isso acontecerá depende da implementação do intérprete.Versão anterior:
Começando em 0, o programa faz um loop indefinidamente. Em cada loop, o valor atual é impresso junto com uma nova linha. É então negado e incrementado se positivo.
fonte
Utilitários Bash + GNU, 26
fonte
$[++i]
isso acontece no bash.seq NaN
para rodar e após 999999 a impressão é feita em notação científica com precisão de 5 dígitos. Em relação ao desafio, esse valor é o maior número inteiro impresso, o que é bom, já que o restante não repetirá um número anterior. Também notei que você pode executar o seq com distinção entreinf
maiúsculas e minúsculas como emnan
. +1bc,
1716 bytesEdit: 1 byte a menos, graças ao Digital Trauma .
Além da diversidade de idiomas usados até agora, apresento uma solução bc que funciona com números inteiros de tamanho arbitrário . Uma nova linha é necessária após o código e é contada no total de bytes.
Na primeira iteração
i
não está definida, mas a impressão dá 0 para minha surpresa.fonte
for(;;){i;-++i}
bc
ela também tinha.for(;;){i++;-i}
(mesmo comprimento).Labirinto , 9 bytes
Experimente online!
Isso também funciona e é essencialmente o mesmo:
Explicação
O fluxo de controle nesse código é bastante engraçado. Lembre-se de que o ponteiro de instrução (IP) em um programa Labirinto segue o caminho de caracteres não espaciais e examina a parte superior da pilha em qualquer junção para decidir qual caminho seguir:
Quando o IP atinge um beco sem saída, ele se vira (executando o comando no final apenas uma vez). E o IP começa no canto superior esquerdo, movendo-se para o leste. Observe também que a pilha é implicitamente preenchida com uma quantidade infinita de zeros para começar.
O programa começa com este pequeno bit:
Agora, o IP está na junção relevante e avança para o
(
que diminui o topo da pilha para-1
. O IP atinge um beco sem saída e se vira.:
duplica o topo da pilha mais uma vez. Agora, o topo da pilha é negativo e o IP vira à esquerda (oeste). Agora, executamos mais uma iteração do loop principal:Desta vez, a parte superior da pilha é positiva; portanto, o IP vira à direita (oeste) e imediatamente executa outra iteração do loop principal, que imprime o
1
. Em seguida, depois de ter sido negado novamente, bateu o:
com-1
na pilha.Desta vez, o IP vira à esquerda (leste). O
"
é apenas um no-op e o IP gira no beco sem saída.:
faz outra cópia e desta vez o IP vira para o sul.(
diminui o valor para-2
, o IP volta novamente. Com o topo da pilha ainda negativo, o IP agora vira para oeste no:
e faz a próxima iteração do loop principal.Dessa maneira, o IP agora iterará entre uma iteração de loop estreito, imprimindo um número positivo e uma iteração que passa pelos dois becos sem saída para diminuir o valor antes de imprimir um número negativo.
Você pode se perguntar por que existe
"
a segunda linha se ela realmente não faz nada: sem ela, quando o IP atinge:
um valor negativo, ele não pode virar à esquerda (leste) e, portanto, virar à direita (oeste) (como regra geral, se a direção usual em uma junção não estiver disponível, o IP seguirá a direção oposta). Isso significa que o IP também nunca alcançaria o(
nível mais baixo e não conseguimos distinguir iterações positivas de negativas.fonte
JavaScript (ES5),
32313029 bytesImpressões
0 -1 1 -2 2 -3 3 -4 4 -5 5 ...
Guardado 1 byte graças a Patrick Roberts! Economizou 2 bytes graças a Conor O'Brien!
fonte
[i++,-i].map(alert)
vez dealert(i++),alert(-i)
?for(;;)
é um byte menor quewhile(1)
map
é ES6i=0;
bit dentro do loop for para salvar um byte.Java,
6554 bytesCódigo de teste ungolfed
fonte
biggest magnitude of the standard integer type of your language
int
é o tipo inteiro padrão de Java.()->{for(int i=0;;)System.out.print(i+" "+(1-i++));};
C #, 83 bytes
Ungolfed:
Saídas:
fonte
void f(){code_present_in_main}
é suficiente para a contagem de bytes. Como para o próprio código, você pode golfe um pouco mais parecido com isto:void f(){for(decimal n=1;;)Console.Write((1-n)+","+n+++",");}
( 61 bytes )decimal n=0
en++;
dentro do loop for embora:void f(){for(decimal n=0;;n++){Console.Write(n+",");if(n>0)Console.Write(-n+",");}}
:)C #
8666 bytesNova resposta:
Claro:
Resposta antiga (86 bytes):
Ungolfed:
fonte
Enumerable.Range
e um antesint.MaxValue
.void f(){for(var n=1;;)Console.Write((1-n)+","+n+++",");}
( 57 bytes ) .J, 25 bytes
Trabalhos sobre site online , mas ainda não consigo verificá-lo no computador. Imprime números como:
etc.
fonte
Powershell,
201918 bytesMelhorado roubando descaradamente a resposta de TimmyD
Resultado:
Versão antiga:
Não sei por que tbh, mas - a variável não declarada (ou - $ null) é avaliada como 0, o que nos salvou 2 bytes nesta versão ...
fonte
Pyke ,
72 bytesExperimente aqui!
7 bytes
Experimente aqui!
Se imprimir + -0 estiver ok,
oD_r
fonte
Braquilog , 2 bytes
Experimente online!
Como o programa não recebe nenhuma entrada, a variável de entrada do predicado principal é deixada sem restrição. Inicialmente, assume-se que seja 0, mas quando a execução
⊥
é atingida, ela retorna ao único ponto de falha possível: a escolha do valor para a variável de entrada. Então, ele tenta 1, -1 e todos os outros números inteiros, imprimindo cada um deles separado por novas linhas para⊥
sempre, porque sempre força o retorno e o efeito deẉ
é executado imediatamente.fonte