Seja n
o número de vezes que seu programa foi executado. Se n
for uma potência de 2, imprima 2^x
onde n = 2^x
; caso contrário, basta imprimir o número. Exemplo de execução:
[1st time] 2^0
[2nd time] 2^1
[3rd time] 3
[4th time] 2^2
[5th time] 5
e assim por diante. Este é um concurso de popularidade, por isso ganha a resposta com mais votos positivos.
popularity-contest
Jwosty
fonte
fonte
0
na primeira execução?n = 2^x
Caso contrário, a segunda vez que a saída seria?2^4
, pela quarta vez2^16
e assim por diante.1
é um poder de dois.2^0=1
x = 2^x
, em vez den = 2^x
Respostas:
Java - Abuso de API
Há muitos computadores on-line que podem contar, então, por que armazenar a conta sozinho?
Abuso total da API Stack para obter a cota e a cota restante para ver quantas vezes ela foi executada hoje:
Obviamente, isso funciona apenas com uma nova cota diária para o seu IP e apenas até a cota. Se você quiser suporte para números mais altos, postar um [recurso de pedido] para aumentar
quota_max
aMAX_INT
.fonte
Javascript
alert((n=Math.log((l=localStorage).m=~~l.m+1)/Math.log(2))==(n|0)?"2^"+n:l.m)
Os alertas sucessivos são os seguintes:
fonte
C - escrevendo no executável
Esse código C atualiza a sequência
data
no executável, portanto, essencialmente, esse é o código de modificação automática. Se você executá-lo mais de 9.999.999 vezes, obtém coisas interessantes.fonte
gcc test.c
,./a.out
2^0 Segmentation fault (core dumped)
Java
O código a seguir modifica seu próprio arquivo de classe para armazenar a nova contagem de execuções. Isso foi especialmente divertido quando você não tinha idéia da aparência do código de bytes, mas após inúmeras horas pesquisando e pesquisando no Google finalmente funciona! :)
Demo (usando 7 como valor inicial para fins de demonstração):
Código:
fonte
dg
Aqui, apresento um código portátil! A cada corrida, a
#
é adicionada no final, criando uma barra de progresso! Além disso, você pode mover o código para outra máquina e retomar de onde estava.Após 18 vezes:
fonte
Exemplo de Ruby baseado em Sinatra
Essa solução baseada em servidor armazena um contador pessoal para cada usuário em um cookie.
Experimente em http://every-2-to-the-n-times.herokuapp.com/
fonte
perl
Aqui está um pouco de perl para fazer isso. Onde os dados devem ser armazenados? Por que no próprio arquivo do programa, é claro! =)
Originalmente, eu havia usado o identificador de arquivo DATA mágico dessa maneira, mas sinto que o acima é "mais puro":
fonte
tell DATA
antes de ler e procurar novamente nesse local.Bater
Script shell simples de auto-edição.
fonte
Bater
I como dfernig 's solução Bash , mas eu gostaria de postar meu também:
Eu acho que a solução pode ser considerada diferente, porque
A "memória" é o tamanho do script (inicialmente 171 bytes), que é aumentado em 1 com o acréscimo de uma nova linha a cada execução.
Poderes de 2 são reconhecidos convertendo o tamanho do programa (menos 170, é claro) em binário e depois contando os: se houver exatamente um, então n é uma potência de 2. O expoente é o número de zeros em binário .
fonte
Solução Java
Usando a API de preferências do java para armazenar a quantidade de execução; e pré-calculou os poderes de 2 para um hashmap comparar
fonte
Javascript
Optei por não usar a
log2
solução óbvia , mas trabalhei com operadores bit a bit para encontrar a posição de bit único na representação binária de potência de 2 números.fonte
for
loop de 1 a 130, com o processamento ...: /Rubi
Tudo bem, acho que vou tentar isso agora. Ele procura a definição de
n
.(testado no Ruby 1.9.3)
fonte
Fortran 77
Código:
Resultado:
fonte
C
Uma das maneiras "apropriadas" de fazer isso (sem usar arquivos, ou seja).
Você pode fornecê-lo
reset
na linha de comando para configurá-lo novamente como zero. Você também pode mover ou copiar o executável. Mover o executável redefine-o e várias cópias do executável são independentes.fonte
Espumante, 423 caracteres (mais um código auto-modificável). Salve-o como
count.spn
depois executespn count.spn
:fonte
Aqui está uma solução rápida do Python 3, que usa um arquivo de dados para armazenar
n
ex
entre as execuções:A saída de executá-lo 16 vezes:
fonte
Python 2
fonte
C #
No entanto, isso exige que você defina uma propriedade de configurações no seu projeto do Visual Studio:
fonte
C / POSIX
Este programa usa o número de links físicos para o seu próprio executável como contador da frequência com que foi chamado. Ele cria os novos links físicos no diretório em que foi iniciado (porque dessa forma é garantido que ele esteja no mesmo sistema de arquivos), que, portanto, precisa de permissão de gravação. Omiti o tratamento de erros.
É melhor garantir que você não tenha um arquivo importante com o mesmo nome que um dos links físicos criados nesse diretório, ou ele será substituído. Se, por exemplo, o nome do executável
counter
, os links físicos serão nomeadoscounter_1
,counter_2
etc.Exemplo de execução (a primeira linha redefine o contador, caso o executável já tenha sido executado):
fonte
Fortran 95
Um arquivo chamado "a" (sem extensão) controla a execução do programa.
fonte