*> <> , 43 42 octets
<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-
Essayez-le ici!
Je sens que je devrais être capable de raccourcir ça, j'ai quelques idées à essayer ... En gros, ça fait une pile de :1200----
. Il isole le :
et retourne la pile en l'insérant :
au milieu de l'un ----
ou de l'autre 1200
(en fonction de la fin de la pile).
Je dois également noter que la seule instruction *> <> utilisée est S
(veille), sinon il s'agit d'un programme approprié> <>.
Mise à jour: 1 octet enregistré en déplaçant le :
vers la droite au lieu de le protéger avec un registre.
Explication
Initialisation
<v":1200----"
Ici, nous construisons la pile que nous utiliserons pour la vie du programme.
< move the IP left
":1200----" push ":1200----" to the stack
v move the IP down into "output time"
Temps de sortie
>@5dov
1&}o:&<^!?:-
C'est la section où le temps est réellement sorti. Le premier 5 est poussé vers la pile afin que la boucle ci-dessous sache s'exécuter 5 fois.
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"
Récupérer et échanger
S >~r@@}r5
Ici, nous récupérons la :
position qui en résulte après la sortie, et nous nous retrouvons avec une pile inversée. En fait, cela se termine bien dans "temps de sortie", provoquant une boucle infinie.
> 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
Solution de 45 octets
<v[5"12:00"1
d/S5
o/!?l
v>]?v
00.>0"--:--"5[
Essayez-le ici!
Celui-ci est aussi fondamentalement un programme <>.
J'ai vraiment pensé qu'il serait possible d'économiser des octets avec cette approche. Ceci sort tout simplement 12:00
, alors --:--
. Je sauve des octets en réutilisant la routine de sortie o/!?l
(je réutilise même ce miroir comme entrée et comme sortie). J'utilise plusieurs piles pour stocker l'état (avec sortie 12
ou --
) et sélectionne l'état avec lequel je devrais sortir v>]?v
.
Explications à venir bientôt! (1/2)