Fammi un falso caricatore


29

Crea un caricatore falso in questo modo:

Parametri:

  • Visualizza loading(spazio) uno di questi ciclicamente -\|/(spazio) (contatore percentuale da 0-100) quindi a %.
  • Il contatore percentuale dovrebbe aumentare di 1 ogni volta che il display cambia.
  • Il tempo impiegato dal contatore per passare alla successiva iterazione è casuale. Qualsiasi tipo di casuale farà finché la funzione / metodo è in grado di generare tutti gli interi casuali con probabilità> 0 nell'intervallo che 1<= ms <=750qui msè il tempo in millisecondi.
  • Inizia alle loading - 0 %.
  • Termina alle loading - 100 %.
  • NESSUN INGRESSO è richiesto.
  • inviare un programma o una funzione completi o simili.

Il codice che ho usato:

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");
    }
}

Vincitore

  • vince il codice con meno byte.


1
Non pensavo fosse un duplicato. Questa domanda non può essere implementata in> <>, ma può essere in *> <> per esempio. Mi è abbastanza piaciuto.
redstarcoder

1
@Mego La domanda non è un duplicato. L'output è leggermente diverso, il runtime è completamente diverso e l'output richiede un tempo casuale anziché un ritardo fisso di 250 ms. Le risposte a una domanda non possono essere utilizzate sull'altra senza pesanti modifiche. Per favore, leggi le domande.
Ismael Miguel,

8
Come autore dell'altra sfida, entrerò nel dibattito duplice. Sebbene i caratteri ciclici ( \|/-) siano gli stessi, la risposta sembra essere diversa in quanto non è infinita e implica la generazione di numeri casuali, piuttosto che un output statico. Pertanto dirò, anche se inizialmente mi sono sentito copiato, questo non mi sembra un inganno.
FlipTack

@ flp.tkc questa idea è nata da molti luoghi combinati come ho visto -\|/in alcuni giochi e mi sono ispirata ai programmi di installazione della console.
Mukul Kumar,

Risposte:


6

MATL , 45 byte

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

Esempio eseguito nel compilatore offline:

inserisci qui la descrizione dell'immagine

Oppure provalo su MATL Online!

Spiegazione

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)

16

Powershell, 71 68 65 byte

Simile a /codegolf//a/101357/59735

Salvato 3 byte non essendo un idiota (lasciato il ... in caricamento)

-3 grazie a VisualMelon

modificato 750 -> 751 per assicurarsi che 750 sia incluso.

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

Spiegazione:

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 aggiornata

inserisci qui la descrizione dell'immagine


la tua uscita non è esattamente la stessa, per favore vedi la mia gif e correggi la tua
Mukul Kumar,

Penso che dopo puoi perdere spazio -me perdere le parentesi $_%4(sembra funzionare almeno sulla mia scatola).
VisualMelon

@VisualMelon grazie, ()sono rimasti gli avanzi dell'altra sfida da cui ho copiato il mio codice.
Colsw,

8

Python 2, 119 113 112 byte

Inizialmente avevo scelto l'ammontare casuale random()/.75, tuttavia l'endpoint non sarebbe stato incluso. Non c'è molta differenza da questa all'altra domanda per il tempo di caricamento infinito, tranne per la casualità e il fatto che effettivamente finisca.

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

grazie a Jonathan Allan per aver salvato 6 byte e DJMcMayhem per aver salvato un byte!


1
Salva 6 byte con import time,random as re r.randint.
Jonathan Allan,

@JonathanAllan Non avevo realizzato che potresti importare in quel modo, grazie!
Kade,

Un ciclo for è leggermente più breve:for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)
DJMcMayhem

@DJMcMayhem Whoops, l'ho provato range(1,101)per qualche motivo ..
Kade

In realtà, ho trovato qualcosa di altri 3 byte più corto:i=0;for c in'-\|/'*25:print'\rLoading',c,i,'%',;time.sleep(r.randint(1,750)/1e3);i+=1
DJMcMayhem

6

Lotto, 185 byte

@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%

Purtroppo i tempi sono piuttosto scadenti, ma Batch non ha niente di meglio da usare ping.


Funziona solo su Windows. Dà il batch di FreeCom DOS Loading % Invalid switch. - /aw (mi piacerebbe provarlo in MS DOS se riesco ancora a trovare la mia copia).
Brian Minton,

