Faça de mim um carregador falso

29

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 <=750aquims 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.
Mukul Kumar
fonte
11
Related
DJMcMayhem
11
Não achei que fosse uma duplicata. Esta questão não pode ser implementada em> <>, mas pode estar em *> <> por exemplo. Eu gostei bastante.
Redstarcoder
11
@Ego A pergunta não é uma duplicata. A saída é um pouco diferente, o tempo de execução é completamente diferente e a saída requer um tempo aleatório, em vez de um atraso fixo de 250ms. As respostas de uma pergunta não podem ser usadas na outra sem grandes modificações. Por favor, leia as perguntas.
Ismael Miguel
8
Como autor do outro desafio, vou entrar no debate burro. Embora os caracteres de ciclo ( \|/-) 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.
FlipTack
@ flp.tkc essa idéia veio de muitos lugares combinados, como eu vi -\|/em alguns jogos, e me inspirei nos programas de instalação de console.
Mukul Kumar

Respostas:

6

MATL , 45 bytes

101:"'loading'O'-\|/'@)O@qVO37&hD750Yr100/&Xx

Exemplo de execução no compilador offline:

insira a descrição da imagem aqui

Ou tente no MATL Online!

Explicação

101:          % Push array [1 2 ... 101]
"             % For each
  'loading'   %   Push this string
  O           %   Push 0. When converted to char it will be displayed as a space
  '-\|/'      %   Push this sring
  @)          %   Modular index into this string with iteration index
  O           %   Push 0
  @q          %   Iteration index minus 1
  V           %   Convert to string
  O           %   Push 0
  37          %   Push 37, which is ASCII for '%'
  &h          %   Concatenate horizontally into a string, Numbers are converted to char
  D           %   Display
  750Yr       %   Random integer with uniform distribution on [1 2 ... 750]
  100/        %   Divide by 100
  &Xx         %   Pause that many tenths of a second and clear screen
              % End (implicit)
Luis Mendo
fonte
16

Powershell, 71 68 65 Bytes

Semelhante 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.

0..100|%{cls;"loading $("|/-\"[$_%4]) $_ %";sleep -m(random 751)}

Explicação:

0..100|%{                                  #For range 0-100...
    cls                                    #Clear Display
    "loading $("|/-\"[$_%4]) $_ %"    #Display the current string
    sleep -m(random 750)                  #Sleep random ms up to 750
}

Gif atualizado

insira a descrição da imagem aqui

colsw
fonte
sua saída não é exatamente o mesmo, consulte o meu gif e seu corretas
Mukul Kumar
Eu acho que você pode deixar o espaço depois -me perder os parênteses $_%4(parece funcionar pelo menos na minha caixa).
precisa saber é o seguinte
@VisualMelon obrigado, ()foram as sobras do outro desafio do qual copiei diretamente meu código.
colsw
8

Python 2, 119 113 112 Bytes

Originalmente, 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.

import time,random as r
for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)

obrigado a Jonathan Allan, por salvar 6 bytes, e ao DJMcMayhem, por salvar um byte!

Kade
fonte
11
Salve 6 bytes com import time,random as re r.randint.
Jonathan Allan
@ JonathanAllan Não sabia que era possível importar assim, obrigado!
Kade
Um loop for é um pouco mais curto:for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)
DJMcMayhem
@DJMcMayhem Whoops, eu tinha sido testando-a com range(1,101)por algum motivo ..
Kade
Na verdade, achei algo mais 3 bytes mais curto:i=0;for c in'-\|/'*25:print'\rLoading',c,i,'%',;time.sleep(r.randint(1,750)/1e3);i+=1
DJMcMayhem
6

Lote, 185 bytes

@set s=-\!/
@for /l %%i in (0,1,100)do @call:l %%i
@exit/b
:l
@cls
@set c=%s:~0,1%
@set s=%s:~1%%c%
@echo Loading %c:!=^|% %1 %%
@set/aw=%random%%%751
@ping>nul 1.1 -n 1 -w %w%

Infelizmente, o tempo é bastante ruim, mas o Lote não tem nada melhor para usar do que ping.

