(Примечание: хотя связаны, эта проблема не является дубликатом этого одного , потому что он требует определения високосных секунд автоматически , а не жестко прописывать их раз, и не является дубликатом этого одного , потому что большая часть трудностей происходит от определения времени без секундной перекоса что-то, что большинство API времени не делает по умолчанию. Таким образом, решение, скорее всего, будет отличаться от решения любой из этих проблем.)
Мы приближаемся к концу 2016 года, но это займет немного больше времени, чем ожидают большинство людей. Итак, вот задача отпраздновать нашу дополнительную секунду в этом году.
Выведите текущее время в формате UTC в виде часов, минут, секунд. (Например, допустимые форматы вывода для полудня включают 12:00:00
и [12,0,0]
; форматирование здесь не имеет большого значения.)
Однако есть и поворот: ваша программа должна правильно обрабатывать дополнительные секунды , как прошлые, так и будущие. Это означает, что ваша программа должна будет получить список дополнительных секунд из какого-либо онлайн или автоматически обновляемого / обновляемого источника. Вы можете подключиться к Интернету, чтобы получить это, если хотите. Однако вы можете подключиться только к URL-адресу, который предшествует этой проблеме (т. Е. Не загружать части вашей программы из другого места), и вы не можете использовать подключение для определения текущего времени (в частности: ваша программа должна функционировать, даже если любая попытка доступа Интернет возвращает страницу, которая устарела до 24 часов).
API-интерфейсы большинства операционных систем по умолчанию для текущего времени будут искажены вокруг високосных секунд, чтобы скрыть их от программ, которые в противном случае могли бы быть перепутаны. Таким образом, основная трудность этой задачи состоит в том, чтобы найти метод или API, чтобы отменить это, и определить истинное неизмененное текущее время в UTC.
Теоретически, ваша программа должна быть совершенно точной, если она запускается на бесконечно быстром компьютере, и не должна намеренно запускаться более чем на ноль времени. (Конечно, на практике ваша программа будет работать на несовершенном компьютере, и поэтому, вероятно, не будет работать мгновенно. Вам не нужно беспокоиться об этом как обесценивающем результаты, но вы не должны зависеть от него для правильности вашей программы. )
Ваша программа должна работать независимо от того, на какой часовой пояс установлены системные часы. (Однако он может запросить информацию из операционной системы или среды о том, какой часовой пояс используется, и может предположить, что ответ точный.)
Как Код-гольф, самая короткая программа выигрывает. Удачи!