MATLAB - 89 bytes
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Bastante autoexplicativo. Primero, cree un controlador de función para capturar la hora actual del reloj del sistema. Luego, se visualiza Legen... wait for it...
con un retorno de carro, y luego entramos en un while
bucle donde seguimos verificando para ver si la hora actual agregada con 1 no es igual a la hora actual. Si es así, sigue en bucle. Solo hasta el instante en que sucede la siguiente hora, mostramos dary!
y luego se produce un retorno de carro.
La hora de MATLAB se basa en la indexación de 24 horas, por lo que mod
se requiere la operación con la base 24 para manejar los derrames desde las 23:00 (23:00) hasta la medianoche (00:00).
Nota menor
La hour
función requiere la caja de herramientas Financial Time Series. La now
función no está sujeta a esta restricción, pero recupera la fecha y hora actuales como un número de serie que hour
se utiliza para calcular la hora actual.
¿Quieres ejecutar esto en Octave?
¡Seguro! Debido a que Octave no tiene esta caja de herramientas, solo tendríamos que modificar la hour
función para que llame datevec
y devuelva un vector de 6 elementos, uno para cada año, mes, día, hora, minutos y segundos. Simplemente tendría que extraer el cuarto elemento de la salida:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Los caracteres adicionales hacen que la solución suba a 98 bytes, pero podrá ejecutar esto en Octave. Tenga en cuenta la indexación in situ sin una variable temporal en el controlador de función.
¿Sin caja de herramientas de la serie de tiempo financiero?
Si desea ejecutar esto en MATLAB sin la Caja de herramientas de la serie financiera, porque no puede indexar las variables inmediatamente sin una temporal, esto tomará un poco más de bytes para escribir:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Primero obtiene la fecha y hora actuales y la almacena en la variable h
, así como la almacena en la variable automática llamada ans
. Después, seguimos haciendo bucles y comprobando si la hora actual no es igual a la siguiente hora. En cada iteración, seguimos actualizando la variable automática con la hora y fecha actuales. Tan pronto como la próxima hora coincida con la hora y fecha actuales, mostramos la última parte de la cadena y salimos. Esto empuja el conteo de bytes a 114.
También tenga en cuenta que no puede probar esto en línea. Los intérpretes de Octave en línea tendrán un límite de tiempo para cuando se ejecute el código, y debido a que este es un while
ciclo que espera la próxima hora, tendrá un tiempo de espera mientras espera que se ejecute el código. Lo mejor que puede hacer es ejecutarlo en su propia máquina y verificar que funcione.