Neil
fonte
Isso funciona apenas no Windows. O lote do FreeCom DOS é fornecido Loading % Invalid switch. - /aw (eu adoraria experimentá-lo no MS DOS se ainda encontrar minha cópia).
Brian Minton
@BrianMinton: Boa sorte executá-lo em MS DOS (nenhum comando ping)
Joshua
@BrianMinton Requer o CMD.EXE devido às substituições avançadas de variáveis.
Neil
@ Josué Bem, não construído pelo menos; isso não aconteceu até o Windows 2000.
Neil
6

*> <> (Estrela do mar), 86 82 bytes

| v1*aoooooooo"loading K"&0"-\|/"
!0x1! +
%$<.0+af{od;?)*aa&:&Soono$&+1:&"  %"{o:}

Experimente 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.

redstarcoder
fonte
11
Ei, eu amo essa abordagem na linguagem> <>, ela abre muito mais desafios: D - Eu tive um pequeno ajuste no seu código e não o reduzi muito, mas mudei os números aleatórios. Link para o código> <> A única alteração para tornar isso viável em *> <> seria alterar o ~ do link do código para S para usar o tempo. Isso gera números aleatórios até 749 e elimina algumas operações de pilha em excesso. PS Eu adoraria se você pudesse fazer *> <> intérprete on-line: D
Teal pelican
11
@Tealpelican, obrigado! Adoro suas alterações, especialmente o gerador de números aleatórios! Eu também adoraria um intérprete online *> <>: p. Eu não brinco com JS com muita frequência, mas eu vou tentar brincar com JS, ou talvez executar o intérprete Go através do GopherJS primeiro para começar. :)
redstarcoder 12/12
11
Obrigado, demorou um pouco para realmente chegar a uma versão de trabalho, mas este parece o golfe mais popular que eu poderia gerar. Vou ficar de olho nisso e, se não, posso fazer um python. Eu ainda acho que a primeira linha poderia ser um pouco mais jogada no golfe, mas não fui capaz de fazer isso sozinha.
Teal pelican
11
A @Tealpelican espera que isso preencha a coceira do intérprete on-line ou pelo menos faça a bola rolar. Vou procurar uma maneira de compartilhar código mais tarde. starfish.000webhostapp.com
redstarcoder
11
Isso foi rápido, basta executar o programa agora e parece funcionar bem: D Vou tentar usar isso para alguns desafios esta semana.
Teal pelican
5

Perl 6 , 67 bytes

for |<- \ | />xx* Z 0..100 {print "\rloading $_ %";sleep .750.rand}

Expandido:

for

  # produce a list of all the pairs of values

  |<- \ | /> xx *   # a flat infinite list of "clock faces"
  Z                 # zipped with
  0 .. 100          # all the numbers from 0 to 100 inclusive

  # &zip / &infix:<Z> stop on the shortest list

{

  # 「$_」 will look something like 「("/", 39)」
  # when it is coerced to a Str, all of its elements
  # will be coerced to Str, and joined with spaces

  print "\rloading $_ %";

  sleep .750.rand

}
Brad Gilbert b2gills
fonte
4

Javascript (ES6), 128 118 116 115 112 110 109 bytes

Isso parece funcionar perfeitamente bem, mesmo com essa fonte superficial de números "aleatórios".

(X=_=>setTimeout(i>99||X,1+new Date%750,document.body.innerHTML=`<pre>Loading ${'-\\|/'[i%4]} ${i++}%`))(i=0)


Alternativa 1 , Javascript + HTML, 16 + 84 bytes

Este usa um elemento já existente para exibir o conteúdo restante:

(X=_=>setTimeout(i>99||X,1+new Date%750,a.innerHTML=`${'-\\|/'[i%4]} ${i++}%`))(i=0)
Loading <a id=a>

Alternativa 2 , 95 bytes

Se eu posso assumir que uma guia está aberta e que você está colando isso no console:

(X=_=>setTimeout(i>99||X,1+new Date%750,document.title=`Loading ${'-\\|/'[i%4]} ${i++}%`))(i=0)

Em vez de mostrar o HTML, o título do documento será alterado.


