Jadikan aku loader palsu

29

Buat loader palsu seperti ini:

Parameter:

  • Peragakan loading(spasi) salah satunya secara siklikal -\|/(spasi) (penghitung persentase dari 0-100) lalu a %.
  • Penghitung persentase seharusnya bertambah 1 setiap kali tampilan berubah.
  • Waktu yang diambil oleh counter untuk melompat ke iterasi berikutnya adalah acak. Segala jenis acak akan dilakukan selama fungsi / metode ini mampu menghasilkan semua bilangan bulat acak yang memiliki probabilitas> 0 dalam kisaran di 1<= ms <=750sini msadalah waktu dalam milidetik.
  • Mulai di loading - 0 %.
  • Berakhir pada loading - 100 %.
  • TIDAK diperlukan INPUT.
  • menyerahkan penuh program atau fungsi atau apa pun yang serupa.

Kode yang saya gunakan:

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

Pemenang

  • kode dengan paling tidak byte menang.
Mukul Kumar
sumber
11
Terkait
DJMcMayhem
1
Saya tidak berpikir ini adalah duplikat. Pertanyaan ini tidak dapat diimplementasikan di> <>, tetapi bisa di *> <> Saya cukup menyukainya.
redstarcoder
1
@Mego Pertanyaannya bukan duplikat. Outputnya sedikit berbeda, runtime benar - benar berbeda dan output membutuhkan waktu acak alih-alih penundaan tetap 250 ms. Jawaban pada satu pertanyaan tidak dapat digunakan pada yang lain tanpa modifikasi berat. Tolong, baca pertanyaannya.
Ismael Miguel
8
Sebagai penulis tantangan lain saya akan ikut serta dalam debat penipuan. Meskipun karakter bersepeda ( \|/-) adalah sama, jawabannya tampaknya berbeda karena tidak terbatas dan melibatkan generasi bilangan acak, bukan keluaran statis. Karena itu saya akan mengatakan, meskipun pada awalnya saya merasa disalin, ini tidak terlihat seperti penipuan bagi saya.
FlipTack
@ flp.tkc ide ini berasal dari banyak tempat yang digabungkan seperti yang saya lihat -\|/di beberapa game. Dan saya terinspirasi dari program instalasi konsol.
Mukul Kumar

Jawaban:

6

MATL , 45 byte

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

Contoh dijalankan di kompiler offline:

masukkan deskripsi gambar di sini

Atau coba di MATL Online!

Penjelasan

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
sumber
16

Powershell, 71 68 65 Bytes

Mirip dengan https://codegolf.stackexchange.com/a/101357/59735

Disimpan 3 byte dengan tidak menjadi idiot (meninggalkan ... saat memuat)

-3 Terima kasih kepada VisualMelon

berubah 750 -> 751 untuk memastikan 750 disertakan.

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

Penjelasan:

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
}

Diperbarui gif

masukkan deskripsi gambar di sini

colsw
sumber
hasil Anda tidak persis sama, silakan lihat gif saya dan perbaiki milik Anda
Mukul Kumar
Saya pikir Anda dapat menjatuhkan ruang setelah -m, dan kehilangan tanda kurung di sekitar $_%4(tampaknya bekerja di kotak saya setidaknya).
VisualMelon
@VisualMelon terima kasih, ()yang tersisa dari tantangan lain saya langsung menyalin kode saya dari.
colsw
8

Python 2, 119 113 112 Bytes

Saya awalnya pergi dengan jumlah acak random()/.75, namun titik akhir tidak akan disertakan. Tidak ada banyak perbedaan dari ini dengan pertanyaan lain untuk waktu buka tanpa batas kecuali untuk keacakan dan fakta bahwa itu benar-benar berakhir.

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

terima kasih kepada Jonathan Allan untuk menghemat 6 byte, dan DJMcMayhem karena telah menghemat satu byte!

