Fichier .COM MS-DOS, 56 octets
Voici le contenu du fichier en hexadécimal:
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
Le code assembleur correspondant ressemble à ceci:
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
la source
la source
mov al, 0xfe / out 0x21,al
Réponses:
NASM x86_64 -
349283 octetsCela devrait être exécuté systèmes linux 64 bits
construit en utilisant:
nasm loading_golfed.asm -felf64 && ld loading_golfed.o
animation:
enregistré 65 octets - merci utilisateur254948
la source
R,
8589 octetsEdit: Correction de la réponse telle que
T
ne débordera pas en réinitialisant le compteur si supérieur à4
.Le seul aspect intéressant de cette réponse est l'utilisation de R de
TRUTHY
la builtinT
. Il s’agit en fait d’une variable prédéfinie,1/TRUE
ce qui signifie que nous n’avons pas à initialiser le compteur, mais que nous pouvons commencer à incrémenterT
.la source
T
éventuellement déborder?1e+308
auquel cas le casNA
est renvoyé, donc je suppose que cette réponse est invalide à ce moment-là (je ne l'ai pas remarqué dans les règles).T
:i=1;repeat{cat("\rLoading...",c("\\","|","/","-")[i]);Sys.sleep(.25);i=`if`(i>3,1,i+1)}
87 octets.T
un vecteur? ÇaT=(T+1)%%4
marche? Cela économiserait 5 octets supplémentaires.T=T%%4+1
: même 2 octets plus court.Haskell (GHC),
10391 octetsMerci @nimi d'avoir économisé 12 octets!
la source
mapM((threadDelay 250000>>).putStr)$("\rLoading... "++).pure<$>cycle"|/-\\"
.250000
avec l’espace précédent(4^9)
.C (sur les systèmes de type UNIX) 88 octets
Cela commence avec le mauvais personnage, mais je pense que ça a l'air plus joli. Vous pouvez facilement changer l'ordre des caractères en modifiant le "\ - / |" chaîne.
la source
for
, par exempleain(_){for(;printf("\rLoading... %c","\\-/|"[_%4]);usleep(250000))_++,fflush(0);}
main(_){for(;printf("\rLoading... %c","\\-/|"[_++%4]);usleep(250000))fflush(0);}
fprintf(stderr,...
place, puisque ce n'est pas une ligne tamponnée commestdout
. Lef...stderr,
prend huit caractères, tandis que lefflush(0);
prend dix, donc c'est un gain net de deux caractères.Perl,
716361 octetsLa version précédente:
Merci à @primo pour 10 octets.
la source
select
délai d'attente plutôt queTime::HiRes
. Vous pouvez économiser quelques octets en utilisant... while$|=print
et en déplaçant les traits d'union de la translittération vers l'avant et vers la fin.s//\r Loading... |/
enregistre également un octet sur l’affectation.y'-\|/'\|/-'
.\r
.y'-|\/'\/|-'/4
à la place de.25
pour 2 autres.