@BrianMinton: buona fortuna eseguendolo su MS DOS (nessun comando ping)
Joshua

@BrianMinton Richiede CMD.EXE a causa delle sostituzioni di variabili avanzate.
Neil,

@Joshua Bene, almeno non integrato; ciò non accadde fino a Windows 2000.
Neil

6

*> <> (Stella marina), 86 82 byte

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

Provalo qui!

Potrebbe essere possibile giocare a golf di più, ma non vedo nulla di super ovvio. Dorme 100ms, 400ms o 700ms, se questo non è abbastanza casuale, fammi sapere!

Grazie a @TealPelican per avermi salvato 4 byte e reso molto più casuale!

Le maggiori sfide che ho trovato (mentre cercavo ancora di mantenerlo piccolo) erano la casualità e in realtà emettevano "caricamento - 100%" alla fine, invece di uscire semplicemente dalla mia comodità più vicina: p.


1
Ehi, adoro questa versione del linguaggio> <>, apre molte più sfide: D - Ho apportato qualche modifica al tuo codice e non l'ho ridotto di molto, ma ho cambiato i numeri casuali. Collegamento a> <> codice L'unica modifica per renderlo praticabile in *> <> sarebbe cambiare ~ dal collegamento del codice a S per usare il tempo. Questo genera numeri casuali fino a 749 e taglia alcune operazioni di stack in eccesso. PS Mi farebbe piacere se tu potessi fare *> <> interprete online: D
Pellicano verde acqua

1
@Tealpelican, grazie! Adoro le tue modifiche, in particolare il generatore di numeri casuali! Mi piacerebbe anche un interprete online *> <>: p. Non gioco troppo spesso con JS, ma entrambi guarderò a giocare con JS, o forse eseguirò prima l'interprete Go attraverso GopherJS per un vantaggio. :)
redstarcoder

1
Grazie, ci è voluto un po 'per trovare una versione funzionante, ma questo sembra il massimo golf che potrei generare. Terrò d'occhio per questo e se no potrei dilettarmi nel realizzarne uno pitone. Penso ancora che la prima linea possa essere giocata un po 'di più, ma non sono stato in grado di farlo da solo.
Pellicano verde acqua

1
Si spera che @Tealpelican riempia il prurito dell'interprete online, o almeno faccia rotolare la palla. Esaminerò un modo per condividere il codice in seguito. starfish.000webhostapp.com
redstarcoder

1
È stato veloce, eseguendo il programma ora e sembra funzionare bene: D Proverò a dare un'occhiata a questo per alcune sfide questa settimana.
Pellicano verde acqua

5

Perl 6 , 67 byte

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

Allargato:

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

}

4

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

Questo sembra funzionare perfettamente, anche con questa fonte abbozzata di numeri "casuali".

(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 byte

Questo utilizza un elemento già esistente per visualizzare il contenuto rimanente:

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

Alternativa 2 , 95 byte

Se posso presumere che sia aperta una scheda e che lo stai incollando nella console:

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

Invece di mostrare l'HTML, il titolo del documento cambierà.


Grazie a @ user2428118 per aver salvato 2 byte!


È possibile eliminare il ()dopo Dateper salvare due byte.
user2428118

@ user2428118 Non sapevo che funzionasse! Grazie per il suggerimento.
Ismael Miguel,

4

F #, 118 byte

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))}

Per eseguire questo snippet, passalo in Async.Starto Async.RunSynchronously.


Aggiornamento istantaneo a causa di F #
Snowfire,

4

PHP, 90 83 80 78 77 byte

77:

La chiusura ;non è necessaria.

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

78:

Durante la ricerca di un'altra soluzione alternativa per ottenere uno 0 inizialmente senza inizializzare la variabile, ho trovato questo:

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

Modificato di nuovo in eco per vincere qualche byte poiché ho usato solo printf per forzare il formato come int. Incrementando $ i incrementato con 0 ottengo un numero intero valido. Usando le virgolette singole come delimitatore di stringa non è necessario eseguire l'escape della barra rovesciata, liberando un altro byte

80:

Spostare l'incremento di $ i dall'ultima sezione for al prinf mi ha dato altri 3. (Vedi commenti sotto)

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

83:

Rimosso init di una variabile con i loaderstate.

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

90:

