*> <> , 43 42 bayt
<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-
Burada dene!
Bunu kısaltabileceğimi hissediyorum, denemek için birkaç fikrim var ... Temel olarak bu bir yığın yapar :1200----
. :
Yığını :
ya ortasından ayırır ya ----
da ortasına ya da ortasına 1200
(hangisinin sonunda olduğuna bağlı olarak) yerleştirir.
Ayrıca, kullandığı tek *> <> komutun S
(uyku) olduğuna dikkat etmeliyim , aksi halde bu uygun bir> <> programdır.
Güncelleme: Bir kayıtla :
korumak yerine, sağa kaydırarak 1 byte kurtarıldı .
açıklama
Bafllatma
<v":1200----"
Burada programın ömrü boyunca kullanacağımız yığını oluşturuyoruz.
< move the IP left
":1200----" push ":1200----" to the stack
v move the IP down into "output time"
Çıkış zamanı
>@5dov
1&}o:&<^!?:-
Bu, zamanın gerçekten verildiği bölümdür. İlk 5 yığına itilir, böylece aşağıdaki döngü 5 kez çalışmayı bilir.
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"
Kurtar ve değiştir
S >~r@@}r5
Burada :
çıktıdan sonra elde ettiği pozisyondan kurtuluruz ve ters bir yığına gireriz. Bu aslında "çıkış zamanına" güzel bir şekilde çıkıyor ve sonsuz bir döngüye neden oluyor.
> 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 baytlık çözüm
<v[5"12:00"1
d/S5
o/!?l
v>]?v
00.>0"--:--"5[
Burada dene!
Bu da temelde bir> <> programıdır.
Bu yaklaşımla bazı baytları kurtarmanın gerçekten mümkün olacağını düşündüm. Bu oldukça basit çıktılar 12:00
, sonra --:--
. Çıkış rutini yeniden kullanarak baytları kurtarıyorum o/!?l
(o aynayı hem giriş hem çıkış olarak bile yeniden kullanıyorum). Durumu depolamak için birden fazla yığın kullanıyorum (çıktısı var 12
veya --
) ve hangi durumda çıkmam gerektiğini seçiyorum v>]?v
.
Açıklamalar çok yakında! (1/2)