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 while
ciclo 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' mod
operazione con la base 24 è necessaria per gestire la fuoriuscita dalle 23:00 (23:00) a mezzanotte (00:00).
Nota minore
La hour
funzione richiede la casella degli strumenti Serie temporali finanziaria. La now
funzione non è soggetta a questa limitazione, ma recupera la data e l'ora correnti come un numero seriale che hour
quindi utilizza per calcolare l'ora corrente.
Vuoi eseguirlo in Octave?
Sicuro! Poiché Octave non ha questo toolbox, dovremmo solo modificare la hour
funzione in modo che chiami datevec
restituendo 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 while
loop 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.