Obrigado a @ user2428118 por salvar 2 bytes!

Ismael Miguel
fonte
Você pode soltar o ()depois Datepara salvar dois bytes.
user2428118
@ user2428118 Eu não sabia que isso funcionava! Obrigado pela dica.
Ismael Miguel
4

F #, 118 bytes

async{let r=System.Random()
for i in 0..100 do printf"\rLoading %O %d %%""|/-\\".[i%4]i;do!Async.Sleep(r.Next(1,750))}

Para executar esse snippet, passe-o para Async.Startou Async.RunSynchronously.

pmbanka
fonte
Voto a favor por causa do F # #
Snowfire
4

PHP, 90 83 80 78 77 bytes

77:

O fechamento ;não é necessário.

for(;$i<101;usleep(rand(1,75e4)))echo"\rloading ",'-\|/'[$i%4],' ',$i+++0,'%'

78:

Enquanto procurava outra solução alternativa para obter um 0 inicialmente sem inicializar a variável, vim com isso:

for(;$i<101;usleep(rand(1,75e4)))echo"\rloading ",'-\|/'[$i%4],' ',$i+++0,'%';

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)

for(;$i<101;usleep(rand(1,75e4)))printf("\rloading %s %d%%","-\\|/"[$i%4],$i++);

83:

Removida init de uma variável com os loaderstates.

for(;$i<101;usleep(rand(1,75e4)),$i++)printf("\rloading %s %d%%","-\\|/"[$i%4],$i);

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.

for($l='-\|/';$i<101;usleep(rand(0,750)*1e3),$i++)printf("\rloading %s %d%%",$l[$i%4],$i);
thisisboris
fonte
Há um erro: a pergunta exige que o atraso esteja entre 1 e 750, inclusive. Você tem entre 0 e 750. Além disso, você pode mover o incremento para o printf, economizando um único byte: for(;$i<101;usleep(rand(1,750)*1e3))printf("\rloading %s %d%%",'-\|/'[$i%4],$i++);(82 bytes)
Ismael Miguel
11
@IsmaelMiguel rand () é inclusivo ou é por causa da multiplicação por * 1e3? Vou me esgueirar nesse byte grátis.
Thisisboris
A pergunta requer um intervalo aleatório entre 1ms e 750ms (inclusive). rand(0,750)*1e3retorna 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 ser rand(1,750)*1e3, desde que você use usleep(). Ele funciona com microssegundos , que é 1000x menor que um milissegundo.
Ismael Miguel
This may take you inconveniently close to user59178´s answer, but echo is 3 bytes shorter than printf. 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 %.
Titus
@Titus I can't use echo here because I didn't initialize my $i, null to string evaluates to '', via printf I force integer (%d) resulting in null = 0. #justphpthings
thisisboris
3

Groovy, 113 87 bytes

-36 bytes thanks to lealand