Kade
sumber
1
Simpan 6 byte dengan import time,random as rdan r.randint.
Jonathan Allan
@ JonathanAllan Tidak sadar Anda bisa mengimpor seperti itu, terima kasih!
Kade
A for loop sedikit lebih pendek:for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)
DJMcMayhem
@DJMcMayhem Whoops, saya telah mengujinya dengan range(1,101)beberapa alasan ..
Kade
Sebenarnya, saya menemukan sesuatu yang lebih pendek 3 byte:i=0;for c in'-\|/'*25:print'\rLoading',c,i,'%',;time.sleep(r.randint(1,750)/1e3);i+=1
DJMcMayhem
6

Batch, 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%

Sayangnya, pengaturan waktunya cukup buruk, tetapi Batch tidak memiliki yang lebih baik untuk digunakan daripada ping.

Neil
sumber
Ini hanya berfungsi pada Windows. Bets FreeCom DOS memberikan Loading % Invalid switch. - /aw (Saya ingin mencobanya di MS DOS jika saya masih dapat menemukan salinan saya).
Brian Minton
@BrianMinton: Semoga berhasil menjalankannya di MS DOS (tanpa perintah ping)
Joshua
@BrianMinton Membutuhkan CMD.EXE karena substitusi variabel lanjutan.
Neil
@ Yosua Yah, setidaknya tidak dibangun di; itu tidak terjadi sampai Windows 2000.
Neil
6

*> <> (Bintang laut), 86 82 byte

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

Coba di sini!

Ini mungkin bisa golf lebih banyak, tapi saya tidak melihat sesuatu yang sangat jelas. Ini tidur 100ms, 400ms, atau 700ms, jika ini tidak cukup acak, beri tahu saya!

Terima kasih kepada @TealPelican karena telah menyelamatkan saya 4 byte dan membuatnya lebih acak!

Tantangan terbesar yang saya temukan (walaupun masih berusaha tetap kecil) adalah keacakan, dan sebenarnya menghasilkan "memuat - 100%" pada akhirnya, alih-alih hanya keluar pada kenyamanan terdekat saya: hal.

redstarcoder
sumber
1
Hai, saya suka ini mengambil bahasa> <>, ini membuka lebih banyak tantangan: D - Saya sudah sedikit mengubah kode Anda dan saya tidak menguranginya banyak tetapi mengubah angka acak. Tautan ke>> kode> Satu-satunya perubahan untuk membuat ini layak di *> <> akan mengubah ~ dari tautan kode ke S untuk menggunakan waktu. Ini menghasilkan angka acak hingga 749 dan memotong beberapa operasi tumpukan berlebih. PS Saya akan senang jika Anda bisa membuat *> <> juru bahasa online: D
Teal pelican
1
@Tealpelican, terima kasih! Saya suka perubahan Anda, terutama generator nomor acak! Saya juga suka seorang penerjemah online *> <>: p. Saya tidak terlalu sering bermain-main dengan JS, tetapi saya akan melihat bermain dengan JS, atau mungkin menjalankan penerjemah Go melalui GopherJS terlebih dahulu sebagai permulaan. :)
redstarcoder
1
Terima kasih, butuh beberapa saat untuk benar-benar menghasilkan versi yang berfungsi, tetapi ini sepertinya golf yang paling bisa saya hasilkan. Saya akan menjaga mata saya keluar untuk itu dan jika tidak mungkin mencoba membuat python. Saya masih berpikir baris pertama bisa bermain golf sedikit lebih tetapi saya belum bisa melakukannya sendiri.
Teal pelican
1
@Tealpelican mudah-mudahan ini mengisi gatal juru bahasa online, atau setidaknya membuat bola bergulir. Saya akan mencari cara untuk membagikan kode nanti. starfish.000webhostapp.com
redstarcoder
1
Itu cepat, hanya menjalankan program di dalamnya sekarang dan tampaknya berfungsi dengan baik: D Saya akan mencoba menggunakan ini untuk beberapa tantangan minggu ini.
Teal pelican
5

Perl 6 , 67 byte

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

Diperluas:

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
sumber
4

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

Ini tampaknya bekerja dengan baik, bahkan dengan sumber angka "acak" yang samar ini.

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


Alternatif 1 , Javascript + HTML, 16 + 84 byte

