MATLAB - 89 byte
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Khá tự giải thích. Đầu tiên, tạo một tay cầm chức năng để lấy giờ hiện tại của đồng hồ hệ thống. Sau đó, hiển thị Legen... wait for it...
với lợi nhuận vận chuyển, và sau đó chúng tôi đi vào một while
vòng lặp trong đó chúng tôi tiếp tục kiểm tra xem giờ hiện tại được thêm bằng 1 không bằng với giờ hiện tại. Nếu có, hãy tiếp tục lặp. Chỉ cho đến khi tức thì khi giờ tiếp theo xảy ra, chúng tôi sẽ hiển thị dary!
và trở lại vận chuyển xảy ra sau đó.
Giờ của MATLAB dựa trên lập chỉ mục 24 giờ, do đó, mod
hoạt động với cơ sở 24 là bắt buộc để xử lý tràn từ 11 giờ tối (23:00) đến nửa đêm (00:00).
Lưu ý nhỏ
Các hour
chức năng đòi hỏi Financial Time Series hộp công cụ. Các now
chức năng không phụ thuộc vào giới hạn này, nhưng nó lấy ngày hiện tại và thời gian như một số serial mà hour
do đó sử dụng để tính toán giờ hiện hành.
Bạn muốn chạy cái này trong Octave?
Chắc chắn rồi! Vì Octave không có hộp công cụ này, chúng tôi chỉ cần sửa đổi hour
hàm để nó gọi datevec
hàm vectơ gồm 6 phần tử - một phần tử cho mỗi năm, tháng, ngày, giờ, phút và giây. Bạn chỉ cần trích xuất phần tử thứ tư của đầu ra:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Các ký tự bổ sung làm cho giải pháp lên tới 98 byte, nhưng bạn sẽ có thể chạy nó trong Octave. Lưu ý lập chỉ mục tại chỗ mà không có biến tạm thời trong hàm xử lý.
Không có hộp công cụ chuỗi thời gian tài chính?
Nếu bạn muốn chạy cái này trong MATLAB mà không có Hộp công cụ chuỗi thời gian tài chính, bởi vì bạn không thể lập chỉ mục thành các biến ngay lập tức mà không có tạm thời, điều này sẽ mất thêm một chút byte để viết:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Điều này đầu tiên có được thời gian và ngày hiện tại và lưu trữ nó vào biến h
cũng như lưu trữ này vào biến tự động được gọi ans
. Sau đó, chúng tôi tiếp tục lặp và kiểm tra xem giờ hiện tại không bằng giờ tiếp theo. Ở mỗi lần lặp, chúng tôi tiếp tục cập nhật biến tự động với thời gian và ngày hiện tại. Ngay sau giờ tiếp theo khớp với ngày giờ hiện tại, chúng tôi sẽ hiển thị phần cuối của chuỗi và thoát. Điều này đẩy số byte lên 114.
Cũng lưu ý rằng bạn không thể thử trực tuyến này. Thông dịch viên Octave trực tuyến sẽ có giới hạn thời gian khi mã thực thi và vì đây là while
vòng lặp chờ giờ tiếp theo xảy ra, bạn sẽ có thời gian chờ trong khi chờ mã chạy. Điều tốt nhất bạn có thể làm là chạy nó trên máy của riêng bạn và kiểm tra xem nó có hoạt động không.