{p=-1;101.times{print"\rLoading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}}​
Urna de polvo mágico
fonte
2
84 bytes e deve ser executado no console Groovy:p=-1;101.times{println"Loading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}
lealand
11
Embora o proprietário da pergunta não tenha solicitado explicitamente, ele provavelmente deseja que as mensagens de carregamento consecutivas sejam substituídas uma pela outra. Não há diferença de tamanho, então é melhor mudar println"Loading…print"\rLoading…. E remova essa variável p, use a implícita.
Manatwork
3

Bash, 162 104 bytes

Modificação da resposta de Zachary em uma pergunta relacionada, com melhorias maciças por manatwork:

s='-\|/'
for x in {0..100};{
printf "\rloading ${s:x%4:1} $x %%"
sleep `printf .%03d $[RANDOM%750+1]`
}

Eu tive que procurar como fazer números aleatórios no bash.

Ungolfed / Explained

s='-\|/'
for x in {0..100}
{
    # \r returns the carriage to the beginning of the current line.
    # ${s:x%4:1} grabs a substring from s, at index x%4, with a length of 1.
    printf "\rloading ${s:x%4:1} $x %%"

    # "$RANDOM is an internal bash function that returns
    #   a pseudorandom integer in the range 0 - 32767."
    # .%03d is a dot followed by a base-ten number formatted to 3 places,
    #   padded with zeros if needed.
    # sleep accepts a floating point number to represent milliseconds.
    sleep `printf .%03d $[RANDOM%750+1]`
}
Hydraxan14
fonte
11
Boa primeira tentativa. Consulte Dicas para jogar golfe no Bash para obter dicas de melhoria. Pessoalmente, junto com o 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? .
manatwork
@manatwork Bons links! Eu não sabia $[math], usando em { }vez de do 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!
Hydraxan14
3

C #, 170 149 135 bytes

()=>{for(int i=0;i++<=100;System.Threading.Thread.Sleep(new Random().Next(1,750)))Console.Write($"\rloading {@"-\|/"[i % 4]} {i} %");};

Ungolfed:

static void l()
{
    for (int i = 0; i <= 100; System.Threading.Thread.Sleep(new Random().Next(1, 750)))
        Console.Write($"\rloading {@"-\|/"[i % 4]} {i} %");   
}

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 perdoem

Testei no meu PC, funciona como um encanto e até salvei 20 bytes graças ao pmbanka :)

Snowfire
fonte
11
Você pode usar \r(retorno de carro) em vez de Console.Clear(). Você também pode inline s variable para salvar alguns bytes.
Pbanka #
11
Você também pode salvar um byte extra substituindo o i<=100fori<101
auhmaan
for (int i = 0; i <= 100; i++)pode ser reescrito como for (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 total
CSharpie
Também OP não precisava pedir um Programa para que você possa substituir static void l()com()=>
CSharpie
2

C 112 103 bytes

Economizou 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]), ou Sleep(i)mas eles não são aleatórios!

#import<windows.h>
i;f(){for(;i<101;printf("\rloading %c %d %%","-\\|/"[i%4],i++),Sleep(rand()%750+1));}

Ungolfed:

#include <windows.h>
int i;
void f() {
  for(;i<101;) {
    printf("\rloading %c %d %%", "-\\|/"[i%4], i++);
    Sleep(rand()%750+1);
  }
}
nmjcman101
fonte
3
Estou com medo, mas rand ()%750gera números 0-749 você precisará adicionar 1.
Mukul Kumar
Alterar rand()%750para rand()%751nã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 , a rand()função gera números entre 0 e (pelo menos) 32767. Se o fizer 0 % 750, recebe 0 desde então 0 / <anything> == 0.
Ismael Miguel
Raspe 9 bytes removendo char*c="-\\|/";e usando a string literal diretamente em vez da variável c:printf(...,"-\\|/"[i%4],...)
G. Sliepen
2

Mathematica, 133 bytes

Dynamic[If[x<100,x++,,x=0];Row@{"Loading ",StringPart["-\|/",1+x~Mod~4]," ",x,"%"},
    UpdateInterval:>[email protected],TrackedSymbols:>{}]

Isso será executado uma vez, assumindo que x é indefinido. Clear@xirá reiniciá-lo.

55 caracteres amarrados na verbosidade: /

Kelly Lowder
fonte
É um intervalo fixo ou será repetidamente randomizado?
Titus
É aleatório. UpdateInterval:> 75 teriam sido corrigidos #
Kelly Lowder
11
@ Titus: Eu acredito que UpdateInterval:>[email protected]chama repetidamente RandomReal, mas UpdateInterval->[email protected]chamaria apenas uma vez.
Omar
2

R - 94 bytes

for(i in 0:100){cat('\rLoading',c('-','\\','|','/')[i%%4+1],i,'%');Sys.sleep(sample(750,1)/1e3)}

Muito bom isso sample(750,1) == sample(1:750,1).

bouncyball
fonte
2

HTML + JS (ES6), 16 + 87 = 103 bytes

(f=_=>a.innerHTML='\\|/-'[i++%4]+` ${i<100&&setTimeout(f,Math.random()*750),i} %`)(i=0)
loading <a id=a>

darrylyeo
fonte
2

PHP, 66 79 bytes

for($i=-1;++$i<101;usleep(rand(1,75e4)))echo"\rloading ","-\\|/"[$i%4]," $i %";

Infelizmente, tive que atribuir $ i para imprimir '0'.
Use como:

php -r 'for($i=-1;++$i<101;usleep(rand(1,75e4)))echo"\rloading ","-\\|/"[$i%4]," $i %";'

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.

user59178
fonte
11
Os requisitos aleatórios são que você gere todos os 1ms a 750ms com uma possibilidade> 0. Não vejo que outros valores sejam proibidos. rand(1,75e4)salva 3 bytes; 1e6pode 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 -.
Titus
@Titus Não 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.
Ismael Miguel
Veja os comentários mais recentes sobre a pergunta: 1 to 75e4é aceitável.
Titus
@ Titus Eu considerei mudanças como essas, mas decidi seguir o que parecia implícito na pergunta (atrasos de milissegundos inteiros). Obrigado por perguntar exatamente o que foi permitido!
user59178
2

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.

Loading¤”ḋḟƇḣ⁺s¤ṡ⁺Ḷ101ạ¤%ɱṠĖ²⁺Çṛ749⁺1ḍ€Ḃ

Se a saída final não importa, você pode salvar 2 bytes.

Loading¤”ḋḟƇḣ⁺s¤ṡ⁺Ḷ101ạ¤%ɱṠĖ²⁺Çṛ749⁺1ḍ

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

Loading¤”ḋḟƇḣ⁺s¤ṡ⁺Ḷ101ạ¤%ɱṠĖ²⁺Çṛ749⁺1ḍ€Ḃ # Main Noodel script.

Loading¤”ḋḟƇḣ⁺s¤ṡ⁺                       # Creates the array ["Loading¤-¤", "Loading¤\¤", "Loading¤|¤", "Loading¤/¤"]
Loading¤                                 # Pushes the string "Loading¤"
        ”Ƈḟḋḣ                            # Pushes the array ["-", "\", "|", "/"]
             ⁺s                          # Concats "Loading¤" to each element in the array by prepending.
               ¤                         # Pushes a "¤" onto the stack.
                ṡ                        # Pushes
                 ⁺

                  Ḷ101ạ¤%ɱṠĖ²⁺Çṛ749⁺1ḍ   # Main loop that creates the animation.
                  Ḷ101                   # Loop the following code 101 times.
                      ạ                  # Pushes on a copy of the next animation element from the array.
                       ¤%                # Pushes the string "¤%"
                         ɱ               # Pushes on the current count of the number of times that have looped (zero based).
                          Ṡ              # Swaps the two items at the bottom of the stack.
                           Ė             # Pushes the item at the bottom of the stack to the top (which will be the string selected from the array).
                            ²⁺           # Concat twice appending the loop count then the string "¤%" to the string selected from the array.
                              Ç          # Pops the string off of the stack, clears the screen, then prints the string.
                               ṛ749      # Randomly generate an integer from 0 to 749.
                                   ⁺1    # Increment the random number producing a random number from 1 - 750.
                                     ḍ   # Pop off the stack and delay for that number of milliseconds.

                                      €Ḃ # Ends the loop and prevents anything else being displayed.
                                      €  # Ends the loop (new line could be used as well)
                                       Ḃ # Destroys the current stack therein, nothing gets pushed to the screen at the end of the program.

<div id="noodel" code="Loading¤”ḋḟƇḣ⁺s¤ṡ⁺Ḷ101ạ¤%ɱṠĖ²⁺Çṛ749⁺1ḍ€Ḃ" input="" cols="14" rows="2"></div>

<script src="https://tkellehe.github.io/noodel/noodel-latest.js"></script>
<script src="https://tkellehe.github.io/noodel/ppcg.min.js"></script>

tkellehe
fonte
Por que existem tantos ¤s?
Kritixi Lithos
@KritixiLithos Noodel utiliza espaços como um NOP modo de impressão de um espaço a ¤é usado :)
tkellehe
11
Aliás, é bom que há um trecho de pilha para este :)
Kritixi Lithos
Como o trecho funciona? O script importado encontra o elemento com o ID de noodlee depois o converte codepara Javascript?
Carcigenicate
@Carcigenicate, Sim. O "analisador" é a função JavaScriptnoodel que manipula codecorretamente. Ele converte os codetokens que são objetos JavaScript que são encadeados e executados. O ppcg.min.jscria 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?
precisa saber é
2