Yang ini menggunakan elemen yang sudah ada untuk menampilkan konten yang tersisa:

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

Alternatif 2 , 95 byte

Jika saya dapat menganggap tab dibuka dan Anda menempelkan ini ke konsol:

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

Alih-alih menampilkan HTML, judul dokumen akan berubah.


Terima kasih kepada @ user2428118 karena telah menghemat 2 byte!

Ismael Miguel
sumber
Anda dapat menjatuhkan ()setelah Dateuntuk menyimpan dua byte.
user2428118
@ user2428118 Saya tidak tahu itu berhasil! Terima kasih atas tipnya.
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))}

Untuk menjalankan cuplikan ini, berikan ke Async.Startatau Async.RunSynchronously.

pmbanka
sumber
Suara positif instan karena F #
Snowfire
4

PHP, 90 83 80 78 77 Bytes

77:

Penutupan ;tidak diperlukan.

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

78:

Sambil mencari solusi lain untuk mendapatkan 0 awalnya tanpa menginisialisasi variabel saya datang dengan ini:

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

Diubah kembali ke echo untuk memenangkan beberapa byte karena saya hanya menggunakan printf untuk memaksa-format sebagai int. Dengan menambah $ i yang bertambah dengan 0, saya mendapatkan bilangan bulat yang valid. Dengan menggunakan tanda kutip tunggal sebagai pembatas string, garis miring terbalik tidak perlu diloloskan, sehingga byte lainnya dibebaskan

80:

Memindahkan selisih $ i dari untuk-bagian terakhir ke PRIN memberi saya 3 lagi. (Lihat komentar di bawah)

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

83:

Init yang dihapus dari variabel dengan loaderstate.

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

90:

Saya mencoba menghapus init dari $ i untuk mendapatkan beberapa byte, karena saya harus menambahkan beberapa untuk mengaktifkan animasi loader. printf menambahkan 2 sebagai lawan gema, tetapi memformat NULL sebagai bilangan bulat menghasilkan 0.

for($l='-\|/';$i<101;usleep(rand(0,750)*1e3),$i++)printf("\rloading %s %d%%",$l[$i%4],$i);
thisisboris
sumber
Ada satu kesalahan: Pertanyaannya mengharuskan penundaan antara 1 dan 750, termasuk. Anda memiliki antara 0 dan 750. Selain itu, Anda dapat memindahkan kenaikan ke printf, menghemat satu byte: for(;$i<101;usleep(rand(1,750)*1e3))printf("\rloading %s %d%%",'-\|/'[$i%4],$i++);(82 byte)
Ismael Miguel
1
@IsmaelMiguel rand () inklusif , atau ini karena perkalian dengan * 1e3? Saya akan menyelinap di byte gratis itu.
thisisboris
Pertanyaannya membutuhkan interval acak antara 1 ms dan 750ms (inklusif). rand(0,750)*1e3mengembalikan nilai antara 0 (tidak valid) dan 750, yang dikalikan dengan 1000. rand(1,75e4)mengembalikan nilai antara 1 (tidak valid) dan 750000. Penundaan harus rand(1,750)*1e3, karena Anda gunakan usleep(). Ini bekerja dengan mikrodetik , yang 1000x lebih kecil dari milidetik.
Ismael Miguel
Ini mungkin membawa Anda nyaman dekat dengan jawaban user59178, tetapi echolebih pendek 3 byte dari printf. Anda mungkin ingin meletakkan versi terbaru ke atas dan menggunakannya #titlesebagai gantinya **title**. Dan ada ruang yang hilang antara angka dan %.
Titus
@Itus saya tidak bisa menggunakan gema di sini karena saya tidak menginisialisasi $ i saya, null to string mengevaluasi ke '', melalui printf I force integer (% d) menghasilkan null = 0. #justphpthings
thisisboris
3

Groovy, 113 87 byte

-36 byte berkat lealand

