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 необходима для обработки перетока с 23:00 (23:00) до полуночи (00:00).
Незначительная нота
Для этой hourфункции требуется набор инструментов Финансовый временной ряд. nowФункция не подлежит ограничению этого, но она извлекает текущую дату и время как серийный номер , который , hourтаким образом , использует для вычисления текущего часа.
Хотите запустить это в Октаве?
Конечно! Поскольку у 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 без набора инструментов Financial Time Series, поскольку вы не можете сразу индексировать переменные без временной переменной, это займет немного больше байтов для записи:
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цикл, ожидающий следующего часа, вы получите тайм-аут при ожидании выполнения кода. Лучшее, что вы можете сделать, это запустить его на своем компьютере и убедиться, что он работает.