C 126 121 bytes

f(){i=0;char c[]="/-\\|";for(;i<101;i++){printf("\rloading %c %d %% ",c[i%4],i);fflush(stdout);usleep(1000*(rand()%75));}

Versão não destruída:

 void f()
 {
  int i=0;
  char c[]="/-\\|";
  for(;i<101;i++)
  {
    printf("\rloading %c %d %% ",c[i%4], i);
    fflush(stdout);
    usleep(1000*(rand()%75));  
  }
 } 

@Carcigenicate @ Mukul Kumar Não leu nas entrelinhas, obrigado! :)

Abel Tom
fonte
11
c [] não é aleatória ... Mas é andar de bicicleta ....
Mukul Kumar
Ou, em outras palavras, você não deve escolher um caractere aleatório de "\ | / -", deve exibir /, então -, então \, então |, em um ciclo.
Carcigenicate
@MukulKumar @ Carcigenicate Atualizado o código para que ele faça o que as especificações dizem sobre caracteres de ciclismo!
Abel Tom
1

MATLAB, 108 bytes

function k;for i=0:100;a='-\|/';pause(rand*.749+.001);clc;['loading ' a(mod(i,3)+1) ' ' num2str(i) ' %']
end
MattWH
fonte
1

Oitava, 122 120 119 108 bytes