{p=-1;101.times{print"\rLoading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}}​
Guci Gurita Ajaib
sumber
2
84 byte, dan harus dijalankan dari konsol Groovy:p=-1;101.times{println"Loading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}
lealand
1
Meskipun pemilik pertanyaan tidak secara eksplisit meminta, ia mungkin ingin agar pesan yang dimuat berturut-turut saling menimpa. Tidak ada perbedaan ukuran, jadi ubah lebih baik println"Loading…print"\rLoading…. Dan hapus p variabel itu, gunakan yang implisit.
manatwork
3

Bash, 162 104 byte

Modifikasi jawaban Zachary pada pertanyaan terkait, dengan peningkatan besar-besaran oleh manatwork:

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

Saya harus mencari cara melakukan angka acak di bash.

Tidak Dijelaskan / Dijelaskan

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
sumber
1
Usaha pertama yang bagus. Lihat Tips untuk bermain golf di Bash untuk tips peningkatan. Secara pribadi akan menggunakan s='-\|/';for x in {0..100};{ printf "\rloading ${s:x%4:1} $x %%";sleep `printf .%03d $[RANDOM%750+1]`; }BTW, rekan situs kami Unix & Linux juga memiliki pertanyaan tentang Bagaimana melakukan perhitungan integer & float, dalam bash atau bahasa / kerangka kerja lainnya? .
manatwork
@manatwork Tautan yang bagus! Saya tidak tahu tentang $[math], menggunakan { }bukan do done, atau menggunakan kembali kutu $(). Ya, menggunakan kembali $ x untuk mengakses array grafik loader masuk akal. Juga, menampar .di depan nomor untuk mendapatkan desimal untuk tidur cukup manis!
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} %");};

Tidak Terkumpul:

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

Saya tidak akan menjamin bahwa setiap karakter dalam hal ini benar, perbaiki saya jika ada kesalahan kompilasi. Saya harus mengetik semuanya di ponsel saya jadi saya mungkin tidak sengaja memasukkan beberapa kesalahan ... ¯_ (ツ) _ / ¯ Saya harap kalian memaafkan saya bahwa

Mengujinya di PC saya, berfungsi seperti pesona dan saya bahkan menyimpan 20 byte penuh berkat pmbanka :)

Snowfire
sumber
1
Anda dapat menggunakan \r(carriage return) sebagai ganti Console.Clear(). Anda juga dapat memasukkan variabel inline untuk menyimpan beberapa byte.
pmbanka
1
Anda juga dapat menyimpan byte tambahan dengan mengganti i<=100fori<101
auhmaan
for (int i = 0; i <= 100; i++)dapat ditulis ulang sebagai for (int i = 0; i++ <= 100;)Lalu Anda dapat menempatkan Thread. Tidur di tempat di mana i ++ berada dan menyimpan kedua kurung keriting. Memotong total 3 byte
CSharpie
OP juga tidak meminta Programm sehingga Anda dapat menggantinya static void l()dengan()=>
CSharpie
2

C 112 103 byte

Disimpan 9 byte berkat @G. Sliepen. Tidak terlalu menarik, pada dasarnya hanya golf dari C ++ yang Anda jawab. Juga bukan fungsi acak yang sangat menarik. Saya berpikir tentang Sleep(c[i%4]), atau Sleep(i)tetapi mereka tidak acak sama sekali!

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

Tidak Terkumpul:

#include <windows.h>
int i;
void f() {
  for(;i<101;) {
    printf("\rloading %c %d %%", "-\\|/"[i%4], i++);
    Sleep(rand()%750+1);
  }
}
nmjcman101
sumber
3
Saya takut tetapi rand ()%750menghasilkan angka dari 0-749 Anda perlu menambahkan 1.
Mukul Kumar
Mengubah rand()%750ke rand()%751tidak akan memberikan hasil yang Anda inginkan. Ini akan menghasilkan nilai acak antara 0 dan 750. Dalam pertanyaan, penundaan harus antara 1 dan 750 (inklusif). Menurut tutorialspoint.com/c_standard_library/c_function_rand.htm , rand()fungsi menghasilkan angka antara 0 dan (setidaknya) 32767. Jika ya 0 % 750, Anda mendapatkan 0 sejak 0 / <anything> == 0.
Ismael Miguel
Shave off 9 byte dengan menghapus char*c="-\\|/";dan menggunakan string literal secara langsung, bukan variabel 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:>{}]

