(Nota: embora relacionado, esse desafio não é uma duplicata deste, porque requer determinar segundos bissextos automaticamente, em vez de codificar seus tempos, e não é uma duplicata deste, porque a maior parte da dificuldade vem da determinação do tempo sem distorção do segundo bissexto. , algo que as APIs na maioria das vezes não fazem por padrão. Sendo assim, é provável que uma solução pareça diferente de uma solução para qualquer um desses desafios.)
Estamos chegando ao final de 2016, mas vai demorar um pouco mais do que a maioria das pessoas espera. Então, aqui está um desafio celebrando nosso segundo extra este ano.
Transmita a hora atual no UTC, como horas, minutos, segundos. (Por exemplo, os formatos de saída legítimos para o meio-dia incluiriam 12:00:00
e [12,0,0]
; a formatação não é muito importante aqui.)
No entanto, há uma reviravolta: seu programa deve lidar com segundos bissextos de maneira apropriada, tanto no passado quanto no futuro. Isso significa que seu programa precisará obter uma lista de segundos bissextos de alguma fonte online ou atualizada / atualizável automaticamente. Você pode se conectar à Internet para obter isso, se desejar. No entanto, você pode conectar-se apenas a um URL que antecede esse desafio (ou seja, sem baixar partes do seu programa de outro lugar) e não pode usar a conexão para determinar a hora atual (especificamente: o seu programa deve funcionar mesmo se houver alguma tentativa de acessar a Internet retorna uma página com até 24 horas de atraso).
As APIs padrão da maioria dos sistemas operacionais para o horário atual irão distorcer o tempo em segundos, para ocultá-los de programas que, de outra forma, poderiam ser confundidos. Como tal, a principal dificuldade desse desafio é encontrar um método ou uma API para desfazer isso e calcular o verdadeiro horário atual não modificado no UTC.
Em teoria, seu programa deve ser perfeitamente preciso se for executado em um computador infinitamente rápido e não deve intencionalmente levar mais que zero tempo para ser executado. (Obviamente, na prática, seu programa será executado em um computador imperfeito e, portanto, provavelmente não será executado instantaneamente. Você não precisa se preocupar com isso invalidando os resultados, mas não deve depender dele para a correção do seu programa. )
Seu programa deve funcionar independentemente do fuso horário em que o relógio do sistema está definido. (No entanto, ele pode solicitar informações do sistema operacional ou do ambiente sobre o fuso horário em uso e pode assumir que a resposta é precisa.)
Como um código de golfe , o programa mais curto vence. Boa sorte!