Eu interpretei mal o desafio e criei um carregador infinito que reiniciou em 0 quando passou de 100. Transformando-o em um carregador único:

a='\|/-';for i=0:100;clc;disp(['Loading ',a(1),' ',num2str(i),' %']);a=a([2:4,1]);pause(0.749*rand+.001);end

Circulante a, a=a([2:4,1])foi idéia de flawr aqui . Além disso, economizou 2 bytes ignorando os parênteses depois de randagradecer a MattWH.

Stewie Griffin
fonte
Deveria ser .749*rand()+.001? Isso pode esperar 751ms. Além disso, você pode deixar o ()rand off e salvar 2 bytes.
precisa saber é o seguinte
1

ForceLang, 250 bytes

Não-competitivo, requer recursos de idioma que pós-datam a pergunta

def D def
D w io.write
D l e+"loading"+s
D z string.char 8
D s string.char 32
D d datetime.wait 750.mult random.rand()
D e z.repeat 24
D n set i 1+i
D k s+n+s+"%"
set i -1
label 1
w l+"-"+k
if i=100
exit()
d
w l+"\"+k
d
w l+"|"+k
d
w l+"/"+k
d
goto 1

Provavelmente eu deveria corrigir alguns erros relacionados à análise literal de strings em breve.

SuperJedi224
fonte
1

Raquete 110 bytes

