Crie uma barra de carregamento no estilo Windows seguindo as seguintes instruções.
(observe que isso é diferente de Loading ... Forever )
Sua saída deve começar por [.... ]
.
A cada tick, você deve esperar 100 ms e depois mover cada ponto um caractere para a direita. se o ponto estiver no décimo caractere, mova-o para o primeiro. Observe que você deve limpar a tela antes de imprimir novamente. A saída é ordenada da seguinte forma:
[.... ]
[ .... ]
[ .... ]
[ .... ]
[ .... ]
[ .... ]
[ ....]
[. ...]
[.. ..]
[... .]
..Then loops para sempre.
Regras
- Isso é código-golfe , então a resposta mais curta ganha
, duvido que eu aceitaria uma resposta vencedora. - Forneça um arquivo gif da barra de carregamento em ação, se possível.
code-golf
ascii-art
kolmogorov-complexity
animation
Matthew Roh
fonte
fonte
\r
permitido o uso , em vez de literalmente limpar a tela?Respostas:
V,
171615 bytes<esc>
é0x1b
.E o hexdump:
Explicação
fonte
i.... <esc>qq:sl 100m<CR>$X|P@qq@q
deve trabalhar (<esc>
é, obviamente, a chave de escape e<CR>
é um avanço de linha) (existem 6 espaços após os 4 pontos)gó
função sendo útil. Resposta agradável BTW :)CSS / HTML,
202190186 + 45 =247235231 bytesEdit: Salvo
1214 bytes graças a @Luke.fonte
b
?ch
no final;0
não precisa de uma unidade.<x>
para<span>
(e também no CSS:x
torna - sespan
ex>x
torna - sespan>*
)? Isso salvadisplay:inline-block;
, mas custa apenas 15 bytes. Portanto, um total de 6B são salvos.position:absolute;
.PowerShell,
6766 bytes-1 usando o construtor reduzido, graças ao Beatcracker
substitui a sequência por uma cópia da sequência em que o último caractere é colocado na frente dos caracteres restantes, limpa a tela, imprime e dorme por 100 ms.
economizou muitos bytes usando o construtor de loop for em vez de quebrar a lógica dentro da string.
fonte
for
truque do loop e me fazendo reler about_Join .$s='.'*4+' '*6
.[.... ]
. Você pode corrigi-lo sem penalidade:for($s='.'*4+' '*6){cls;"[$s]";$s=-join($s[,9+0..8]);sleep -m 100}
Python 3 ,
99938583 + 2 ( sinalizador -u ) bytes-12 bytes graças a ovs
-2 bytes graças a totallyhuman
Experimente online!
fonte
flush=True
? Ele funciona sem para mimprint(end='\r[%s]'%s,flush=1)
-u
sinalizador de linha de comando. Pergunta SO relacionadas[9]+s[:9]
.Lote do Windows,
201181 bytesAcontece que o método da velha escola realmente salva bytes!
Nota:
Observe que meu gravador GIF pulou alguns quadros, fazendo a barra de carregamento saltar
:(
fonte
@echo off
e substituindo a fazer comdo @(echo %%~p&timeout/t 0 >nul&cls)
que também o trabalho e deve salvar 11 caracteres (200 bytes no meu computador)Mathematica,
6777 Bytes10 bytes como eu esqueci os colchetes.
fonte
Animate
? : |C (gcc) ,
126125124123122121119118117114115 bytesEste usa uma máscara de bits para acompanhar onde estão os pontos.
Eu tive que adicionar outro byte, pois estava produzindo apenas 5 espaços antes.
Experimente online!
fonte
Javascript (ES6), 86 bytes
fonte
with
. Sempre +1 parawith
!JavaScript (ES6) + HTML,
1048583 bytesinput
vez de umpre
.Tente
Requer um fechamento
>
nainput
tag para funcionar em um snippet.fonte
[]
?<input>
vez de<pre>
e depois emvalue
vez deinnerText
?s='.... ';setInterval(f=>{o.value='[${s=s[9]+s.slice(0,9)}]'},100);<input id=o
talvez alguém possa melhorá-la (substitua as aspas por `) #Noodel ,
16151413 bytes[CỤ'Ṁ ~ ððÐ] ʠḷẸḍt] ʠ [Ð. × 4¤ × 6⁺ḷẸḍt] ʠ⁶¤⁴.ȧ [ėÐḷẸḍtTente:)
Como funciona
Atualizar
Tente:)
Não sei por que isso me levou um tempo para pensar. De qualquer forma, isso coloca em 13 bytes .
fonte
PHP, 67 bytes
sem comentários
fonte
C #,
162157 bytesou como um programa completo para 177 bytes
fonte
for(string o="[.... ]";;)
pode ser jogado paravar o="[.... ]";for(;;)
. Ou você pode nos uma porta de meu Java 7 resposta ao golfe do total pouco mais:()=>{var o=".... "for(;;){o=(o+o).Substring(9,10);System.Console.Write("["+o+"]\n");System.Threading.Thread.Sleep(100);System.Console.Clear();}};
$"[{o}]\n"
System.Console.Write(o)
porSystem.Console.Write(o+"\r")
você pode remover oSystem.Console.Clear();
Festa pura, 68
fonte
MATL , 24 bytes
Experimente no MATL Online! Ou veja um gif do compilador offline:
Explicação
fonte
Geléia ,
2827 bytesQuão?
fonte
C (gcc),
202198196189969988867977757473 bytesEconomizou
78 bytes graças ao Digital Trauma .Ou, se o sistema
stdout
não precisar ser liberado após cada gravação sem uma nova linha:C (gcc), 70 bytes
Como funciona
usleep(
dorme pelo próximo valor de retorno em microssegundos.dprintf(2,
imprime no descritor de arquivo 2 oustderr
. Isso é necessário porque enquantostdout
estiver com buffer de linha (o que significa que a saída não será exibida até que ela imprima uma nova linha),stderr
é com buffer de caracteres (toda a saída é mostrada imediatamente)."\r
imprime um retorno de carro (limpa a linha atual).[%-10.10s]"
é oprintf
especificador de formato para uma sequência com o comprimento exato 10 (independentemente da sequência fornecida, a saída sempre será uma sequência com o comprimento 10), preenchida com espaços à direita, se necessário. Isso será incluído entre colchetes.".... ...."
é a barra de carregamento.+i%10
compensações da barra de carregamento pela corrente módulo índice de 10. Por exemplo, sei == 3
,i % 10
é igual a 3. Compensação a barra de carregamento por 3 faz com que seja igual a". ...."
.printf
especificador de formato, ela limita a um comprimento de 10, se necessário, e adiciona espaços ao final, se necessário. Portanto, a barra de carregamento estará sempre entre[.... ]
e[. ...]
.fonte
i;f(){for(;;i=++i%10)usleep(7500*dprintf(2,"\r[%-10.10s]",".... ...."-i+10));}
Deveria trabalhar.f(i){usleep(dprintf(2,"\r[%-10.10s]",".... ...."+i%10)<<13);f(i+9);}
Java 7,
139124 bytes\r
agradecimento a @Phoenix .O retorno de carro
\r
redefine o 'cursor' de volta ao início da linha, que pode ser substituído. Infelizmente, os compiladores on-line nem o IDE Eclipse não suportam isso, então adicionei um gif no final desta resposta para mostrá-lo no prompt de comando do Windows.Experimente aqui. (Levemente modificado para que você não precise esperar o tempo limite antes de visualizar o resultado. Além disso, o TIO não oferece suporte a retornos de carro, portanto, cada linha é impressa sem substituir a linha anterior.)
Explicação:
Gif de saída:
fonte
println
comprint
e produzir um retorno de carro. Pode não funcionar no terminal do seu IDE, mas funcionaria em qualquer outro terminal.\r\n
? ComoSystem.out.print(someString+"\r\n);
limpar o console .. É o mesmo que usarSystem.out.println(someString);
.. Ele simplesmente vai para a próxima linha, mas não remove qualquer linha anterior impresso ..: S\r
, sem\n
. Isso redefine o "cursor" para o início da linha, portanto, imprimir qualquer coisa substituirá essa linha.Python 2 ,
8178 bytes-1 byte (percebendo que eu perdi o uso
%s
quando Rod enviou uma versão quase idêntica do Python 3 ao mesmo tempo!)-2 bytes (usando a idéia de totalmente humano - substitua
s[-1]+s[:-1]
pors[9]+s[:9]
)fonte
\r
substitui a linha e,
faz com que ela imprima uma tupla em vez de uma string - vi isso há algum tempo em algum lugar e já a usei antes.sys.stdout.flush()
)Go ,
150145132129124 bytes-5 bytes graças ao sudee.
Eu sinto que não vejo o suficiente. Vá aqui ... Mas minha resposta está no topo de C, então ... pls halp golf?
Experimente online!
fonte
100000000
para10^8
salvar 5 bytes.10**8
which also gives an error.1e8
.VBA de 32 bits,
159157143141134 BytesO VBA não possui uma função integrada que permita aguardar períodos inferiores a um segundo, portanto, devemos declarar uma função de
kernel32.dll
Declaração de declaração de 32 bits (41 bytes)
Declaração de declaração de 64 bits (49 bytes)
Além disso, devemos incluir um
DoEvents
sinalizador para evitar que o loop infinito faça com que o Excel apareça como não responsivo. A função final é então uma sub-rotina que não recebe nenhuma entrada e sai para a janela imediata do VBE.Função imediata da janela, 93 bytes
Função de janela imediata VBE anônima que não leva nenhuma entrada e saída para o intervalo
A1
no ActiveSheetVersão antiga, 109 bytes
Função de janela imediata que não recebe entradas e saídas para a janela imediata do VBE.
Ungolfted e formatado
-2 bytes para remover espaços em branco
-30 bytes para contar corretamente
-14 bytes para converter em função de janela imediata
Saída
O gif abaixo usa a versão completa da sub-rotina porque eu estava com preguiça de gravar novamente isso com a função imediata da janela.
fonte
a
no topo da saída?a
conforme listado acima; isso é funcionalmente equivalente ao mais detalhadocall a()
.05AB1E , 23 bytes
Experimente online!
Explicação
fonte
Lote,
9998 bytesGuardado 1 byte graças ao SteveFest!
(Eu poderia remover
\r
do código, mas no espírito do golfe em lotes, não vou.)Existem quatro espaços após a primeira linha.
A lógica principal é modificar a string.
%s:~-1%
é o último caractere de%s%
e%s:~0,-1%
é quase o último caractere de%s%
. Assim, estamos movendo o último caractere para a frente da string, que gira a string.fonte
0
na subsequência variável pode ser removidocmder
. Bom trabalho.Ruby,
5756 bytesFortemente influenciado por outras respostas aqui.
Guardou um byte graças a @manatwork. Aparentemente, também tenho problemas para contar caracteres - eu uso o ST3 e, aparentemente, incluirá novas linhas na contagem de caracteres da linha, se você não estiver atento.
fonte
s
?s
no início do programa como 4 se.
alguns espaçoss[0..8]
→s.chop
Perl, 69 bytes
-3 bytes graças a @Dom Hastings .
Essa
select undef,undef,undef,.1
é a maneira mais curta de dormir menos de 1 segundo em Perl, e são necessários muitos bytes ...Um pouco mais longo (79 bytes), existe:
fonte
!print
mas você precisa de parens para que ele termine do mesmo tamanho: /Bater,
939096 bytesveja aqui
não foi possível aninhar {} a sintaxe
fonte
Groovy, 72 bytes
Explaination
fonte
\r
to return the cursor to the start of the line. It appears that at least several answers are doing this. From there, you could delete the *20, saving 3 bytes.Haskell (Windows), 159 bytes
Explanation
Haskell's purity made generating the cycling dot pattern somewhat complex. I ended up creating a nested list comprehension that generated an infinite list of strings in the order they should be output, then went back added the appropriate IO operations.
fonte
Ruby, 61 bytes
If the spec were for the dots to scroll left instead of right, it would save 1 byte because
rotate!
with no arguments shifts the array once to the left.fonte
GNU sed (with exec extension), 64
Score includes +1 for
-r
flag.fonte
c, 100
fonte
stderr
usingdprintf
and not just useprintf
?stderr
is character buffered, whereasstdout
is line buffered. Since I don't want to print any\n
, then withprintf()
I'd have to explicitlyfflush(stdout)
as well as#include <stdio.h>
#include <stdio.h>
to flush STDOUT.fflush(0)
flushes all buffers.main
tof
, that counts.