Faça um carregador falso assim:
Parâmetros:
- Exiba
loading
(espaço) um destes ciclicamente-\|/
(espaço) (contador de porcentagem de 0 a 100) e depois a%
. - O contador de porcentagem deve aumentar em 1 sempre que a exibição for alterada.
- O tempo gasto pelo contador para pular para a próxima iteração é aleatório. Qualquer tipo aleatório funcionará desde que a função / método seja capaz de gerar todos os números inteiros aleatórios com probabilidade> 0 no intervalo
1<= ms <=750
aquims
sendo tempo em milissegundos. - Comece às
loading - 0 %
. - Terminar às
loading - 100 %
. - Nenhuma entrada é necessária.
- envie um programa ou função completo ou algo semelhante.
O código que eu usei:
C ++
#include<stdio.h>
#include<time.h>
#include<windows.h>
int main()
{
srand(time(NULL));
char a[15],b[]="-\\|/";
int i=0,j=0,ms;
while(j<101)
{
(i<3)?i++:i=0;
wsprintf(a,"loading %c %d ",b[i],j++);
printf(a);puts("%");
//This part is to make the output look cool
switch(rand()%9)
{
case 0:ms=1;break;
case 1:ms=2;break;
case 2:ms=5;break;
case 3:ms=10;break;
case 4:ms=15;break;
case 5:ms=20;break;
case 6:ms=25;break;
case 7:ms=50;break;
case 8:ms=500;
}
Sleep(ms); //Otherwise this is supposed to be random
if(j<101) //like this Sleep(rand()%750+1);
system("cls");
}
}
Vencedora
- o código com menos bytes vence.
code-golf
ascii-art
kolmogorov-complexity
Mukul Kumar
fonte
fonte
\|/-
) sejam os mesmos, a resposta parece ser diferente, pois não é infinita e envolve a geração de números aleatórios, em vez de uma saída estática. Por isso, direi que, embora inicialmente me sentisse copiado, isso não me parece uma bobagem.-\|/
em alguns jogos, e me inspirei nos programas de instalação de console.Respostas:
MATL , 45 bytes
Exemplo de execução no compilador offline:
Ou tente no MATL Online!
Explicação
fonte
Powershell,
716865 BytesSemelhante ao https://codegolf.stackexchange.com/a/101357/59735
Economizou 3 bytes por não ser um idiota (deixou o ... ao carregar)
-3 graças a VisualMelon
alterado 750 -> 751 para garantir que 750 seja incluído.
Explicação:
Gif atualizado
fonte
-m
e perder os parênteses$_%4
(parece funcionar pelo menos na minha caixa).()
foram as sobras do outro desafio do qual copiei diretamente meu código.Python 2,
119113112 BytesOriginalmente, eu tinha escolhido o valor aleatório
random()/.75
, mas o ponto final não seria incluído. Não há muita diferença disso para a outra questão para o tempo de carregamento infinito, exceto pela aleatoriedade e pelo fato de que ele realmente termina.obrigado a Jonathan Allan, por salvar 6 bytes, e ao DJMcMayhem, por salvar um byte!
fonte
import time,random as r
er.randint
.for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)
range(1,101)
por algum motivo ..i=0;for c in'-\|/'*25:print'\rLoading',c,i,'%',;time.sleep(r.randint(1,750)/1e3);i+=1
Lote, 185 bytes
Infelizmente, o tempo é bastante ruim, mas o Lote não tem nada melhor para usar do que
ping
.fonte
Loading % Invalid switch. - /aw
(eu adoraria experimentá-lo no MS DOS se ainda encontrar minha cópia).*> <> (Estrela do mar),
8682 bytesExperimente aqui!
Pode ser que você possa jogar mais, mas não vejo nada super óbvio. Ele dorme 100ms, 400ms ou 700ms, se isso não for aleatório o suficiente, avise-me!Obrigado a @TealPelican por me salvar 4 bytes e torná-lo muito mais aleatório!
Os maiores desafios que encontrei (enquanto ainda tentava mantê-lo pequeno) foram a aleatoriedade e, na verdade, exibindo "loading - 100%" no final, em vez de simplesmente sair da forma mais conveniente: p.
fonte
Perl 6 , 67 bytes
Expandido:
fonte
Javascript (ES6),
128118116115112110109 bytesIsso parece funcionar perfeitamente bem, mesmo com essa fonte superficial de números "aleatórios".
Alternativa 1 , Javascript + HTML, 16 + 84 bytes
Este usa um elemento já existente para exibir o conteúdo restante:
Alternativa 2 , 95 bytes
Se eu posso assumir que uma guia está aberta e que você está colando isso no console:
Em vez de mostrar o HTML, o título do documento será alterado.
Obrigado a @ user2428118 por salvar 2 bytes!
fonte
()
depoisDate
para salvar dois bytes.F #, 118 bytes
Para executar esse snippet, passe-o para
Async.Start
ouAsync.RunSynchronously
.fonte
PHP,
9083807877bytes77:
O fechamento
;
não é necessário.78:
Enquanto procurava outra solução alternativa para obter um 0 inicialmente sem inicializar a variável, vim com isso:
Alterei de volta ao eco para ganhar alguns bytes, pois apenas usei printf para forçar o formato como int. Ao incrementar o $ i incrementado com 0, recebo um número inteiro válido. Ao usar aspas simples como delimitador de string, a barra invertida não precisa ser escapada, resultando em outro byte liberado
80:
Mover o incremento de $ i da última seção para o prinf me deu mais 3 pontos. (Veja os comentários abaixo)
83:
Removida init de uma variável com os loaderstates.
90:
Tentei remover o init de $ i para obter alguns bytes, pois precisei adicionar alguns para ativar a animação do carregador. printf adiciona 2 ao invés de eco, mas a formatação de NULL como um número inteiro resulta em 0.
fonte
printf
, economizando um único byte:for(;$i<101;usleep(rand(1,750)*1e3))printf("\rloading %s %d%%",'-\|/'[$i%4],$i++);
(82 bytes)rand(0,750)*1e3
retorna um valor entre 0 (inválido) e 750, multiplicado por 1000.rand(1,75e4)
retorna um valor entre 1 (inválido) e 750000. O atraso deve serrand(1,750)*1e3
, desde que você useusleep()
. Ele funciona com microssegundos , que é 1000x menor que um milissegundo.echo
is 3 bytes shorter thanprintf
. You may want to put the most recent version to the top and use#title
instead of**title**
. And there is a space missing between the number and the%
.Groovy,
11387 bytes-36 bytes thanks to lealand
fonte
p=-1;101.times{println"Loading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}
println"Loading…
→print"\rLoading…
. E remova essa variável p, use a implícita.Bash,
162104 bytesModificação da resposta de Zachary em uma pergunta relacionada, com melhorias maciças por manatwork:
Eu tive que procurar como fazer números aleatórios no bash.
Ungolfed / Explained
fonte
s='-\|/';for x in {0..100};{ printf "\rloading ${s:x%4:1} $x %%";sleep `printf .%03d $[RANDOM%750+1]`; }
BTW, nosso site Unix e Linux também tem uma pergunta sobre como fazer cálculos de números inteiros e flutuantes, em bash ou em outros idiomas / estruturas? .$[math]
, usando em{ }
vez dedo done
, ou usando ticks de volta em vez de$()
. Sim, reutilizar $ x para acessar a matriz gráfica do carregador faz sentido. Além disso, dar um tapa.
na frente do número para obter o decimal para dormir é muito bom!C #,
170149135 bytesUngolfed:
Não garanto que todos os personagens estejam corretos. Corrija-me se houver erros de compilação. Eu tive que digitar tudo no meu telefone, para poder incluir acidentalmente alguns erros ... ¯_ (ツ) _ / ¯ Espero que vocês me perdoemTestei no meu PC, funciona como um encanto e até salvei 20 bytes graças ao pmbanka :)
fonte
\r
(retorno de carro) em vez deConsole.Clear()
. Você também pode inline s variable para salvar alguns bytes.i<=100
fori<101
for (int i = 0; i <= 100; i++)
pode ser reescrito comofor (int i = 0; i++ <= 100;)
Em seguida, você pode colocar o Thread.Sleep no local em que o i ++ estava e salvar os dois colchetes. Corte 3 bytes no totalstatic void l()
com()=>
C
112103 bytesEconomizou 9 bytes graças a @G. Sliepen. Não é muito emocionante, apenas um pouco da sua resposta em C ++ basicamente. Também não é uma função aleatória muito emocionante. Eu pensei
Sleep(c[i%4])
, ouSleep(i)
mas eles não são aleatórios!Ungolfed:
fonte
rand ()%750
gera números 0-749 você precisará adicionar 1.rand()%750
pararand()%751
não dará o resultado desejado. Ele irá gerar um valor aleatório entre 0 e 750. Na questão, o atraso deve estar entre 1 e 750 (inclusive). De acordo com tutorialspoint.com/c_standard_library/c_function_rand.htm , arand()
função gera números entre 0 e (pelo menos) 32767. Se o fizer0 % 750
, recebe 0 desde então0 / <anything> == 0
.char*c="-\\|/";
e usando a string literal diretamente em vez da variávelc
:printf(...,"-\\|/"[i%4],...)
Mathematica, 133 bytes
Isso será executado uma vez, assumindo que x é indefinido.
Clear@x
irá reiniciá-lo.55 caracteres amarrados na verbosidade: /
fonte
UpdateInterval:>[email protected]
chama repetidamenteRandomReal
, masUpdateInterval->[email protected]
chamaria apenas uma vez.R - 94 bytes
Muito bom isso
sample(750,1) == sample(1:750,1)
.fonte
HTML + JS (ES6), 16 + 87 = 103 bytes
fonte
PHP,
6679 bytesInfelizmente, tive que atribuir $ i para imprimir '0'.
Use como:
Edições: graças a Titus confirmando exatamente o que é permitido com Mukul Kumar, podemos salvar 3 bytes com um intervalo menos restrito, mas nem todos os 9 bytes com um intervalo irrestrito. Obrigado também por apontar que esqueci o personagem de ciclismo e fornecendo uma solução simples para isso.
fonte
rand(1,75e4)
salva 3 bytes;1e6
pode salvar outro; e nenhum parâmetro salva 9 bytes por completo; e não vejo que viole nenhuma regra. Mas você esqueceu de alternar o personagem: +16 para em","-\\|/"[$i%4],"
vez de-
.usleep(rand(1,75e4))
gerará um intervalo aleatório entre 1 microssegundo e 750 milissegundos ? Além disso, de acordo com a pergunta, o intervalo deve estar entre 1 e 750, inclusive.1 to 75e4
é aceitável.Noodel , 40 bytes não- concorrentes
Voltando aos velhos desafios (como nos anteriores ao Noodel ) e competindo com o Noodel para descobrir onde ele é fraco.
Se a saída final não importa, você pode salvar 2 bytes.
Noodel empurra a parte superior da pilha para a tela no final do programa, adicionando a opção
€Ḃ
para impedir que isso aconteça.Tente:)
Como funciona
fonte
¤
s?¤
é usado :)noodle
e depois o convertecode
para Javascript?noodel
que manipulacode
corretamente. Ele converte oscode
tokens que são objetos JavaScript que são encadeados e executados. Oppcg.min.js
cria os objetos HTML adequados e converte a saída do que é analisado nos objetos HTML para criar a exibição. Cada token é executado percorrendo-os, acionando um evento step registrado para atualizar a tela :) Isso ajuda?C
126121 bytesVersão não destruída:
@Carcigenicate @ Mukul Kumar Não leu nas entrelinhas, obrigado! :)
fonte
MATLAB, 108 bytes
fonte
Oitava,
122120119108 bytesEu interpretei mal o desafio e criei um carregador infinito que reiniciou em 0 quando passou de 100. Transformando-o em um carregador único:
Circulante
a
,a=a([2:4,1])
foi idéia de flawr aqui . Além disso, economizou 2 bytes ignorando os parênteses depois derand
agradecer a MattWH.fonte
.749*rand()+.001
? Isso pode esperar 751ms. Além disso, você pode deixar o()
rand off e salvar 2 bytes.ForceLang, 250 bytes
Não-competitivo, requer recursos de idioma que pós-datam a pergunta
Provavelmente eu deveria corrigir alguns erros relacionados à análise literal de strings em breve.
fonte
Raquete 110 bytes
Ungolfed:
Teste:
Saída:
(Este arquivo gif está mostrando uma exibição mais lenta que a real)
fonte
10775 Rubi-32 graças a manatwork
Normal
Golfe
fonte
system'clear'
é um exagero aqui. Também o uso da variável separada i. Ah, e pré-calcule sempre que possível:0.750-0.01
→0.749
(observe também que você não possui uma casa decimal em 0,01 - deve ser 0,001). A resultante101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}
torna-se muito semelhante ao Conor O'Brien 's Rubi resposta na Carregando ... para sempre , mas assim é o desafio.Python 3, 149 bytes
Semelhante a Carregando ... Para sempre, mas tive que editar muito a minha resposta a partir daí.
fonte
TI-Basic, 80 bytes
A aleatoriedade vem do
For(
loop (E é um token E científico) e, como a TI-Basic é interpretada, também há automaticamente alguma sobrecarga. Lembre-se de que, no TI-Basic, letras minúsculas e alguns símbolos ASCII menos comuns têm dois bytes cada (portanto, especificamente para este programa,l o a d i n g sub( \ | %
são os tokens de dois bytesfonte
Clojure, 109 bytes
Loops em uma lista do intervalo de números de 0 a 100, compactados com uma lista infinita de
"\|/-"
repetições para sempre.fonte
tcl, 116
Pode ser reproduzido em http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMOXoybnVSOVJEU00
fonte
Java 8, 130 bytes
Explicação:
Gif de saída:
fonte
Visual Basic, 371 bytes
Expandido:
fonte