(Nota: sebbene correlata, questa sfida non è un duplicato di questo perché richiede la determinazione automatica dei secondi bisestili piuttosto che la codifica dei loro tempi, e non è un duplicato di questo perché la maggior parte delle difficoltà deriva dal determinare il tempo senza saltare i secondi obliqui , cosa che la maggior parte delle volte le API non eseguono per impostazione predefinita. Pertanto, è probabile che una soluzione appaia diversa da una soluzione a una di queste sfide.)
Arriveremo alla fine del 2016, ma ci vorrà un po 'più di tempo di quanto molti si aspettino. Quindi ecco una sfida che celebra il nostro secondo in più quest'anno.
Emette l'ora corrente in UTC, come ore, minuti, secondi. (Ad esempio, i formati di output legittimi per mezzogiorno includeranno 12:00:00
e [12,0,0]
; la formattazione non è estremamente importante qui.)
Tuttavia, c'è una svolta: il tuo programma deve gestire i secondi bisestili in modo appropriato, sia passato che futuro. Ciò significa che il tuo programma dovrà ottenere un elenco di secondi bisestili da una fonte online o automaticamente aggiornata / aggiornabile. Se lo desideri, puoi connetterti a Internet per ottenerlo. Tuttavia, è possibile connettersi solo a un URL che precede questa sfida (ovvero non scaricare parti del programma da altrove) e non è possibile utilizzare la connessione per determinare l'ora corrente (in particolare: il programma deve funzionare anche se qualsiasi tentativo di accedere Internet restituisce una pagina non aggiornata fino a 24 ore).
La maggior parte delle API predefinite dei sistemi operativi per l'ora corrente distorcerà il tempo intorno ai secondi bisestili per nasconderle da programmi che potrebbero altrimenti essere confusi. Pertanto, la principale difficoltà di questa sfida è trovare un metodo o un'API per annullarlo e calcolare l'ora reale non modificata in UTC.
In teoria, il tuo programma dovrebbe essere perfettamente accurato se eseguito su un computer infinitamente veloce e non deve impiegare intenzionalmente più di zero tempo per essere eseguito. (Naturalmente, in pratica, il tuo programma verrà eseguito su un computer imperfetto, quindi probabilmente non verrà eseguito istantaneamente. Non devi preoccuparti che questo invalidi i risultati, ma non devi dipendere da esso per la correttezza del tuo programma. )
Il programma deve funzionare indipendentemente dal fuso orario su cui è impostato l'orologio di sistema. (Tuttavia, può richiedere informazioni al sistema operativo o all'ambiente su quale fuso orario viene utilizzato e può presumere che la risposta sia accurata.)
Come code-golf , vince il programma più breve. In bocca al lupo!