Mache einen Fake Loader wie folgt:
Parameter:
- Zeigen Sie
loading
eines dieser Symbole zyklisch an-\|/
(Leerzeichen) (Prozentzähler von 0-100) und dann a%
. - Der Prozentzähler soll sich bei jeder Änderung der Anzeige um 1 erhöhen.
- Die Zeit, die der Zähler benötigt, um zur nächsten Iteration zu springen, ist zufällig. Jede Art von Zufall ist möglich, solange die Funktion / Methode in der Lage ist, alle zufälligen Ganzzahlen mit einer Wahrscheinlichkeit> 0 im Bereich zu generieren.
1<= ms <=750
Hierbei handeltms
es sich um die Zeit in Millisekunden. - Beginnen Sie bei
loading - 0 %
. - Ende um
loading - 100 %
. - KEIN EINGANG ist erforderlich.
- Reichen Sie ein vollständiges Programm oder eine Funktion oder etwas Ähnliches ein.
Der Code, den ich verwendet habe:
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");
}
}
Gewinner
- der Code mit den wenigsten Bytes gewinnt.
code-golf
ascii-art
kolmogorov-complexity
Mukul Kumar
quelle
quelle
\|/-
) identisch sind, scheint die Antwort insofern unterschiedlich zu sein, als sie nicht unendlich ist und die Erzeugung von Zufallszahlen anstelle einer statischen Ausgabe beinhaltet. Deshalb sage ich, obwohl ich mich anfangs kopiert gefühlt habe, sieht das für mich nicht nach einem Schwachsinn aus.-\|/
in einigen Spielen gesehen habe. Und ich wurde von Konsoleninstallationsprogrammen inspiriert.Antworten:
MATL , 45 Bytes
Beispiellauf im Offline-Compiler:
Oder probieren Sie es bei MATL Online!
Erläuterung
quelle
Powershell,
716865 BytesÄhnlich wie https://codegolf.stackexchange.com/a/101357/59735
3 Bytes gespart, indem du kein Idiot bist (... beim Laden verlassen)
-3 dank VisualMelon
750 -> 751 geändert, um sicherzustellen, dass 750 enthalten ist.
Erläuterung:
Aktualisiertes GIF
quelle
-m
und die Klammern verlieren$_%4
(scheint zumindest auf meiner Box zu funktionieren).()
waren übrig von der anderen Herausforderung, von der ich gerade meinen Code kopiert habe.Python 2,
119113112 BytesIch war ursprünglich mit dem Zufallsbetrag gegangen
random()/.75
, aber der Endpunkt würde nicht enthalten sein. Es gibt keinen großen Unterschied zwischen dieser und der anderen Frage für die unendliche Ladezeit, abgesehen von der Zufälligkeit und der Tatsache, dass sie tatsächlich endet.Danke an Jonathan Allan für das Speichern von 6 Bytes und DJMcMayhem für das Speichern eines Bytes!
quelle
import time,random as r
und 6 Byte speichernr.randint
.for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)
range(1,101)
aus irgendeinem Grund getestet ..i=0;for c in'-\|/'*25:print'\rLoading',c,i,'%',;time.sleep(r.randint(1,750)/1e3);i+=1
Batch, 185 Bytes
Das Timing ist leider ziemlich schlecht, aber Batch hat nichts Besseres zu gebrauchen als
ping
.quelle
Loading % Invalid switch. - /aw
(ich würde es gerne in MS DOS ausprobieren, wenn ich meine Kopie noch finde).*> <> (Seestern),
8682 BytesProbieren Sie es hier aus!
Das kann man vielleicht mehr Golf spielen, aber ich sehe nichts sehr offensichtliches. Es schläft 100 ms, 400 ms oder 700 ms, wenn dies nicht zufällig genug ist, lassen Sie es mich wissen!Vielen Dank an @TealPelican, dass du mir 4 Bytes gespart und es viel zufälliger gemacht hast!
Die größten Herausforderungen, die ich gefunden habe (während ich immer noch versucht habe, es klein zu halten), waren Zufälligkeiten und die Ausgabe von "Laden - 100%" am Ende, anstatt nur zu beenden, wenn es mir am besten gefällt: p.
quelle
Perl 6 , 67 Bytes
Erweitert:
quelle
Javascript (ES6),
128118116115112110109 BytesDies scheint auch mit dieser skizzenhaften Quelle von "Zufallszahlen" einwandfrei zu funktionieren.
Alternative 1 , Javascript + HTML, 16 + 84 Bytes
Dieser verwendet ein bereits vorhandenes Element, um den verbleibenden Inhalt anzuzeigen:
Alternative 2 , 95 Bytes
Wenn ich davon ausgehen kann, dass eine Registerkarte geöffnet ist und Sie diese in die Konsole einfügen:
Anstatt den HTML-Code anzuzeigen, ändert sich der Titel des Dokuments.
Vielen Dank an @ user2428118 für das Speichern von 2 Bytes!
quelle
()
AfterDate
löschen, um zwei Bytes zu sparen.F #, 118 Bytes
Um dieses Snippet auszuführen, übergeben Sie es an
Async.Start
oderAsync.RunSynchronously
.quelle
PHP,
9083807877Bytes77
Das Schließen
;
ist nicht erforderlich.78
Während ich nach einer anderen Problemumgehung suchte, um zunächst eine 0 zu erhalten, ohne die Variable zu initialisieren, kam ich zu folgendem Ergebnis:
Zurück zu Echo geändert, um ein paar Bytes zu gewinnen, da ich nur printf verwendet habe, um das Formatieren als int zu erzwingen. Durch Inkrementieren des inkrementierten $ i mit 0 erhalte ich eine gültige Ganzzahl. Durch die Verwendung von einfachen Anführungszeichen als Zeichenfolgentrennzeichen muss der Backslash nicht maskiert werden, wodurch ein weiteres Byte freigegeben wird
80
Das Verschieben des Inkrements von $ i vom letzten For-Abschnitt zum Prinf brachte mir weitere 3 Punkte. (Siehe Kommentare unten)
83
Init einer Variablen mit den Ladezuständen entfernt.
90
Ich habe versucht, das Init von $ i zu entfernen, um einige Bytes zu erhalten, da ich einige hinzufügen musste, um die Loader-Animation zu aktivieren. printf addiert 2 im Gegensatz zu echo, aber das Formatieren von NULL als Ganzzahl ergibt 0.
quelle
printf
, um ein einziges Byte zu sparen:for(;$i<101;usleep(rand(1,750)*1e3))printf("\rloading %s %d%%",'-\|/'[$i%4],$i++);
(82 Bytes)rand(0,750)*1e3
gibt einen Wert zwischen 0 (ungültig) und 750 zurück, der mit 1000 multipliziert wird.rand(1,75e4)
gibt einen Wert zwischen 1 (ungültig) und 750000 zurück. Die Verzögerung muss seinrand(1,750)*1e3
, da Sie verwendenusleep()
. Es arbeitet mit Mikrosekunden , die 1000x kleiner als eine Millisekunde sind.echo
ist jedoch 3 Byte kürzer alsprintf
. Möglicherweise möchten Sie die neueste Version an die erste Stelle setzen und#title
stattdessen verwenden**title**
. Und zwischen der Zahl und dem fehlt ein Leerzeichen%
.Groovy,
11387 Bytes-36 bytes dank lealand
quelle
p=-1;101.times{println"Loading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}
println"Loading…
→print"\rLoading…
. Und entfernen Sie diese Variable p, und verwenden Sie stattdessen die implizite.Bash,
162104 BytesÄnderung von Zacharys Antwort auf eine verwandte Frage mit massiven Verbesserungen durch Handarbeit:
Ich musste nachsehen, wie man Zufallszahlen in Bash macht.
Ungolfed / Erklärt
quelle
s='-\|/';for x in {0..100};{ printf "\rloading ${s:x%4:1} $x %%";sleep `printf .%03d $[RANDOM%750+1]`; }
BTW gehen , unsere Mit-Site Unix & Linux hat auch eine Frage darüber, wie man Integer & Float-Berechnungen in Bash oder anderen Sprachen / Frameworks durchführt. .$[math]
, wie man{ }
stattdessendo done
Back Ticks verwendet oder verwendet$()
. Ja, die Wiederverwendung von $ x für den Zugriff auf das Loader-Grafikarray ist sinnvoll. Außerdem.
ist es ziemlich süß , ein vor die Zahl zu klopfen, um die Dezimalzahl für den Schlaf zu erhalten!C #,
170149135 BytesUngolfed:
Ich kann nicht garantieren, dass alle Zeichen in diesem Artikel richtig sind. Bitte korrigieren Sie mich, falls Kompilierungsfehler auftreten. Ich musste das Ganze auf meinem Handy tippen, damit ich möglicherweise versehentlich einige Fehler eingefügt habe ... ¯_ (ツ) _ / ¯ Ich hoffe, ihr verzeiht mir dasGetestet auf meinem PC, funktioniert wie ein Zauber und ich habe dank pmbanka sogar ganze 20 Bytes gespart :)
quelle
\r
(Wagenrücklauf) anstelle von verwendenConsole.Clear()
. Sie können die Variable auch inline setzen, um einige Bytes zu speichern.i<=100
fori<101
for (int i = 0; i <= 100; i++)
kann umgeschrieben werden alsfor (int i = 0; i++ <= 100;)
Dann können Sie den Thread.Sleep an die Stelle setzen, an der i ++ war und beide geschweiften Klammern speichern. Schneiden insgesamt 3 Bytesstatic void l()
mit()=>
C
112103 Bytes9 Bytes dank @G gespart. Sliepen. Nicht sehr aufregend, nur ein Golf Ihrer C ++ Antwort im Grunde. Auch keine sehr aufregende Zufallsfunktion. Ich habe darüber nachgedacht
Sleep(c[i%4])
,Sleep(i)
aber sie sind überhaupt nicht zufällig!Ungolfed:
quelle
rand ()%750
generiert Zahlen von 0-749 müssen Sie hinzufügen 1.rand()%750
aufrand()%751
ändern, erhalten Sie nicht das gewünschte Ergebnis. Es wird einen zufälligen Wert zwischen erzeugt 0 und 750. In der Frage, die Verzögerung muss zwischen seiner 1 und 750 (einschließlich). Laut tutorialspoint.com/c_standard_library/c_function_rand.htmrand()
generiert die Funktion Zahlen zwischen 0 und (mindestens) 32767. Wenn Sie dies tun0 % 750
, erhalten Sie 0 seit0 / <anything> == 0
.char*c="-\\|/";
indem Sie diec
printf(...,"-\\|/"[i%4],...)
Mathematica, 133 Bytes
Dies wird einmal ausgeführt, vorausgesetzt, x ist undefiniert.
Clear@x
wird es neu starten.55 Zeichen in Ausführlichkeit gebunden: /
quelle
UpdateInterval:>[email protected]
immer wieder ruft anRandomReal
,UpdateInterval->[email protected]
würde es aber nur einmal aufrufen.R - 94 Bytes
Wirklich schön das
sample(750,1) == sample(1:750,1)
.quelle
HTML + JS (ES6), 16 + 87 = 103 Byte
quelle
PHP,
6679 BytesLeider musste ich $ i zuweisen, damit es '0' druckt.
Verwenden Sie wie:
Änderungen: Dank Titus, der genau bestätigt, was mit Mukul Kumar erlaubt ist, können wir 3 Bytes mit einem weniger eingeschränkten Bereich speichern, aber nicht alle 9 Bytes mit einem uneingeschränkten Bereich. Vielen Dank auch für den Hinweis, dass ich den Radsportcharakter vergessen und eine einfache Lösung dafür gefunden habe.
quelle
rand(1,75e4)
Spart 3 Bytes;1e6
kann einen anderen retten; und überhaupt keine Parameter speichern 9 Bytes zusammen; und ich sehe nicht, dass das gegen irgendeine regel verstößt. Aber du hast vergessen, den Charakter zu wechseln: +16 für","-\\|/"[$i%4],"
statt-
.usleep(rand(1,75e4))
Erzeugt kein zufälliges Intervall zwischen 1 Mikrosekunde und 750 Millisekunden ? Entsprechend der Frage muss das Intervall auch zwischen 1 und einschließlich 750 liegen.1 to 75e4
ist akzeptabel.Noodel , nicht konkurrierende 40 Bytes
Ich gehe einfach durch alte Herausforderungen (wie bei Herausforderungen, die vor Noodel erstellt wurden ) und konkurriere mit Noodel, um herauszufinden, wo es schwach ist.
Wenn die endgültige Ausgabe keine Rolle spielt, können 2 Bytes gespart werden.
Noodel schiebt die Oberseite des Stapels am Ende des Programms auf den Bildschirm, damit dies durch Hinzufügen
€Ḃ
von verhindert wird.Versuch es:)
Wie es funktioniert
quelle
¤
s?¤
verwendet wird :)noodle
und übersetzt es danncode
in Javascript?noodel
die dascode
richtig behandelt. Es übersetzt diecode
in Token, die JavaScript- Objekte sind, die verkettet und dann ausgeführt werden. Dasppcg.min.js
erstellt die richtigen HTML- Objekte und übersetzt die Ausgabe dessen, was in die HTML- Objekte geparst wird , um die Anzeige zu erstellen. Jedes Token wird ausgeführt, indem es durchlaufen wird und ein Schrittereignis ausgelöst wird, das registriert wird, um den Bildschirm zu aktualisieren :) Hilft das?C
126121 BytesUngolfed-Version:
@Carcigenicate @ Mukul Kumar Hab da nicht zwischen den Zeilen gelesen, Danke! :)
quelle
MATLAB, 108 Bytes
quelle
Oktave,
122120119108 BytesIch habe die Herausforderung falsch verstanden und einen unendlichen Loader erstellt, der bei 0 neu gestartet wurde, sobald er 100 überschritten hat.
Im Umlauf
a
,a=a([2:4,1])
war Flawrs Idee hier . Außerdem konntenrand
dank MattWH 2 Bytes eingespart werden, indem die Klammern übersprungen wurden.quelle
.749*rand()+.001
? Dies kann 751ms warten. Sie können auch()
off rand lassen und 2 Bytes sparen.ForceLang, 250 Byte
Nicht konkurrierend, erfordert Sprachfunktionen, die die Frage nachdatieren
Ich sollte wahrscheinlich bald einige Fehler im Zusammenhang mit dem Parsing von String-Literalen beheben.
quelle
Schläger 110 Bytes
Ungolfed:
Testen:
Ausgabe:
(Diese GIF-Datei zeigt eine langsamere Anzeige als die tatsächliche)
quelle
10775 Ruby-32 dank manatwork
Normal
Golf gespielt
quelle
system'clear'
ist dies ein Overkill. Auch die Verwendung der separaten Variablen i. Oh, und wenn möglich vorberechnen:0.750-0.01
→0.749
(Beachten Sie auch, dass Sie bei 0,01 keine Dezimalstelle haben - sollte 0,001 sein). Die resultierende101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}
wird sehr ähnlich wie Conor O'Brien ‚s Ruby - Antwort in Loading ... Für immer , aber so ist die Herausforderung.Python 3, 149 Bytes
Ähnlich wie beim Laden ... Für immer, aber ich musste meine Antwort von dort aus sehr viel bearbeiten.
quelle
TI-Basic, 80 Bytes
Die Zufälligkeit kommt von der
For(
Schleife (E ist wissenschaftliches E-Token) und da TI-Basic interpretiert wird, entsteht automatisch ein gewisser Overhead. Denken Sie daran, dass in TI-Basic Kleinbuchstaben und einige weniger gebräuchliche ASCII-Symbole jeweils zwei Bytes umfassen (speziell für dieses Programml o a d i n g sub( \ | %
sind dies die Zwei-Byte-Token)quelle
Clojure, 109 Bytes
Durchläuft eine Liste mit Zahlenbereichen von 0 bis 100 und enthält eine unendliche Liste von
"\|/-"
Wiederholungen für immer.quelle
tcl, 116
Spielbar unter http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMOXoybnVSOVJEU00
quelle
Java 8, 130 Bytes
Erläuterung:
Ausgangsgif:
quelle
Visual Basic, 371 Bytes
Erweitert:
quelle