(Nota: aunque relacionado, este desafío no es un duplicado de este porque requiere determinar los segundos bisiestos automáticamente en lugar de codificar sus tiempos, y no es un duplicado de este porque la mayor parte de la dificultad proviene de determinar el tiempo sin sesgar el segundo salto , algo que la mayoría de las veces las API no hacen de manera predeterminada. Como tal, es probable que una solución se vea diferente de una solución a cualquiera de esos desafíos)
Estamos llegando a finales de 2016, pero llevará un poco más de lo que la mayoría de la gente espera. Así que aquí hay un desafío para celebrar nuestro segundo extra este año.
Salida de la hora actual en UTC, como horas, minutos, segundos. (Por ejemplo, los formatos de salida legítimos para el mediodía incluirían 12:00:00
y [12,0,0]
; el formato no es muy importante aquí).
Sin embargo, hay un giro: su programa debe manejar los segundos intercalares adecuadamente, tanto en el pasado como en el futuro. Esto significa que su programa tendrá que obtener una lista de segundos intercalares de alguna fuente en línea o actualizada / actualizable automáticamente. Puede conectarse a Internet para obtener esto si lo desea. Sin embargo, solo puede conectarse a una URL que sea anterior a este desafío (es decir, no descargar partes de su programa desde otro lugar), y no puede usar la conexión para determinar la hora actual (específicamente: su programa debe funcionar incluso si intenta acceder Internet devuelve una página que está inactiva hasta 24 horas).
La mayoría de las API predeterminadas de los sistemas operativos para la hora actual sesgarán el tiempo en segundos bisiestos para ocultarlas de los programas que de otro modo podrían confundirse. Como tal, la principal dificultad de este desafío es encontrar un método o una API para deshacer eso, y calcular la hora actual no modificada en UTC.
En teoría, su programa debe ser perfectamente preciso si se ejecuta en una computadora infinitamente rápida, y no debe tomar más de cero intencionalmente en ejecutarse. (Por supuesto, en la práctica, su programa se ejecutará en una computadora imperfecta, por lo que probablemente no se ejecutará instantáneamente. No tiene que preocuparse de que esto invalide los resultados, pero no debe depender de él para la corrección de su programa. )
Su programa debe funcionar independientemente de la zona horaria en la que esté configurado el reloj del sistema. (Sin embargo, puede solicitar información del sistema operativo o del entorno sobre qué zona horaria se está utilizando y puede suponer que la respuesta es precisa).
Como código de golf , gana el programa más corto. ¡Buena suerte!