Ini akan berjalan sekali, dengan anggapan x tidak terdefinisi. Clear@xakan memulai kembali.

55 karakter terikat dalam verbositas: /

Kelly Lowder
sumber
Apakah itu interval tetap atau akan berulang kali diacak?
Titus
Ini acak. UpdateInterval:> .75 akan diperbaiki
Kelly Lowder
1
@Itus: Saya percaya UpdateInterval:>[email protected]panggilan berulang kali RandomReal, tetapi UpdateInterval->[email protected]akan menyebutnya hanya sekali.
Omar
2

R - 94 byte

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

Sangat bagus sample(750,1) == sample(1:750,1).

bouncyball
sumber
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>

Darrylyeo
sumber
2

PHP, 66 79 byte

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

Sayangnya saya harus menetapkan $ i untuk mendapatkannya untuk mencetak '0'.
Gunakan seperti:

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

Suntingan: terima kasih kepada Titus yang mengonfirmasi dengan tepat apa yang diizinkan dengan Mukul Kumar kita dapat menyimpan 3 byte dengan rentang yang kurang terbatas, tetapi tidak semua 9 byte dengan rentang yang tidak dibatasi. Terima kasih juga untuk menunjukkan bahwa saya lupa karakter bersepeda dan memberikan solusi sederhana untuk melakukannya.

pengguna59178
sumber
1
Persyaratan acak adalah Anda menghasilkan semua 1ms hingga 750ms dengan kemungkinan> 0. Saya tidak bisa melihat bahwa nilai-nilai lain dilarang. rand(1,75e4)menghemat 3 byte; 1e6dapat menyimpan yang lain; dan tidak ada parameter sama sekali yang menyimpan 9 byte sama sekali; dan saya tidak melihat itu melanggar aturan apa pun. Tetapi Anda lupa untuk menggilir karakter: +16 sebagai ","-\\|/"[$i%4],"ganti -.
Titus
@Titus tidak akan usleep(rand(1,75e4))menghasilkan interval acak antara 1 mikrodetik dan 750 milidetik ? Juga, menurut pertanyaan, interval harus antara 1 dan 750, inklusif.
Ismael Miguel
Lihat komentar terbaru pada pertanyaan: 1 to 75e4dapat diterima.
Titus
@Itus saya telah mempertimbangkan perubahan seperti itu tetapi memutuskan untuk pergi dengan apa yang tampaknya tersirat oleh pertanyaan (bilangan bulat milidetik). Terima kasih telah menanyakan apa yang diizinkan!
user59178
2

Noodel , 40 byte tidak bersaing

Kembali ke tantangan lama (seperti tantangan yang dibuat sebelum Noodel ) dan bersaing dengan Noodel untuk menemukan di mana kelemahannya.

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

Jika hasil akhir tidak masalah, maka dapat menghemat 2 byte.

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

Noodel mendorong bagian atas tumpukan ke layar di akhir program dengan menambahkan€Ḃ mencegah hal itu terjadi.

Cobalah:)

Bagaimana itu bekerja

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
sumber
Mengapa ada begitu banyak ¤?
Kritixi Lithos
@KritixiLithos Noodel menggunakan spasi sebagai NOP sehingga untuk mencetak spasi ¤digunakan :)
tkellehe
1
Btw, senang ada potongan stack untuk ini :)
Kritixi Lithos
Bagaimana cara kerja cuplikan? Apakah skrip yang diimpor menemukan elemen dengan id noodle, lalu menerjemahkannya codeke Javascript?
Carcigenicate
@Carcigenicate, Ya. The "parser" adalah fungsi JavaScriptnoodel yang menangani dengan codebenar. Ini menerjemahkan codetoken menjadi objek JavaScript yang dirantai bersama kemudian dieksekusi. The ppcg.min.jsmenciptakan objek HTML yang tepat dan menerjemahkan output dari apa yang diuraikan ke dalam objek HTML untuk membuat tampilan. Setiap token dieksekusi dengan melangkah melalui mereka memicu acara langkah yang terdaftar untuk memperbarui layar :) Apakah itu membantu?
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));}

