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
цикл, ожидающий следующего часа, вы получите тайм-аут при ожидании выполнения кода. Лучшее, что вы можете сделать, это запустить его на своем компьютере и убедиться, что он работает.