(Anmerkung: Obwohl im Zusammenhang, ist diese Herausforderung nicht ein Duplikat dieser einen , weil es Sekunden Sprung Bestimmung erfordert automatisch statt hartzucodieren ihrer Zeit, und ist kein Duplikat dieser einen , weil die meisten Schwierigkeiten kommt , die Zeit ohne Sprung zweite Schrägstellung Bestimmung Dies ist etwas, was die meisten APIs normalerweise nicht standardmäßig tun. Daher sieht eine Lösung wahrscheinlich anders aus als eine Lösung für eine dieser Herausforderungen.)
Wir kommen bis Ende 2016, aber es wird etwas länger dauern, als die meisten Leute erwarten. Hier ist also eine Herausforderung, um unsere zusätzliche Sekunde in diesem Jahr zu feiern.
Geben Sie die aktuelle Zeit in UTC als Stunden, Minuten, Sekunden aus. (Zu den legitimen Ausgabeformaten für den Mittag gehören beispielsweise 12:00:00
und [12,0,0]
; die Formatierung ist hier nicht besonders wichtig.)
Allerdings gibt es einen Haken: Ihr Programm umgehen müssen Schaltsekunden angemessen, sowohl Vergangenheit und Zukunft. Dies bedeutet, dass Ihr Programm eine Liste von Schaltsekunden von einer online oder automatisch aktualisierten / aktualisierbaren Quelle erhalten muss. Sie können eine Verbindung zum Internet herstellen, um dies zu erhalten, wenn Sie dies wünschen. Sie dürfen jedoch nur eine Verbindung zu einer URL herstellen, die vor dieser Herausforderung liegt (dh keine Teile Ihres Programms von einer anderen Stelle herunterladen), und Sie dürfen die Verbindung nicht verwenden, um die aktuelle Uhrzeit zu bestimmen (insbesondere: Ihr Programm muss funktionieren, auch wenn versucht wird, darauf zuzugreifen Das Internet gibt eine Seite zurück, die bis zu 24 Stunden alt ist.
Die Standard-APIs der meisten Betriebssysteme für die aktuelle Zeit verschieben die Zeit um Schaltsekunden, um sie vor Programmen zu verbergen, die sonst möglicherweise verwirrt wären. Daher besteht die Hauptschwierigkeit dieser Herausforderung darin, eine Methode oder eine API zu finden, um dies rückgängig zu machen, und die wahre unveränderte aktuelle Zeit in UTC zu ermitteln.
Theoretisch sollte Ihr Programm absolut genau sein, wenn es auf einem unendlich schnellen Computer ausgeführt wird, und es darf nicht absichtlich länger als null Zeit dauern. (In der Praxis wird Ihr Programm natürlich auf einem fehlerhaften Computer ausgeführt und daher wahrscheinlich nicht sofort ausgeführt. Sie müssen sich keine Sorgen machen, dass die Ergebnisse dadurch ungültig werden, müssen sich jedoch nicht auf die Richtigkeit Ihres Programms verlassen. )
Ihr Programm muss unabhängig von der Zeitzone funktionieren, auf die die Systemuhr eingestellt ist. (Möglicherweise werden jedoch vom Betriebssystem oder der Umgebung Informationen darüber angefordert, welche Zeitzone verwendet wird, und es kann davon ausgegangen werden, dass die Antwort korrekt ist.)
Als Code-Golf gewinnt das kürzeste Programm. Viel Glück!