*> <> , 43 42 bytes
<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-
Prué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 ----
o 1200
(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
<v":1200----"
Aquí construimos la pila que usaremos durante la vida del programa.
< move the IP left
":1200----" push ":1200----" to the stack
v move the IP down into "output time"
Tiempo de salida
>@5dov
1&}o:&<^!?:-
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.
Initialisation:
>@5dov
> move the IP right
@ move the ":" back two spaces in the stack
5 push 5 to the stack (let's call this `i`)
do output carriage return
v move IP down into "loop"
Loop:
1&}o:&<^!?:-
< move the IP left
& place i onto the register
}o: output a character and shift the stack left
& place i back onto the stack
1 - decrement i by 1
^!?: if i == 0, exit to "recover and swap"
Recuperar e intercambiar
S >~r@@}r5
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.
> move the IP right
~ remove trailing i from stack
r@@ reverse the stack and move ":" to the front
}r reverse the stack again, keeping ":" on the front
S 5 sleep for 500ms
Solución de 45 bytes
<v[5"12:00"1
d/S5
o/!?l
v>]?v
00.>0"--:--"5[
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 salida o/!?l
(incluso reutilizo ese espejo como entrada y salida). Utilizo múltiples pilas para almacenar el estado (tiene salida 12
o --
), y selecciono con qué estado debería salir v>]?v
.
¡Explicaciones próximamente! (1/2)