Haga un cargador falso así:
Parámetros:
- Muestre
loading
(espacio) uno de estos cíclicamente-\|/
(espacio) (contador de porcentaje de 0-100) y luego a%
. - Se supone que el contador porcentual se incrementa en 1 cada vez que cambia la pantalla.
- El tiempo que tarda el contador en saltar a la siguiente iteración es aleatorio. Cualquier tipo de aleatoriedad funcionará siempre que la función / método sea capaz de generar todos los enteros aleatorios que tengan una probabilidad> 0 en el rango
1<= ms <=750
,ms
es decir, el tiempo en milisegundos. - Comience a
loading - 0 %
. - Poner fin al
loading - 100 %
. - NO se requiere ENTRADA.
- enviar un programa completo o función o lo que sea similar.
El código que usé:
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");
}
}
Ganador
- el código con menos bytes gana.
code-golf
ascii-art
kolmogorov-complexity
Mukul Kumar
fuente
fuente
\|/-
) son los mismos, la respuesta parece ser diferente, ya que no es infinita e implica la generación de números aleatorios, en lugar de una salida estática. Por lo tanto, diré que, aunque inicialmente me sentí copiado, esto no me parece un engaño.-\|/
en algunos juegos, y me inspiraron los programas de instalación de consolas.Respuestas:
MATL , 45 bytes
Ejemplo ejecutado en el compilador fuera de línea:
¡O pruébalo en MATL Online!
Explicación
fuente
Powershell,
716865 BytesSimilar a https://codegolf.stackexchange.com/a/101357/59735
Ahorró 3 bytes al no ser un idiota (dejó el ... al cargar)
-3 gracias a VisualMelon
cambió 750 -> 751 para asegurarse de que se incluye 750.
Explicación:
GIF actualizado
fuente
-m
y perder los paréntesis$_%4
(al menos parece funcionar en mi caja).()
restos del otro desafío del que copié directamente mi código.Python 2,
119113112 BytesOriginalmente había ido con la cantidad aleatoria
random()/.75
, sin embargo, el punto final no se incluiría. No hay mucha diferencia entre esta y la otra pregunta para el tiempo de carga infinito, excepto por la aleatoriedad y el hecho de que realmente termina.¡Gracias a Jonathan Allan por guardar 6 bytes y a DJMcMayhem por guardar un byte!
fuente
import time,random as r
yr.randint
.for i in range(101):print'\rLoading','-\|/'[i%4],i,'%',;time.sleep(r.randint(1,750)/1e3)
range(1,101)
por alguna razón ...i=0;for c in'-\|/'*25:print'\rLoading',c,i,'%',;time.sleep(r.randint(1,750)/1e3);i+=1
Lote, 185 bytes
Desafortunadamente, el tiempo es bastante pobre, pero Batch no tiene nada mejor que usar
ping
.fuente
Loading % Invalid switch. - /aw
(me encantaría probarlo en MS DOS si aún puedo encontrar mi copia).*> <> (Estrella de mar),
8682 bytesPruébalo aquí!
Es posible que se pueda jugar más al golf, pero no veo nada súper obvio. Tiene una capacidad de 100 ms, 400 ms o 700 ms, si esto no es lo suficientemente aleatorio, ¡hágamelo saber!¡Gracias a @TealPelican por guardarme 4 bytes y hacerlo mucho más aleatorio!
Los mayores desafíos que encontré (mientras intentaba mantenerlo pequeño) fueron la aleatoriedad, y en realidad arrojar "carga - 100%" al final, en lugar de simplemente salir a mi conveniencia más cercana: p.
fuente
Perl 6 , 67 bytes
Expandido:
fuente
Javascript (ES6),
128118116115112110109 bytesEsto parece funcionar perfectamente bien, incluso con esta fuente incompleta de números "aleatorios".
Alternativa 1 , Javascript + HTML, 16 + 84 bytes
Este utiliza un elemento ya existente para mostrar el contenido restante:
Alternativa 2 , 95 bytes
Si puedo suponer que se abre una pestaña y que estás pegando esto en la consola:
En lugar de mostrar el HTML, el título del documento cambiará.
¡Gracias a @ user2428118 por guardar 2 bytes!
fuente
()
afterDate
para guardar dos bytes.F #, 118 bytes
Para ejecutar este fragmento, páselo a
Async.Start
oAsync.RunSynchronously
.fuente
PHP,
9083807877Bytes77:
El cierre
;
no es necesario.78:
Mientras buscaba otra solución para obtener un 0 inicialmente sin inicializar la variable, se me ocurrió esto:
Cambié de nuevo a echo para ganar unos pocos bytes, ya que solo usé printf para forzar el formato como int. Al incrementar el $ i incrementado con 0 obtengo un entero válido. Al usar comillas simples como delimitador de cadena, no es necesario escapar de la barra diagonal inversa, lo que da como resultado otro byte liberado
80:
Mover el incremento de $ i de la última sección for al prinf me dio otros 3 de descuento. (Ver comentarios a continuación)
83:
Se eliminó el inicio de una variable con los estados de carga.
90:
Intenté eliminar el init de $ i para ganar algunos bytes, ya que tuve que agregar bastantes para habilitar la animación del cargador. printf agrega 2 en lugar de echo, pero formatear NULL como un entero da como resultado 0.
fuente
printf
, ahorrándole un solo byte:for(;$i<101;usleep(rand(1,750)*1e3))printf("\rloading %s %d%%",'-\|/'[$i%4],$i++);
(82 bytes)rand(0,750)*1e3
devuelve un valor entre 0 (inválido) y 750, que se multiplica por 1000.rand(1,75e4)
devuelve un valor entre 1 (inválido) y 750000. El retraso debe serrand(1,750)*1e3
, desde su usousleep()
. Funciona con microsegundos , que es 1000 veces más pequeño que un milisegundo.echo
es 3 bytes más corto queprintf
. Es posible que desee colocar la versión más reciente en la parte superior y usarla en#title
lugar de**title**
. Y falta un espacio entre el número y el%
.Groovy,
11387 bytes-36 bytes gracias a lealand
fuente
p=-1;101.times{println"Loading ${"-\\|/"[p++%4]} $p%";sleep Math.random()*750as int}
println"Loading…
→print"\rLoading…
. Y elimine esa variable p, use la implícita en su lugar.Bash,
162104bytesModificación de la respuesta de Zachary en una pregunta relacionada, con mejoras masivas por manatwork:
Tuve que buscar cómo hacer números aleatorios en bash.
Sin golf / Explicado
fuente
s='-\|/';for x in {0..100};{ printf "\rloading ${s:x%4:1} $x %%";sleep `printf .%03d $[RANDOM%750+1]`; }
BTW, nuestro sitio asociado Unix y Linux también tiene una pregunta sobre cómo hacer cálculos enteros y flotantes, en bash u otros idiomas / marcos. .$[math]
, usar en{ }
lugar dedo done
, o usar garrapatas en lugar de$()
. Sí, tiene sentido reutilizar $ x para acceder a la matriz gráfica del cargador. Además, ¡golpear un.
frente del número para obtener el decimal para dormir es bastante dulce!C #,
170149135 BytesSin golf:
No garantizaré que todos los caracteres de esta sean correctos, corrígeme si hay errores de compilación. Tuve que escribir todo en mi teléfono, así que podría haber incluido accidentalmente algunos errores ... ¯_ (ツ) _ / ¯ Espero que me perdonen.Lo probé en mi PC, funciona de maravilla e incluso guardé 20 bytes enteros gracias a pmbanka :)
fuente
\r
(retorno de carro) en lugar deConsole.Clear()
. También puede incorporar la variable s para guardar algunos bytes.i<=100
fori<101
for (int i = 0; i <= 100; i++)
puede reescribirse comofor (int i = 0; i++ <= 100;)
Entonces puede colocar el Thread.Sleep en el lugar donde estaba i ++ y guardar ambos corchetes. Cortando 3 bytes en totalstatic void l()
con()=>
C
112103 bytesGuardado 9 bytes gracias a @G. Sliepen No es muy emocionante, solo un golf de su respuesta C ++ básicamente. Tampoco es una función aleatoria muy emocionante. Pensé en eso
Sleep(c[i%4])
, ¡Sleep(i)
pero no son al azar en absoluto!Sin golf:
fuente
rand ()%750
genera números del 0 al 749, tendrá que sumar 1.rand()%750
arand()%751
no dará el resultado que deseas. Generará un valor aleatorio entre 0 y 750. En la pregunta, el retraso debe estar entre 1 y 750 (inclusive). De acuerdo con tutorialspoint.com/c_standard_library/c_function_rand.htm , larand()
función genera números entre 0 y (al menos) 32767. Si lo hace0 % 750
, obtendrá 0 desde entonces0 / <anything> == 0
.char*c="-\\|/";
y usando la cadena literal directamente en lugar de la variablec
:printf(...,"-\\|/"[i%4],...)
Mathematica, 133 Bytes
Esto se ejecutará una vez, suponiendo que x esté indefinido.
Clear@x
lo reiniciará55 caracteres atados en verbosidad: /
fuente
UpdateInterval:>[email protected]
repetidamente llamaRandomReal
, peroUpdateInterval->[email protected]
lo llamaría solo una vez.R - 94 bytes
Muy bueno eso
sample(750,1) == sample(1:750,1)
.fuente
HTML + JS (ES6), 16 + 87 = 103 bytes
fuente
PHP,
6679 bytesDesafortunadamente, tuve que asignar $ i para que imprimiera '0'.
Usar como:
Ediciones: gracias a Titus que confirma exactamente lo que está permitido con Mukul Kumar, podemos guardar 3 bytes con un rango menos restringido, pero no todos los 9 bytes con un rango sin restricciones. Gracias también por señalar que olvidé el personaje de ciclismo y por proporcionar una solución simple para hacerlo.
fuente
rand(1,75e4)
ahorra 3 bytes;1e6
puede salvar a otro; y ningún parámetro guarda 9 bytes en total; y no veo que eso viole ninguna regla. Pero olvidaste hacer un ciclo del personaje: +16 para en","-\\|/"[$i%4],"
lugar de-
.usleep(rand(1,75e4))
generará un intervalo aleatorio entre 1 microsegundo y 750 milisegundos ? Además, según la pregunta, el intervalo debe estar entre 1 y 750, inclusive.1 to 75e4
es aceptable.Noodel , 40 bytes no competitivos
Simplemente volviendo a los viejos desafíos (como en los desafíos que se hicieron antes de Noodel ) y compitiendo con Noodel para encontrar dónde es débil.
Si la salida final no importa, puede guardar 2 bytes.
Noodel empuja la parte superior de la pila a la pantalla al final del programa, así que al agregar el
€Ḃ
esto evita que eso suceda.Intentalo:)
Cómo funciona
fuente
¤
s?¤
se usa :)noodle
, luego traduce elcode
archivo a Javascript?noodel
que manejacode
correctamente. Traduce loscode
tokens que son objetos JavaScript que se encadenan y luego se ejecutan. Elppcg.min.js
crea las adecuadas HTML objetos y transforma la salida de lo que se analiza en los HTML objetos para crear la pantalla. Cada token se ejecuta al pasar a través de ellos desencadenando un evento de paso que se registra para actualizar la pantalla :) ¿Ayuda eso?C
126121 bytesVersión sin golf:
@Carcigenicate @ Mukul Kumar No leí entre líneas allí, ¡Gracias! :)
fuente
MATLAB, 108 bytes
fuente
Octava,
122120119108 bytesLeí mal el desafío y creé un cargador infinito que se reinició en 0 una vez que pasó de 100. Lo convertí en un cargador único:
Circulando
a
,a=a([2:4,1])
fue idea de flawr aquí . Además, ahorré 2 bytes omitiendo los paréntesis después derand
gracias a MattWH.fuente
.749*rand()+.001
? Esto puede esperar 751 ms. También puede dejar el()
rand y guardar 2 bytes.ForceLang, 250 bytes
Sin competencia, requiere características de idioma que sean posteriores a la pregunta
Probablemente debería corregir algunos errores relacionados con el análisis literal de cadenas pronto.
fuente
Raqueta 110 bytes
Sin golf:
Pruebas:
Salida:
(Este archivo gif muestra una visualización más lenta que la real)
fuente
10775 Ruby-32 gracias a manatwork
Normal
Golfed
fuente
system'clear'
aquí se exagera. También el uso de la variable separada i. Ah, y precalcule siempre que sea posible:0.750-0.01
→0.749
(también tenga en cuenta que le falta un decimal en 0.01, debería ser 0.001). El resultado se101.times{|c|$><<"\rloading #{'-\|/'[c%4]} #{c} %";sleep rand*0.749+0.001}
vuelve muy similar a la respuesta de Ruby de Conor O'Brien en Loading ... Forever, pero también lo es el desafío.Python 3, 149 bytes
Similar a Cargando ... para siempre, pero tuve que editar mi respuesta desde allí mucho.
fuente
TI-Basic, 80 bytes
La aleatoriedad proviene del
For(
bucle (E es el token E científico) y, dado que se interpreta TI-Basic, también hay automáticamente algo de sobrecarga. Recuerde que en TI-Basic, las letras minúsculas y algunos símbolos ASCII menos comunes son dos bytes cada uno (por lo que específicamente para este programa,l o a d i n g sub( \ | %
son los tokens de dos bytesfuente
Clojure, 109 bytes
Recorre una lista del rango de números del 0 al 100, comprimida con una lista infinita de
"\|/-"
repeticiones para siempre.fuente
tcl, 116
Se puede reproducir en http://www.tutorialspoint.com/execute_tcl_online.php?PID=0Bw_CjBb95KQMOXoybnVSOVJEU00
fuente
Java 8, 130 bytes
Explicación:
Salida gif:
fuente
Visual Basic, 371 bytes
Expandido:
fuente