Plik MS-DOS .COM, 56 bajtów
Tutaj zawartość pliku w systemie szesnastkowym:
b4 09 ba 2c 01 cd 21 b2 2f e8 11 00 b2 2d e8 0c
00 b2 5c e8 07 00 b2 7c e8 02 00 eb ea b4 02 cd
21 b2 08 cd 21 b9 05 00 f4 e2 fd c3 4c 6f 61 64
69 6e 67 2e 2e 2e 20 24
Pasujący kod asemblera wygląda następująco:
mov ah, 9 ; Print "Loading... "
mov dx, text
int 21h
theloop:
mov dl, '/' ; Call "chrout" for "/", "-", "\" and "|"
call chrout
mov dl, '-'
call chrout
mov dl, '\'
call chrout
mov dl, '|'
call chrout
jmp theloop ; Endless loop
chrout: ; Sub-Function "chrout"
mov ah, 2 ; Output the character
int 21h
mov dl, 8 ; Output backspace
int 21h
mov cx,5 ; Call "HLT" 5 times
timeloop:
hlt ; Normally HLT will wait ~55 milliseconds
; (Assuming no keyboard key is pressed)
loop timeloop
ret ; End of the function
text:
ASCII "Loading... ",'$'
Martin Rosenau
źródło
źródło
mov al, 0xfe / out 0x21,al
Odpowiedzi:
NASM x86_64 -
349283 bajtówPowinien to być 64-bitowy system Linux
zbudowany przy użyciu:
nasm loading_golfed.asm -felf64 && ld loading_golfed.o
animacja:
zapisano 65 bajtów - dzięki użytkownik254948
źródło
R,
8589 bajtówEdycja: Naprawiono odpowiedź, która
T
nie przepełnia się, resetując licznik, jeśli jest większy niż4
.Jedynym interesującym aspektem o tej odpowiedzi jest wykorzystanie R za
TRUTHY
wbudowanego poleceniaT
. Jest to właściwie predefiniowany zestaw zmiennych,1/TRUE
co oznacza, że nie musimy inicjować licznika, ale możemy zacząć zwiększaćT
.źródło
T
końcu się przepełni?1e+308
w którymNA
to przypadku jest zwracana, więc chyba ta odpowiedź jest nieprawidłowa (nie zauważyłem jej w regułach). Wkrótce się zaktualizujeT
:i=1;repeat{cat("\rLoading...",c("\\","|","/","-")[i]);Sys.sleep(.25);i=`if`(i>3,1,i+1)}
ma 87 bajtów.T
wektorem? CzyT=(T+1)%%4
działa Oszczędzałoby to kolejne 5 bajtów.T=T%%4+1
: nawet 2 bajty krótsze.Haskell (GHC),
10391 bajtówDzięki @nimi za uratowanie 12 bajtów!
źródło
mapM((threadDelay 250000>>).putStr)$("\rLoading... "++).pure<$>cycle"|/-\\"
.250000
oraz spacji przed nią(4^9)
.C (w systemach typu UNIX) 88 bajtów
Zaczyna się od niewłaściwej postaci, ale myślę, że wygląda ładniej. Możesz łatwo zmienić kolejność znaków, modyfikując „\ - / |” strunowy.
źródło
for
, np .:ain(_){for(;printf("\rLoading... %c","\\-/|"[_%4]);usleep(250000))_++,fflush(0);}
, a następnie można grać w golfa dalej, zakładając obejście dla przepełnienia liczb całkowitych:main(_){for(;printf("\rLoading... %c","\\-/|"[_++%4]);usleep(250000))fflush(0);}
fprintf(stderr,...
zamiast tego, ponieważ nie jest to buforowane tak jak wierszstdout
.f...stderr,
Trwa osiem znaków, podczas gdyfflush(0);
trwa dziesięć, więc jest to wygrana netto z dwóch znaków.Perl,
716361 bajtówPoprzednia wersja:
Dzięki za @primo za 10 bajtów.
źródło
select
limitu czasu zamiastTime::HiRes
. Możesz zapisać kilka bajtów, używając... while$|=print
i przesuwając łączniki w transliteracji na początek i na koniec.s//\r Loading... |/
zapisuje również bajt nad przypisaniem.y'-\|/'\|/-'
.\r
.y'-|\/'\/|-'/4
zamiast.25
2 więcej.