MATLAB - 89 байт
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Досить зрозуміла. Спочатку створіть функціональну ручку, щоб захопити поточну годину системного годинника. Потім відображаємо Legen... wait for it...
з поверненням каретки, а потім переходимо до while
циклу, де ми продовжуємо перевіряти, чи поточна година, додана з 1, не дорівнює поточній годині. Якщо це так, продовжуйте петлю. Лише до того моменту, коли відбудеться наступна година, ми відображаємось dary!
і після цього відбувається повернення вагона.
Година MATLAB заснована на 24-годинній індексації, тому mod
операція з базою 24 необхідна для обробки проливу з 11 вечора (23:00) до півночі (00:00).
Незначна примітка
Для hour
функції потрібна панель інструментів «Фінансовий часовий ряд». now
Функція не підлягає обмеженню цього, але вона витягує поточну дату і час як серійний номер , який , hour
таким чином , використовує для обчислення поточного години.
Хочете запустити це в Octave?
Звичайно! Оскільки в Octave немає цієї панелі інструментів, нам просто доведеться змінити hour
функцію так, щоб вона викликала, datevec
який повертає вектор із 6 елементів - по одному на рік, місяць, день, годину, хвилини та секунди. Вам просто доведеться витягнути четвертий елемент виводу:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Додаткові символи змушують рішення досягати 98 байт, але ви зможете запустити це в Octave. Зверніть увагу на індексацію на місці без тимчасової змінної у функційній ручці.
Немає інструментарію фінансових часових рядів?
Якщо ви хочете запустити це в MATLAB без панелі інструментів «Фінансовий часовий ряд», оскільки ви не можете індексувати змінні відразу без тимчасової, для запису знадобиться трохи більше байтів:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Перший отримує поточний час і дату і зберігає їх у змінну h
, а також зберігає її в автоматичній змінній, що називається ans
. Після цього ми продовжуємо циклічно та перевіряти, чи поточна година не дорівнює наступній годині. При кожній ітерації ми постійно оновлюємо автоматичну змінну до поточного часу та дати. Як тільки наступна година співпадає з поточним часом і датою, ми відображаємо останню частину рядка і виходимо. Це підштовхує кількість байтів до 114.
Також врахуйте, що ви не можете спробувати це в Інтернеті. У перекладачів Octave в Інтернеті буде обмежений час, коли виконується код, і оскільки це while
цикл, який чекає наступної години, ви отримаєте тайм-аут, очікуючи запуску коду. Найкраще, що ви можете зробити, це запустити його на власній машині і перевірити, чи працює він.