Thử thách:
Tạo một chương trình hoặc hàm lấy đầu vào số nguyên, đầu ra một chương trình / hàm mới như được chỉ định bên dưới.
Đầu vào:
Số nguyên n
: Thời gian tính bằng giây trước khi Bom Thời gian phát nổ.
Đầu ra:
Chương trình ban đầu có thời gian tính bằng giây n
là đầu vào, sẽ xuất ra một chương trình / chức năng mới thực hiện như sau:
- Đã
n
vài giây trôi qua kể từ khi chương trình trước được chạy? InBOOM!
- Khác: In một chương trình / chức năng, khi tự chạy, đặt lại bộ hẹn giờ trở lại
n
giây (và hoạt động giống như chương trình / chức năng được xuất ra đầu tiên).
LƯU Ý: Nó không hoàn toàn giống với chương trình / chức năng được xuất ra đầu tiên (ít nhất là trong hầu hết các ngôn ngữ), vì thời gian bắt đầu đã thay đổi (xem ví dụ làm rõ bên dưới).
Ví dụ mã giả:
Giả sử chương trình gốc là ABC
và đầu vào là 60
giây:
ABC
& 60
đầu ra DEF(60)
.
- Nếu
DEF(60)
được chạy trong vòng 60 giây, nó sẽ xuất raDEF_G(60)
, hoạt động giống hệt nhưDEF(60)
, nhưng với thời gian bắt đầu mới. - Nếu
DEF(60)
được chạy sau 60 giây, nó sẽ xuất raBOOM!
.
Ví dụ làm rõ ý tôi muốn nói với 'thời gian bắt đầu':
- Chương trình cơ sở với
60
giây đầu vào được chạy tại12:00:00
. Nó xuất chương trình đầu ra đầu tiên với thời gian bắt đầu là12:00:00
. - Chương trình đầu ra đầu tiên này với thời gian bắt đầu
12:00:00
được chạy tại12:00:45
. Nó xuất ra một chương trình đầu ra thứ hai với thời gian bắt đầu là12:00:45
. - Chương trình đầu ra thứ ba này với thời gian bắt đầu
12:00:45
được chạy tại12:01:25
. Nó xuất ra một chương trình đầu ra thứ tư với thời gian bắt đầu là12:01:25
. - Chương trình đầu ra thứ tư này với thời gian bắt đầu
12:01:25
được chạy tại12:05:00
. Nó sẽ xuất raBOOM!
.
Lưu ý cách đầu ra đầu tiên sẽ in BOOM!
sau đó 12:01:00
, nhưng chương trình đầu ra đã tiến triển như vậy mặc dù 12:01:25
ở bước 3, nó vẫn sẽ xuất chương trình tiếp theo thay vì BOOM!
(vì các chương trình đầu ra có thời gian bắt đầu vượt quá chương trình đầu ra đầu tiên đó) .
Quy tắc thử thách:
- Quy tắc quine mặc định áp dụng.
- Ít nhất
n
vài giây đã trôi qua. Vì vậy, nếu đầu vào là60
và thời gian bắt đầu12:00:00
, tại12:01:00
nó vẫn sẽ xuất chương trình v2, nhưng tại12:01:01
đó sẽ xuất raBOOM!
. - Các chương trình đầu ra sẽ không nhận bất kỳ đầu vào nào ( ngoại trừ một tham số không sử dụng trống nếu nó ngắn hơn ). Thời gian bắt đầu phải được trao cho các chương trình tiếp theo dưới dạng giá trị 'được mã hóa cứng' (đó là lý do tại sao đầu ra của chương trình đầu ra không giống hệt như trước đó (trong hầu hết các ngôn ngữ).
- Chỉ kích thước của chương trình / chức năng chính của bạn được tính theo byte.
- Bạn có thể xuất chương trình / hàm dưới dạng chuỗi (hoặc định dạng hợp lý có thể so sánh, như byte / mảng ký tự / danh sách), dưới dạng hàm nếu ngôn ngữ của bạn hỗ trợ điều này hoặc các định dạng hợp lý khác (vui lòng hỏi nếu bạn không chắc chắn).
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng.
Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'. - Các quy tắc chuẩn áp dụng cho câu trả lời của bạn, vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, các chương trình đầy đủ. Cuộc gọi của bạn.
- Lỗ hổng mặc định bị cấm.
- Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn.
- Ngoài ra, xin vui lòng thêm một lời giải thích nếu cần thiết.