(for((i 101))(printf"Loading ~a ~a % ~n"(list-ref'("-" "\\" "|" "/")(modulo i 4))i)(sleep(/(random 750)1000)))

Ungolfed:

(define(f)
  (for ((i 101))
    (printf "Loading ~a ~a % ~n" (list-ref '("-" "\\" "|" "/") (modulo i 4)) i)
    (sleep (/(random 750)1000))))

Teste:

(f)

Saída: insira a descrição da imagem aqui

(Este arquivo gif está mostrando uma exibição mais lenta que a real)

rnso
fonte
O que há com as coisas no final do gif?
Carcigenicate
Este parece ser um artefato do programa de captura de tela.
rnso
1

107 75 Rubi

-32 graças a manatwork

Normal

i=0
(0..100).each{|c|
system'clear'
puts"loading #{'\|/-'[i=-~i%4]} #{c} %"
sleep rand*(0.750-0.01)+0.01
}

Golfe

101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}
Tom Lazar
fonte
Dado que você tem uma única linha de saída para substituir, isso 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.010.749(observe também que você não possui uma casa decimal em 0,01 - deve ser 0,001). A resultante 101.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.
Manatwork
1

Python 3, 149 bytes

import time,random;f=0;n=0
while n<=100:
 print("Loading...","|/-\\"[f],n,"%",end="\r");f+=1
 if f>=3:f=0
 n+=1
 time.sleep(random.uniform(.25,.75))

Semelhante a Carregando ... Para sempre, mas tive que editar muito a minha resposta a partir daí.

python-b5
fonte
1

TI-Basic, 80 bytes

For(I,0,100
For(A,0,randE2
End
Text(0,0,"loading "+sub("-\|/",1+fPart(I/4),1)+" ",I," %
End

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 bytes

Timtech
fonte
1

Clojure, 109 bytes

(doseq[[c i](map vector(cycle"\\|/-")(range 101))](print"\rloading"c i\%)(flush)(Thread/sleep(rand-int 751)))

Loops em uma lista do intervalo de números de 0 a 100, compactados com uma lista infinita de "\|/-"repetições para sempre.

; (map vector...) is how you zip in Clojure
;  All arguments after the first to map are lists. The function is expected to
;  take as many arguments as there are lists. vector is var-arg.
(doseq [[c i] (map vector (cycle "\\|/-") (range 101))]
  ; \r to erase the old line
  (println "\rloading" c i \%)
  (Thread/sleep (rand-int 751)))
Carcinigenicado
fonte
1

tcl, 116

set i 0;time {lmap c {- \\ | /} {puts -nonewline stderr "\rloading $c $i%";after [expr int(187*rand())]};incr i} 100

Pode ser reproduzido em http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMOXoybnVSOVJEU00

sergiol
fonte
Sua saída parece pouco ...
Mukul Kumar
hmm ,,, meu código desapareceu! ...
sergiol
Quero dizer que sua saída está neste formato "loading ... xx%", em vez disso deve ser assim "loading - xx%" onde '-' varia conforme explicado na pergunta.
Mukul Kumar
@MukulKumar: Fixed.
sergiol
1

Java 8, 130 bytes

()->{for(int n=0;n<101;Thread.sleep((long)(1+Math.random()*750)))System.out.print("\rloading "+"-\\|/".charAt(n%4)+" "+n+++" %");}

Explicação:

()->{                           // Method without parameter nor return-type
  for(int n=0;n<101;            //  Loop from 0 to 100
      Thread.sleep((long)(1+Math.random()*750)))
                                //   And sleep randomly 1-750 ms 
    System.out.print(           //   Print:
      "\r                       //    Reset to the start of the line
      loading "                 //    Literal "loading "
      +"-\\|/".charAt(n%4)+" "  //    + the spinner char & a space
      +n++                      //    + the number (and increase it by 1)
      +" %");                   //    + a space & '%'
                                //  End of loop (implicit / single-line body)
}                               // End of method

Gif de saída:

insira a descrição da imagem aqui

Kevin Cruijssen
fonte
0

Visual Basic, 371 bytes

module m
sub main()
Dim s as Object
for i as Integer=0 to 100
Select Case new System.Random().next(0,9)
Case 0
s=1
Case 1
s=2
Case 2
s=5
Case 3
s=10
Case 4
s=15
Case 5
s=20
Case 6
s=25
Case 7
s=50
Case 8
s=500
End Select
Console.SetCursorPosition(0,0)
console.write("loading "+"-\|/"(i mod 4)+" "+i.tostring+" %")
system.threading.thread.sleep(s)
next
end sub
end module

Expandido:

module m
    sub main()
        Dim s as Object
        for i as Integer=0 to 100
            Select Case new System.Random().next(0,9)
                Case 0
                s=1
                Case 1
                s=2
                Case 2
                s=5
                Case 3
                s=10
                Case 4
                s=15
                Case 5
                s=20
                Case 6
                s=25
                Case 7
                s=50
                Case 8
                s=500
            End Select
            Console.SetCursorPosition(0,0)
            console.write("loading " + "-\|/"(i mod 4) + " " + i.tostring + " %")
            system.threading.thread.sleep(s)
        next
    end sub
end module
polyglotrealIknow
fonte