MATLAB - 89 byte
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Abbastanza autoesplicativo. Innanzitutto, crea un handle di funzione per afferrare l'ora corrente dell'orologio di sistema. Quindi, visualizziamo Legen... wait for it...con un ritorno a capo, quindi entriamo in un whileciclo in cui continuiamo a verificare se l'ora corrente aggiunta con 1 non è uguale all'ora corrente. Se lo è, continua ad eseguire il loop. Solo fino all'istante in cui si verifica l'ora successiva, visualizziamo dary!e dopo si verifica un ritorno a capo.
L'ora di MATLAB si basa sull'indicizzazione delle 24 ore, quindi l' modoperazione con la base 24 è necessaria per gestire la fuoriuscita dalle 23:00 (23:00) a mezzanotte (00:00).
Nota minore
La hourfunzione richiede la casella degli strumenti Serie temporali finanziaria. La nowfunzione non è soggetta a questa limitazione, ma recupera la data e l'ora correnti come un numero seriale che hourquindi utilizza per calcolare l'ora corrente.
Vuoi eseguirlo in Octave?
Sicuro! Poiché Octave non ha questo toolbox, dovremmo solo modificare la hourfunzione in modo che chiami datevecrestituendo un vettore di 6 elementi, uno per ciascuno di anno, mese, giorno, ora, minuti e secondi. Dovresti solo estrarre il quarto elemento dell'output:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
I caratteri aggiuntivi rendono la soluzione fino a 98 byte, ma sarai in grado di eseguirlo in Octave. Notare l'indicizzazione sul posto senza una variabile temporanea nell'handle della funzione.
Nessuna casella degli strumenti per le serie temporali finanziarie?
Se vuoi eseguirlo in MATLAB senza la Casella degli strumenti delle serie temporali finanziarie, poiché non puoi indicizzare immediatamente le variabili senza una temporanea, ciò richiederà un po 'più di byte per scrivere:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Questo prima ottiene l'ora e la data correnti e la memorizza nella variabile h, oltre a memorizzarla nella variabile automatica chiamata ans. Dopo, continuiamo a fare il loop e controlliamo se l'ora corrente non è uguale all'ora successiva. Ad ogni iterazione, continuiamo ad aggiornare la variabile automatica con l'ora e la data correnti. Non appena l'ora successiva coincide con l'ora e la data correnti, visualizziamo l'ultima parte della stringa ed esci. Questo porta il conteggio dei byte a 114.
Inoltre, tieni presente che non puoi provarlo online. Gli interpreti di Octave online avranno un limite di tempo per l'esecuzione del codice e poiché si tratta di un whileloop in attesa dell'ora successiva, si verificherà un timeout durante l'attesa dell'esecuzione del codice. La cosa migliore che puoi fare è eseguirlo sul tuo computer e verificare che funzioni.