MATLAB - 89 bytes
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Bastante auto-explicativo. Primeiro, crie um identificador de função para pegar a hora atual do relógio do sistema. Em seguida, exiba Legen... wait for it...com um retorno de carro e, em seguida, entramos em um whileloop em que continuamos verificando se a hora atual adicionada com 1 não é igual à hora atual. Se for, continue em loop. Somente até o instante em que a próxima hora acontece, é exibido dary!e um retorno de carro ocorre depois.
A hora do MATLAB é baseada na indexação de 24 horas, portanto, a modoperação com a base 24 é necessária para lidar com derramamentos de 23:00 (23:00) até meia-noite (00:00).
Nota menor
A hourfunção requer a caixa de ferramentas Financial Time Series. A nowfunção não está sujeita a essa restrição, mas recupera a data e a hora atuais como um número de série que, hourportanto, utiliza para calcular a hora atual.
Deseja executar isso no Octave?
Certo! Como o Octave não possui essa caixa de ferramentas, basta modificar a hourfunção para que ela chame, datevecretornando um vetor de 6 elementos - um para cada ano, mês, dia, hora, minutos e segundos. Você apenas precisaria extrair o quarto elemento da saída:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Os caracteres adicionais fazem a solução subir para 98 bytes, mas você poderá executá-lo no Octave. Observe a indexação no local sem uma variável temporária no identificador da função.
Nenhuma caixa de ferramentas de séries temporais financeiras?
Se você deseja executar isso no MATLAB sem a Financial Time Series Toolbox, porque não é possível indexar as variáveis imediatamente sem a temporária, isso levará um pouco mais de bytes para escrever:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Isso primeiro obtém a hora e a data atuais e as armazena na variável h, além de armazená- las na variável automática chamada ans. Depois, continuamos repetindo e verificando se a hora atual não é igual à próxima hora. A cada iteração, continuamos atualizando a variável automática com a hora e a data atuais. Assim que a próxima hora corresponder à hora e data atuais, exibiremos a última parte da sequência e sairemos. Isso eleva a contagem de bytes para 114.
Observe também que você não pode tentar isso online. Os intérpretes da Oitava on-line terão um limite de tempo para a execução do código e, como esse é um whileloop aguardando a próxima hora, você receberá um tempo limite enquanto aguarda a execução do código. A melhor coisa que você pode fazer é executá-lo em sua própria máquina e verificar se funciona.