*> <> , 43 42 byte
<v":1200----"
S>@5dov>~r@@}r5
1&}o:&<^!?:-
Hãy thử nó ở đây!
Tôi cảm thấy mình có thể rút ngắn lại, tôi có một vài ý tưởng để thử ... Về cơ bản, điều này tạo ra một đống :1200----
. Nó cô lập :
và lật ngăn xếp, chèn :
vào giữa một trong hai ----
hoặc 1200
(tùy thuộc vào bất kỳ vị trí nào ở cuối ngăn xếp).
Tôi cũng nên lưu ý rằng chỉ * * <> hướng dẫn sử dụng này là S
(ngủ), nếu không đây là chương trình> <> thích hợp.
Cập nhật: Đã lưu 1 byte bằng cách dịch chuyển :
sang phải thay vì bảo vệ nó bằng một thanh ghi.
Giải trình
Khởi tạo
<v":1200----"
Ở đây chúng tôi xây dựng ngăn xếp mà chúng tôi sẽ sử dụng cho vòng đời của chương trình.
< move the IP left
":1200----" push ":1200----" to the stack
v move the IP down into "output time"
Thời gian đầu ra
>@5dov
1&}o:&<^!?:-
Đây là phần mà thời gian thực sự được xuất ra. Đầu tiên 5 được đẩy vào ngăn xếp để vòng lặp bên dưới biết chạy 5 lần.
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"
Phục hồi và trao đổi
S >~r@@}r5
Ở đây chúng tôi phục hồi :
từ vị trí mà nó tạo ra sau đầu ra và chúng tôi kết thúc với một ngăn xếp đảo ngược. Điều này thực sự thoát ra "thời gian đầu ra" độc đáo, gây ra một vòng lặp vô hạn.
> 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
Giải pháp 45 byte
<v[5"12:00"1
d/S5
o/!?l
v>]?v
00.>0"--:--"5[
Hãy thử nó ở đây!
Đây cũng là một chương trình> <>.
Tôi thực sự nghĩ rằng nó có thể lưu một số byte với phương pháp này. Điều này khá đơn giản là đầu ra 12:00
, sau đó --:--
. Tôi lưu byte bằng cách sử dụng lại thường trình đầu ra o/!?l
(tôi thậm chí còn sử dụng lại nhân bản đó như cả mục nhập và thoát). Tôi sử dụng nhiều ngăn xếp để lưu trữ trạng thái (có đầu ra 12
hoặc --
) và chọn trạng thái tôi nên xuất với v>]?v
.
Giải thích đến sớm! (1/2)