*> <> , 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)