Ho provato a rimuovere init di $ i per guadagnare alcuni byte, poiché ho dovuto aggiungerne alcuni per abilitare l'animazione del caricatore. printf aggiunge 2 anziché echo, ma la formattazione di NULL come numero intero risulta in 0.

for($l='-\|/';$i<101;usleep(rand(0,750)*1e3),$i++)printf("\rloading %s %d%%",$l[$i%4],$i);

C'è un errore: la domanda richiede che il ritardo sia compreso tra 1 e 750, inclusi. Hai tra 0 e 750. Inoltre, puoi spostare l'incremento su printf, salvandoti un singolo byte: for(;$i<101;usleep(rand(1,750)*1e3))printf("\rloading %s %d%%",'-\|/'[$i%4],$i++);(82 byte)
Ismael Miguel,

1
@IsmaelMiguel rand () è inclusivo o è dovuto alla moltiplicazione per * 1e3? Ho intenzione di intrufolarmi in quel byte libero.
thisisboris,

La domanda richiede un intervallo casuale tra 1ms e 750ms (incluso). rand(0,750)*1e3restituisce un valore compreso tra 0 (non valido) e 750, che viene moltiplicato per 1000. rand(1,75e4)restituisce un valore compreso tra 1 (non valido) e 750000. Il ritardo deve essere rand(1,750)*1e3, poiché lo si utilizza usleep(). Funziona con microsecondi , che è 1000x più piccolo di un millisecondo.
Ismael Miguel,

Ciò potrebbe portare inavvertitamente vicino alla risposta dell'utente 59178, ma echoè di 3 byte più breve di printf. Potresti voler mettere la versione più recente in cima e usare #titleinvece di **title**. E c'è uno spazio mancante tra il numero e il %.
Tito

@Titus Non posso usare echo qui perché non ho inizializzato il mio $ i, da null a stringa viene valutato a '', tramite printf impongo un numero intero (% d) che risulta in null = 0. #justphpthings
thisisboris

3

Groovy, 113 87 byte

-36 byte grazie alla Zelanda