Versi tidak disatukan:

 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 Tidak membaca yang tersirat di sana, Terima kasih! :)

Abel Tom
sumber
1
c [] tidak acak ... Tapi bersepeda ...
Mukul Kumar
Atau, dengan kata lain, Anda tidak seharusnya memilih karakter acak dari "\ | / -", Anda seharusnya menampilkan /, lalu -, lalu \, lalu |, dalam satu siklus.
Carcigenicate
@MukulKumar @ Carcigenicate Memperbarui kode sehingga dapat melakukan apa yang dikatakan oleh spek tentang karakter bersepeda!
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
MattWH
sumber
1

Oktaf, 122 120 119 108 byte

Saya salah membaca tantangan dan membuat loader tanpa batas yang dimulai kembali pada 0 setelah lulus 100. Membuatnya menjadi satu-satunya loader saja:

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

Beredar a, a=a([2:4,1])adalah ide cacat di sini . Juga, menyimpan 2 byte dengan melewatkan tanda kurung setelah randterima kasih kepada MattWH.

Stewie Griffin
sumber
Haruskah begitu .749*rand()+.001? Ini bisa menunggu 751ms. Anda juga dapat meninggalkan ()rand off dan menyimpan 2 byte.
MattWH
1

ForceLang, 250 byte

Noncompeting, membutuhkan fitur bahasa yang mengunggah pertanyaan

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

Saya mungkin harus memperbaiki beberapa bug yang terkait dengan string literar parsing segera.

SuperJedi224
sumber
1

Racket 110 byte

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

Tidak Terkumpul:

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

Pengujian:

(f)

Keluaran: masukkan deskripsi gambar di sini

(File gif ini menampilkan tampilan lebih lambat dari yang sebenarnya)

juga
sumber
Ada apa dengan barang di akhir gif?
Carcigenicate
Ini sepertinya merupakan artefak dari program screen capture.
rnso
1

107 75 Ruby

Terima kasih atas manatwork

Normal

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

Golf

101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}
Tom Lazar
sumber
Mengingat Anda memiliki satu baris output untuk ditimpa, system'clear'itu berlebihan di sini. Juga penggunaan variabel terpisah i. Oh, dan hitung ulang jika memungkinkan: 0.750-0.010.749(perhatikan juga bahwa Anda kekurangan satu tempat desimal 0,01 - seharusnya 0,001). Hasilnya 101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}menjadi sangat mirip dengan Conor O'Brien 's Ruby jawabannya di Loading ... Selamanya tapi jadi tantangan.
manatwork
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))

Mirip dengan Memuat ... Selamanya, tetapi saya memang harus mengedit jawaban saya dari sana.

python-b5
sumber
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

Keacakan berasal dari For( loop (E adalah token E ilmiah) dan karena TI-Basic ditafsirkan ada juga secara otomatis beberapa overhead. Ingat bahwa dalam TI-Basic, huruf kecil dan beberapa simbol ASCII yang kurang umum masing-masing adalah dua byte (jadi khusus untuk program ini, l o a d i n g sub( \ | %adalah token dua-byte

Timtech
sumber
1

Clojure, 109 byte

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

Ulangi daftar rentang angka dari 0 hingga 100, ritsleting dengan daftar "\|/-"berulang berulang selamanya.

; (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)))
Carcigenicate
sumber
1

tcl, 116

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

Dapat diputar di http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMOXoybnVSOVJEU00

sergiol
sumber
Output Anda sepertinya tidak banyak ...
Mukul Kumar
hmm ,,, kode saya hilang! ...
sergiol
Maksud saya, output Anda dalam format ini "memuat ... xx%" sebaliknya harus seperti ini "memuat - xx%" di mana '-' bervariasi seperti yang dijelaskan dalam pertanyaan.
Mukul Kumar
@MukulKumar: Diperbaiki.
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+++" %");}

Penjelasan:

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

Output gif:

masukkan deskripsi gambar di sini

Kevin Cruijssen
sumber
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

Diperluas:

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
sumber