*> <> , 43 42 byte
<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-
Coba di sini!
Saya merasa saya harus bisa membuat ini lebih pendek, saya punya beberapa ide untuk mencoba ... Pada dasarnya ini membuat setumpuk :1200----
. Ini mengisolasi :
dan membalik tumpukan, memasukkan :
di tengah salah satu ----
atau 1200
(tergantung mana yang ada di ujung tumpukan).
Saya juga harus mencatat bahwa satu-satunya *> <> instruksi yang digunakan adalah S
(sleep), jika tidak, ini adalah program yang tepat> <>.
Pembaruan: Disimpan 1 byte dengan menggeser :
ke kanan alih-alih melindunginya dengan register.
Penjelasan
Inisialisasi
<v":1200----"
Di sini kita membangun tumpukan yang akan kita gunakan untuk umur program.
< move the IP left
":1200----" push ":1200----" to the stack
v move the IP down into "output time"
Waktu output
>@5dov
1&}o:&<^!?:-
Ini adalah bagian di mana waktu sebenarnya dikeluarkan. Pertama 5 didorong ke tumpukan sehingga loop di bawah ini tahu untuk menjalankan 5 kali.
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"
Pulihkan dan tukar
S >~r@@}r5
Di sini kita memulihkan :
dari posisi yang dihasilkan setelah output, dan kita berakhir dengan tumpukan terbalik. Ini sebenarnya keluar menjadi "waktu keluaran" dengan baik, menyebabkan loop tak terbatas.
> 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
Solusi 45 byte
<v[5"12:00"1
d/S5
o/!?l
v>]?v
00.>0"--:--"5[
Coba di sini!
Yang ini pada dasarnya juga merupakan program> <>.
Saya benar-benar berpikir itu akan dapat menghemat beberapa byte dengan pendekatan ini. Ini cukup sederhana keluaran 12:00
, kemudian --:--
. Saya menyimpan byte dengan menggunakan kembali output rutin o/!?l
(saya bahkan menggunakan kembali mirror itu sebagai entri dan keluar). Saya menggunakan banyak tumpukan untuk menyimpan status (memiliki keluaran 12
atau --
), dan memilih negara mana yang harus saya keluaran v>]?v
.
Penjelasan segera hadir! (1/2)