*> <> , 43 42 байт
<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-
Спробуйте тут!
Я відчуваю, що я повинен бути в змозі зробити це коротше, у мене є кілька ідей, щоб спробувати ... В основному, це робить купу :1200----
. Він ізолює :
та перевертає стек, вставляючи :
посередині ----
або1200
(залежно від того, що знаходиться в кінці стека).
Я також повинен зазначити, що єдина інструкція *> <>, яку вона використовує, - це S
сон (інакше), інакше це правильна програма <<>.
Оновлення: збережено 1 байт, перемістивши :
вправо, а не захистивши його регістром.
Пояснення
Ініціалізація
<v":1200----"
Тут ми будуємо стек, який будемо використовувати протягом життя програми.
< move the IP left
":1200----" push ":1200----" to the stack
v move the IP down into "output time"
Час виходу
>@5dov
1&}o:&<^!?:-
Це розділ, де фактично виводиться час. Спочатку 5 висувається до стека, тому петля внизу знає виконати 5 разів.
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"
Відновити та поміняти місцями
S >~r@@}r5
Тут ми відновлюємо :
позицію, до якої вона призводить після виходу, і закінчуємо зворотним стеком. Це фактично прекрасно виходить у "вихідний час", викликаючи нескінченний цикл.
> 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
45 байт
<v[5"12:00"1
d/S5
o/!?l
v>]?v
00.>0"--:--"5[
Спробуйте тут!
Цей також є в основному програмою.
Я дійсно думав, що за допомогою цього підходу вдасться зберегти кілька байт. Це досить просто виводить 12:00
, а потім --:--
. Я зберігаю байти шляхом повторного використання вихідної програми o/!?l
(я навіть повторно використовую це дзеркало як вхід, так і вихід). Я використовую кілька стеків, щоб зберігати стан (має вихід 12
або --
), і вибираю, у якому стані я повинен виводити v>]?v
.
Пояснення найближчим часом! (1/2)