Muchos dispositivos electrónicos, especialmente los antiguos, mostrarán un parpadeo 12:00
cuando no se haya configurado el tiempo. El propósito de este desafío es recrear esto.
Específicamente, la tarea es mostrar 12:00
y, --:--
alternativamente, en un bucle infinito .
El período debe ser de 1 segundo, dividido equitativamente en dos períodos de 0,5 segundos. Aquí "1 segundo" y "uniformemente" se pueden interpretar libremente. Por ejemplo, es aceptable si el código se detiene durante 0,5 segundos entre la visualización de las cadenas, incluso si el período resultante será un poco más alto que 1 segundo. Una pausa inicial antes de mostrar la primera cadena es aceptable.
Cada nueva cadena se puede mostrar reemplazando la cadena anterior o en una nueva línea . Se permite el espacio en blanco al final, excepto que si cada nueva cadena está en una línea diferente, no debería haber líneas vacías entre cadenas consecutivas.
El código más corto en bytes gana.
Respuestas:
Jalea , 20 bytes
Cómo funciona
fuente
HTML / CSS,
131108106101 +1817 =149126125123118 bytesEditar: Guardado 23 bytes gracias a @insertusernamehere. Se guardó 1 byte al cambiar de
<pre>
a<tt>
. Guardado 2 bytes gracias a @darrylyeo. Guardado 5 bytes gracias a @DBS.fuente
a{position:absolute}
pero olvidé por completo elpre
...<tt>
.}}
completo.margin-left
almargin
puesto que está trabajando desde la parte superior izquierda de todas formasmargin:-5ch;
debe tener el mismo efecto.Shell y
pv
26 bytesEsto utiliza
yes
una herramienta estándar y unpv
elemento de tubería de Shell para medir los datos que pasanfuente
-qlL2
para hacer 2 líneas por segundo en lugar de-qL12
: 12 caracteres por segundo. La longitud del guión es la mismaPython2,
807573696766 bytesNoté que mi magia de cuerdas se hizo un poco más larga que elegir la cuerda de una matriz.No te preocupes, ya lo resolví.Explicacion :
Establecí un contador n a 0, que se alternará entre 0 y 1.
Bucle sin fin con el bucle
while 1
.Creo una cadena
1-2-::0-0-
, que contiene la cadena12:00
y se--:--
superpone.Comenzando desde el índice 0 con un paso de 2, obtenemos:
12:00
Comenzando desde el índice 1 con un paso de 2, obtenemos:
--:--
Utilizo n para hacer la secuencia repetida 0 , 1 , 0 , 1 , 0 ... que será el índice inicial de la cadena.
n^=1
, en cada bucle, obtenemos esa secuencia.^
siendo el operador XOR.n^=1
resulta en 1n^=1
da como resultado 0.5
->0.5
) segundos.¡@FlipTack ahorró 4 bytes! -> Pon el lazo en una línea.
¡@Rod ahorró 2 bytes! ->
n+=1
an^=1
, asín%2
an
.@xnor guardó un byte! ->
while 1
->while[time.sleep(.5)]
.fuente
n+=1
conn^=1
, y luego usar[n::2]
, guarda 2 bytes y evita números grandes c:print"1-2-::0-0-"[n::2]
queprint"\b"*6+"1-2-::0-0-"[n::2],
se va a añadir unos cuantos bytes pero va a parpadear en su lugar\r
lugar de\b\b\b...
moverse al comienzo de la línea. Pero de todos modos, esto solo agregaría bytes a la solución actual.while[time.sleep(.5)]:
.Octava,
63626155 bytes¡Ahorré dos bytes gracias a Tom Carpenter! Usar una sola cadena en lugar de dos cadenas en una matriz de celdas fue más corto.
Explicación:
Se guardaron algunos bytes porque Octave no requiere dos puntos o punto
flip(c)
y coma entre ydisp()
, y entrepause(.5)
yend
.fuente
flip
lugar de un contador!JavaScript, 59 bytes
Explicación
setInterval('...',500)
establece un intervalo para ejecutar código en la cadena cada 500 milisegundos, o 1/2 por segundo.y=1
establece una variable,,y
a 1 inicialmente. De esa manera, lo primero que se imprime es12:00
porquey
se usa para acceder a la matriz.console.log(...)
registra lo que sea en la consola, en este12:00
o--:--
.["12:00","--:--"][y^=1]
crea una matriz con cadenas que contienen ambos estados. Luego,y
se utiliza para acceder a uno de los elementos. Finalmente,^=
o el operador compuesto XOR lo hacey = y ^ 1
. Esto simplemente invierte el bit porque1 ^ 1
es 0 y0 ^ 1
es 1, similar a lo que hizo @TuukkaX . De esta manera, la cadena registrada alterna entre los dos elementos en la matriz y, por lo tanto, crea el efecto de parpadeo.fuente
y=1;setInterval('console.log(y?"12:00":"--:--");y=!y',500)
You can save some bytes with setInterval(...,i=500) :-)
. Básicamente tenemos la misma respuesta y también funciona para la suya.V ,
3130272524 bytesAhorró 5 bytes gracias a @ nmjcman101 intercambiando el orden de
12:00
y--:--
para quek
pueda eliminarse eliminandoò
para que pueda agregarse implícitamente al finalGuardado 1 byte gracias a @DJMcMayhem al poner ambos
12:00
y--:--
en una líneaAntigua solución:
<ESC>
es0x1b
Hexdump:
Explicación
Gif (anticuado)
Nota: tengo resaltado activado
fuente
ò
se da implícitamente, por lo que puede eliminarlo.ò
. Solo se ejecuta una vezk
. Luego, en lugar depkdd
solo puede usarVp
, ya quep
en el modo de selección visual intercambia efectivamente la selección con el registro predeterminado.ò
, pero si eso funciona ahora, creo que debería poder cambiarloòVp:sl500m
y dejar que V agregue el^Mò
de 2 bytes.bash,
585645 bytesguardado 3 bytes al suprimir--
despuésset
ya que 1st arg es un número.Guardado 16 bytes usando la sintaxis de @DigitalTrauma :
Luego perdiendo 5 bytes debido al comentario de zeppelin .
Esto no se pudo probar en la línea de comando. Como involucramos
$0
, esto debe escribirse en un script para ejecutarse.Desviar
Con un poco de preparación, esto podría ser bueno ( 412 bytes ):
O incluso las mismas dos líneas pero con:
fuente
s(){ echo $1;sleep .5;};for((;;)){ s 12:00;s --:--;}
printf '%%\041\n/Helvetica findfont\n24 scalefont\nsetfont\nnewpath\n%s %s moveto\n(%s) show\nshowpage\n' -2.456 0.550003 12:00 | gs -sDEVICE=pnmraw -r600 -g470x146 -sOutputFile=- -q - | pnmscale -width 160 | ppmtopgm | pgmtopbm | pbmtoascii -2x4
;-)f()(echo $1;sleep .5);f 12:00;f --:--;$0
Perl, 49 bytes
Perl
sleep
no puede dormir por menos de 1 segundo, de ahí el uso deselect undef, undef, undef, .5
(golf reemplazadoundef
por$,
) para dormir .5 segundos.Otra cosa interesante:
$|
solo puede contener0
o1
. Entonces$|--
solo alterna su valor, de0
a1
.Y finalmente,
{... ;redo}
actúa como un bucle infinito.fuente
*> <> ,
4342 bytesPruébalo aquí!
Siento que debería poder hacer esto más corto, tengo un par de ideas para probar ... Básicamente, esto es una pila de
:1200----
. Aísla:
y voltea la pila, insertando:
en el medio de cualquiera----
o1200
(dependiendo de lo que esté al final de la pila).También debo tener en cuenta que la única instrucción *> <> que usa es
S
(suspensión), de lo contrario, este es un programa>> adecuado.Actualización: se guardó 1 byte desplazando
:
hacia la derecha en lugar de protegerlo con un registro.Explicación
Inicialización
Aquí construimos la pila que usaremos durante la vida del programa.
Tiempo de salida
Esta es la sección donde se emite el tiempo. Los primeros 5 se envían a la pila, por lo que el ciclo siguiente se ejecuta 5 veces.
Recuperar e intercambiar
Aquí recuperamos la
:
posición de la que resulta después de la salida, y terminamos con una pila invertida. Esto en realidad sale muy bien en el "tiempo de salida", causando un bucle infinito.Solución de 45 bytes
Pruébalo aquí!
Este también es básicamente un programa> <>.
Realmente pensé que sería capaz de guardar algunos bytes con este enfoque. Esto simplemente da salida
12:00
, entonces--:--
. Ahorro bytes reutilizando la rutina de salidao/!?l
(incluso reutilizo ese espejo como entrada y salida). Utilizo múltiples pilas para almacenar el estado (tiene salida12
o--
), y selecciono con qué estado debería salirv>]?v
.¡Explicaciones próximamente! (1/2)
fuente
HTML / CSS (solo Chrome), 80 + 4 = 84 bytes
Editar : El atributo "contenido" no es animable por la especificación CSS , pero está en el navegador de escritorio Chrome.
fuente
Noodel , 16 bytes no competitivos
Noodel sigue siendo un trabajo en progreso. Solo trato de mojarme los pies con un par de desafíos.
Intentalo:)
Cómo funciona
Aquí hay un fragmento de código :)
fuente
QBIC ,
3733 bytesQBasic desafortunadamente solo puede dormir durante segundos completos. Veré sobre la creación de un método para permitir una mayor flexibilidad pronto. He ingresado 1
01
para simular.5
.Explicación:
En versiones anteriores de QBIC,
$
y(espacio) eran caracteres reservados. Llamar a una función QBasic que necesitaba espacios (como
sleep x
) o$
(left$(..)
) requería un código literal:El código en un bloque literal de código se pasa directamente a QBasic sin que QBIC lo analice. Al descargar las funciones de esos símbolos (se
$
convirtió'
, y las nuevas líneas ahora son┘
(alt-217) en lugar de) los símbolos ya no son vistos por QBIC como caracteres especiales y simplemente se transmiten. Lo mismo es cierto para el alfabeto en minúsculas: se utiliza para representar variables numéricas en QBIC y QBasic y no se modifican. El uso de la funcionalidad QBasic que no se implementa en QBIC (como
SLEEP
) es simplemente una cuestión de no usar caracteres reservados QBIC. Esto se hace más fácil con los cambios recientes en los símbolos de comando.fuente
JavaScript,
777672 bytes¡Gracias a Kritixi Lithos por 1 byte y L. Serne por 4 bytes!
fuente
1000
se puede acortar a1e3
setInterval
ysetTimeout
acepte una cadena con código como primer argumento, para que pueda guardar otro 4B:setInterval('l=console.log,l("12:00"),setTimeout("l(
-: -)",500)',1e3)
`
significa que ahora es ES6, mientras que la respuesta anterior solo necesitaba ES5.Python 2,
88857371 bytesPruébalo aquí!
Al tomar prestada la idea de Stewie Griffin de voltear la lista, el programa fue posible. Versión sin golf con explicación:
¡Gracias @FlipTack por guardar 14 bytes!
fuente
PHP,
51 50471 byte guardado debido a trabajo en equipo y otros 3 guardados por insertusernamehere. ¡Gracias!
fuente
usleep(5e5)
llamada alfor
tercer parámetro, el,
separador se vuelve innecesario, guardando 1 carácter.while(1)
al principio.echo
y$i
y reemplácelo\n
con una nueva línea real.Pyth, 23 bytes
En pseudocódigo:
Utiliza la variable preinicializada
Z
como flip-flop e invierte su estado cada vez queif
intenta verificar la condición.fuente
rubí,
4742 bytesAún no hay respuesta de ruby, así que aquí está mi primer intento:
fuente
GNU sed, 39 bytes
EDICIONES:
Golfed
Explicado
¡Pruébelo en línea!
fuente
dc (bash), 37 bytes
Esto funciona presionando las dos cadenas "12:00" y "-: -" en la pila y luego intercambiando repetidamente los valores, imprimiendo el elemento en la parte superior de la pila y durmiendo medio segundo.
Para ejecutar esto, puede guardarlo en un archivo y luego escribir
o puede ejecutarlo directamente desde la línea de comando bash escribiendo
fuente
Perl 6 ,
48 4134 bytesfuente
for
bucle puede hacerlo un poco más corto:for |<12:00 --:-->xx* {sleep .5;.say}
say
devuelve 1:sleep .say/2 for |<12:00 --:-->xx*
Jalea, 22 bytes
No funciona en TIO. Hacer que Jelly se ejecute en Android con QPython3 también fue una experiencia divertida.
Explicación
fuente
Mathematica, 38 bytes
Explicación
Emite una variable de reloj que realiza ciclos continuos de 0 a 1 cada segundo.
Si la variable del reloj es mayor que .5, envíe "12:00". Si no, salida "-: -".
Hacer el programa dinámico (actualizando constantemente)
fuente
Javascript,
57552 bytes guardados gracias a ETHproductions
fuente
setInterval(...,i=500)
:-)Posdata
225214¡Solo por diversión! ¡No envíes esto a una impresora real!
Intentalo:
o
luego
¡Pero no intente abrir esto con un visor más sofisticado y preocúpese por la miniatura del escritorio!
fuente
gs -c '...'
comando muestra una página en blanco, es posible que deba hacer crecer la ventana de visualización o usar una resolución más pequeña:gs -r45 -c '...'
o un tamaño de papel más pequeñogs -r600 -g360x200 -c '...'
Javascript (en el navegador),
17416015912211211110910766 (91) bytesLo he tomado
pre
porque usar una fuente monotipada no es parte del requisito, por lo que mi nuevo recuento es 66 . Se agregan algunos caracteres para usar fuentes monoespaciadas, pero como no es necesario, no contaré estos 25 caracteres más.Gracias a ETHproductions por guardar 14 bytes,
a Kritixi Lithos para ahorrar 1 byte,
para trabajar para ahorrar
13 byte,a Christoph por guardar dos bytes más y
a mí mismo por ahorrar 37 bytes usando en
[..][b^=1]
lugar desetTimeout
... y 10 más reemplazandofunction(){..}
por comillas dobles ...... peor:
De 66 a algo más ...
... pero por diversión, en el espíritu de una pantalla parpadeante:
fuente
1000
puede convertirse1e3
window.
;window.setTimeout
es el mismo quesetTimeout
.tt
es más cortopre
y también implica el uso de la fuente monoespacio. (Sólo es elemento en línea, no cuadra, pero esto debería hacer ninguna diferencia en este caso.)b=document.body.append(a=document.createElement('tt'))
d=document;d.body.append(a=d.createElement('tt'));setInterval("a.innerHTML=++b%2?'12:00':'--:--'",b=500)
ahorra 5 bytessetInterval("document.body.innerHTML=++b%2?'12:00':'--:--'",b=500)
solo queda atrás del elegante monoespacio pero solo tiene 66 bytes.QuickBASIC , 167 picaduras (delicioso)
Nunca iba a ganar de todos modos. QB no tiene un piso (), y tampoco tiene una función para dormir durante x milisegundos. Por lo tanto, esto funciona agarrando la parte de coma flotante del TEMPORIZADOR (devuelve los segundos transcurridos desde la medianoche, más una fracción del segundo actual expresado como un decimal de dos dígitos). Luego le agregamos un "ciclo de 50 unidades" para determinar cuándo la fase debe cambiar de "-: -" a "12:00", y usar el decimal TEMPORIZADOR original para el cambio de "12:00" a "--:--".
Finalmente, incluso ejecutar esto cumplió en QB4.5, en DOSBox en una máquina bastante poderosa omitirá los ritmos. Esto se debe a que QB realmente no es lo suficientemente rápido como para realizar el DO-LOOP y las evaluaciones dentro de la MS en la que estamos haciendo la comparación. ¡Necesitaría una caja del FUTURO!
De todos modos, ahora parezco 100, e hice felices a todos los estudiantes de la Universidad Americana, ya que probablemente tengan una respuesta para su clase de Comp Sci, ya que todavía están enseñando esto ...
fuente
b% = b% - 99
ab%=b%-99
?Clojure,
7962 bytesV2
-17 bytes cambiando de un horrible ciclo de indexación a un ciclo en una lista infinita
Crea una lista infinita de
"12:00"
y"--:--"
repitiendo una y otra vez, luego usadoseq
para extraer constantemente el siguiente mensaje e imprimirlo.V1
No podía pensar en una buena manera de compactar las constantes "12:00" y "-: -", así que tuve que codificarlas.
Sin golf:
fuente
Pushy , 22 bytes (no competidor)
Esta respuesta hace uso de las dos pilas, volteando entre ellas, imprimiendo los caracteres a su vez:
El
oW
comando es parte de un conjunto de comandos experimentales que son posteriores al desafío, lo que hace que esta respuesta no sea competitiva.fuente
Windows PowerShell,
4655 bytesCódigo original
fuente