{p=-1;101.times{print"\rLoading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}}​

2
84 byte, e dovrebbe essere eseguito dalla console Groovy:p=-1;101.times{println"Loading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}
lituania

1
Sebbene il proprietario della domanda non sia stato esplicitamente richiesto, probabilmente desidera che i messaggi di caricamento consecutivi si sovrascrivano l'un l'altro. Non c'è differenza di dimensioni, quindi cambia meglio println"Loading…print"\rLoading…. E rimuovi quella variabile p, usa invece l'implicita.
arte

3

Bash, 162 104 byte

Modifica della risposta di Zachary su una domanda correlata, con enormi miglioramenti da parte del manatwork:

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

Ho dovuto cercare come fare numeri casuali in 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]`
}

1
Bel primo tentativo. Vedi Suggerimenti per giocare a golf in Bash per suggerimenti di miglioramento. Personalmente andrebbe con s='-\|/';for x in {0..100};{ printf "\rloading ${s:x%4:1} $x %%";sleep `printf .%03d $[RANDOM%750+1]`; }BTW, il nostro sito Unix & Linux ha anche una domanda su come fare calcoli interi e float, in bash o altre lingue / framework? .
arte

@manatwork Buoni collegamenti! Non sapevo $[math], usando { }invece di do doneo usando segni di spunta al posto di $(). Sì, ha senso riutilizzare $ x per accedere all'array grafico del caricatore. Inoltre, schiaffeggiare un .davanti al numero per ottenere il decimale per il sonno è piuttosto dolce!
Hydraxan14,

3

C #, 170 149 135 byte

()=>{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} %");   
}

Non garantirò che ogni personaggio in questo sia giusto, per favore correggimi se ci sono errori di compilazione. Ho dovuto digitare tutto sul mio telefono, quindi avrei potuto accidentalmente includere alcuni errori ... ¯ _ (ツ) _ / ¯ Spero che mi perdoniate

Provato sul mio PC, funziona come un fascino e ho persino salvato un intero 20 byte grazie a pmbanka :)


1
È possibile utilizzare \r(ritorno a capo) invece di Console.Clear(). È inoltre possibile incorporare la variabile s per salvare alcuni byte.
pmbanka,

1
È inoltre possibile salvare un byte aggiuntivo sostituendo i<=100fori<101
auhmaan il

for (int i = 0; i <= 100; i++)può essere riscritto come for (int i = 0; i++ <= 100;)Quindi puoi inserire Thread.Sleep nel punto in cui si trovava i ++ e salvare entrambe le parentesi graffe. Taglio di 3 byte in totale
CSharpie

Inoltre OP non ha richiesto un programma in modo da poterlo sostituire static void l()con()=>
CSharpie il

2

C 112 103 byte

Salvataggio di 9 byte grazie a @G. Sliepen. Non molto eccitante, in pratica solo un golf della tua risposta C ++. Inoltre non è una funzione casuale molto eccitante. Ci ho pensato Sleep(c[i%4]), o Sleep(i)ma non sono affatto casuali!

#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);
  }
}

3
Ho paura, ma rand ()%750genera numeri da 0 a 749, dovrai aggiungere 1.
Mukul Kumar,

Passare rand()%750a rand()%751non darà il risultato desiderato. Genererà un valore casuale compreso tra 0 e 750. Nella domanda, il ritardo deve essere compreso tra 1 e 750 (incluso). Secondo tutorialspoint.com/c_standard_library/c_function_rand.htm , la rand()funzione genera numeri compresi tra 0 e (almeno) 32767. Se lo fai 0 % 750, ottieni 0 da allora 0 / <anything> == 0.
Ismael Miguel,

Elimina 9 byte rimuovendo char*c="-\\|/";e usando la stringa letterale direttamente invece della variabile c:printf(...,"-\\|/"[i%4],...)
G. Sliepen,

2

Mathematica, 133 byte

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

Questo verrà eseguito una volta, supponendo che x sia indefinito. Clear@xlo riavvierà.

55 personaggi legati nella verbosità: /


È un intervallo fisso o sarà ripetutamente randomizzato?
Tito

È randomizzato. UpdateInterval:> .75 sarebbe stato corretto
Kelly Lowder il

1
@Titus: credo alle UpdateInterval:>RandomReal@.75chiamate ripetute RandomReal, ma UpdateInterval->RandomReal@.75lo chiamerei solo una volta.
Omar,

2

R - 94 byte

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

Davvero bello sample(750,1) == sample(1:750,1).


2

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

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


2

PHP, 66 79 byte

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

Sfortunatamente ho dovuto assegnare $ i per farlo stampare '0'.
Usa come:

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

Modifiche: grazie a Titus che conferma esattamente ciò che è consentito con Mukul Kumar possiamo salvare 3 byte con un intervallo meno limitato, ma non tutti i 9 byte con un intervallo illimitato. Grazie anche per aver sottolineato che ho dimenticato il personaggio del ciclismo e aver fornito una soluzione semplice per farlo.


1
I requisiti casuali sono che si generano tutti da 1ms a 750ms con una possibilità> 0. Non riesco a vedere che altri valori sono proibiti. rand(1,75e4)salva 3 byte; 1e6puoi salvarne un altro; e nessun parametro salva affatto 9 byte; e non vedo che violi alcuna regola. Ma hai dimenticato di girare il personaggio: +16 ","-\\|/"[$i%4],"invece di -.
Tito

@Titus Non usleep(rand(1,75e4))genererà un intervallo casuale tra 1 microsecondo e 750 millisecondi ? Inoltre, secondo la domanda, l'intervallo deve essere compreso tra 1 e 750, inclusi.
Ismael Miguel,

Vedi gli ultimi commenti sulla domanda: 1 to 75e4è accettabile.
Tito

@Titus Avevo preso in considerazione cambiamenti come quelli ma avevo deciso di seguire ciò che sembrava implicito nella domanda (ritardi interi di millisecondi). Grazie per aver chiesto esattamente cosa era permesso!
user59178

2

Noodel , 40 byte non competitivi

Sto solo tornando indietro attraverso vecchie sfide (come nelle sfide che sono state fatte prima di Noodel ) e competere con Noodel per scoprire dove è debole.

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

Se l'output finale non ha importanza, è possibile salvare 2 byte.

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

Noodel spinge la parte superiore dello stack sullo schermo alla fine del programma, quindi aggiungendo €Ḃciò impedisce che ciò accada.

Provalo:)

Come funziona

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>


Perché ci sono così tanti ¤s?
Kritixi Lithos,

@KritixiLithos Noodel utilizza gli spazi come NOP, quindi per la stampa di uno spazio ¤viene utilizzato :)
tkellehe

1
A proposito, è bello che ci sia uno snippet di stack per questo :)
Kritixi Lithos

Come funziona lo snippet? Lo script importato trova l'elemento con l'id di noodle, quindi traduce codein Javascript?
Carcigenicato il

@Carcigenicato, Sì. Il "parser" è la funzione JavaScriptnoodel che gestisce codecorrettamente. Traduce codein token che sono oggetti JavaScript che vengono concatenati e quindi eseguiti. Il ppcg.min.jscrea la corretta HTML oggetti e traduce l'uscita di quello che viene analizzato nelle HTML oggetti per creare il display. Ogni token viene eseguito passandoci attraverso innescando un evento step che è registrato per aggiornare lo schermo :) Ti aiuta?
tkellehe,

2

C 126 121 byte

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

Versione non golfata:

 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 Non ho letto tra le righe lì, grazie! :)


1
c [] non è casuale ... Ma va in bicicletta ....
Mukul Kumar,

Oppure, in altre parole, non dovresti scegliere un carattere casuale da "\ | / -", dovresti visualizzare /, quindi -, quindi \, quindi |, in un ciclo.
Carcigenicato il

@MukulKumar @ Carcigenicate Aggiornato il codice in modo che faccia quello che le specifiche dicono sui personaggi del ciclismo!
Abel Tom,

1

MATLAB, 108 byte

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

1

Ottava, 122 120 119 108 byte

Ho letto male la sfida e ho creato un caricatore infinito che è stato riavviato a 0 una volta superato 100. Trasformandolo in un caricatore solo una volta:

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

In circolazione a, a=a([2:4,1])l'idea di Flawr era qui . Inoltre, randhai salvato 2 byte saltando le parentesi dopo grazie a MattWH.


Dovrebbe essere .749*rand()+.001? Questo può attendere 751ms. Inoltre è possibile lasciare il ()comando remoto e salvare 2 byte.
MattWH,

1

ForceLang, 250 byte

Non competitiva, richiede funzionalità linguistiche che postdatano la domanda

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

Probabilmente dovrei correggere presto alcuni bug relativi all'analisi letterale delle stringhe.


1

Racchetta 110 byte

(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))))

test:

(f)

Produzione: inserisci qui la descrizione dell'immagine

(Questo file gif mostra una visualizzazione più lenta di quella effettiva)


Cosa c'è che non va alla fine nella gif?
Carcigenicato il

Questo sembra essere un artefatto dal programma di cattura dello schermo.
anche il

1

107 75 Ruby

-32 grazie a manatwork

Normale

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

golfed

101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}

Dato che hai una sola riga di output da sovrascrivere, system'clear'qui è eccessivo. Anche l'uso della variabile separata i. Oh, e calcola dove possibile: 0.750-0.010.749(nota anche che ti manca un decimale in 0,01 - dovrebbe essere 0,001). La risultante 101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}diventa molto simile a Conor O'Brien 's Rubino risposta in Loading ... per sempre ma lo è anche la sfida.
arte

1

Python 3, 149 byte

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))

Simile al caricamento ... Per sempre, ma ho dovuto modificare molto la mia risposta da lì.


1

TI-Basic, 80 byte

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

La casualità viene dal For(loop (E è un token scientifico E) e poiché l'interpretazione di TI-Basic comporta automaticamente anche un sovraccarico. Ricorda che in TI-Basic, le lettere minuscole e alcuni simboli ASCII meno comuni sono due byte ciascuno (quindi, in modo specifico per questo programma, l o a d i n g sub( \ | %sono i token a due byte


1

Clojure, 109 byte

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

Passa sopra un elenco dell'intervallo di numeri compreso tra 0 e 100, compresso con un elenco infinito di "\|/-"ripetizioni per 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)))

1

tcl, 116

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

Giocabile in http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMOXoybnVSOVJEU00


La tua uscita sembra poco ...
Mukul Kumar il

hmm ,,, il mio codice è scomparso! ...
sergiol

Voglio dire che il tuo output è in questo formato "caricamento ... xx%" invece dovrebbe essere come questo "caricamento - xx%" dove '-' varia come spiegato nella domanda.
Mukul Kumar,

@MukulKumar: risolto.
sergiol

1

Java 8, 130 byte

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

Spiegazione:

()->{                           // 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

Uscita gif:

inserisci qui la descrizione dell'immagine


0

Visual Basic, 371 byte

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

Allargato:

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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.