2017 ist fast da!


17

Herausforderung

Die Herausforderung ist einfach:

Nehmen Sie keine Eingaben und geben Sie die folgende Meldung aus:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

Eine Häufigkeit, die der Anzahl der Stunden vor oder nach Mitternacht UTC am 31. Dezember 2016 entspricht.

Beispiele

Wenn es zum Beispiel 19:01 UTC am 31. Dezember ist, sollten Sie Folgendes ausgeben:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

Wenn es 23:24 UTC am 31. Dezember ist, sollten Sie Folgendes ausgeben:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 

und wenn es am 1. Januar um 1:42 UTC ist, solltest du Folgendes ausgeben:

 _     __    __
  |   |  | |   |
  |_  |__| |   | 
 _     __    __
  |   |  | |   |
  |_  |__| |   | 

Klarstellung: Wenn es 10 bis 23 Uhr am 31. Dezember ist, sollten Sie zwei, 11 bis 12 Uhr am 31. Dezember einen, 00 bis 01 Uhr am 1. Januar einen, 01 bis 02 Uhr am 1. Januar zwei usw. ausgeben.

Regeln

  • Keine Eingaben
  • Nachgestellte Zeilen oder Leerzeichen sind in Ordnung.
  • Ihr Programm sollte zu jeder Zeit und an jedem Tag funktionieren, an dem ich es ausführe (allerdings mit einer großen Ausgabe). Zum Beispiel sollte Ihr Code am 2. Januar um 00:15 Uhr 25 Mal ausgegeben werden.

(Dies ist meine erste Frage zu Code Golf. Wenn ich etwas Wichtiges ausgelassen habe, lassen Sie es mich bitte wissen.)

Dies ist Code Golf, also gewinnen die kürzesten Teile


Wird die Anzahl der Stunden auf die nächste Ganzzahl gerundet? Wenn es innerhalb einer halben Stunde nach Mitternacht des neuen Jahres ist, sollte es keine Ausgabe geben?
Greg Martin

@ GregMartin Siehe meine Bearbeitung zur Klarstellung.
Quantum Spaghettification

Was soll passieren, wenn ich das Programm am 3. Januar starte?
Betseg

@betseg ihr habt gerade drüber nachgedacht. Siehe Bearbeiten :). Es sollte genauso funktionieren, auch wenn die Ausgabe groß sein wird.
Quantum Spaghettification

Schöne erste Frage. Rundungshinweis: Die Anzahl der Wiederholungen ist der absolute Wert der Differenz zwischen der aktuellen Uhrzeit UCT und 0:00:00 am 1. Januar UTC, aufgerundet. Richtig?
EDC65

Antworten:


6

JavaScript (ES6), 107

Als anonyme Methode ohne Parameter

Hinweis 1483228800000istDate.UTC(2017,0)

_=>` _     __    __
  |   |  | |   |
  |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

Test Dies wird alle 1 Minute aktualisiert, aber Sie müssen viel Geduld aufbringen, um zu sehen, wie sich die Ausgabe ändert.

F=_=>`_     __    __
 |   |  | |   |
 |_  |__| |   |
`.repeat((Math.abs(new Date-14832288e5)+36e5-1)/36e5)

update=_=>O.textContent=F()

setInterval(update,60000)

update()
<pre id=O></pre>


4

Python 2 - 97 + 17 = 114 Bytes

import time
print'_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*int((abs(time.time()-1483228800)+3599)/3600)

Ausgeliehene Logik für Decke aus der Antwort von edc65 .

Python 3.5 - 116 Bytes

import time,math
print('_     __    __\n |   |  | |   |\n |_  |__| |   |\n'*math.ceil(abs(time.time()/3600-412008)))

math.ceilGibt eine Ganzzahl in zurück, 3.xwohingegen in 2.xein Gleitkomma zurückgegeben wird.

Danke elpedro für das Speichern von 3 Bytes.


@ ElPedro Danke. Wollte das tun, in meinen vorherigen Lösungen spielte ich mit, datetime.now(pytz.utc).timestamp()was Python 3.5 erforderte.
Gurupad Mamadapur


2

C kompiliert mit Clang 3.8.1 327 317 145 Bytes

172 Bytes gespart dank @ edc65

#include <time.h>
t;main(){time(&t);t=abs(difftime(t,1483228800)/3600);while(t--)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");}

Ungolfed

#include <time.h>
t;
main()
{
time(&t);

t=difftime(t, 1483228800)/3600;

while(t--)
    puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

317 Bytes

10 Bytes gespart dank @ LegionMammal978

#include <time.h>
t,y,w;main() {struct tm n;time(&t);n=*localtime(&t);n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;n.tm_mday=1;w=n.tm_year;if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;t=(int)difftime(t, mktime(&n))/3600;t=t<w/2?t:w-t;for(;y++<t;)puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");

Ungolfed

#include <time.h>
t,y,w;
main()
{
    struct tm n;
    time(&t);

    n=*localtime(&t);

    n.tm_hour=n.tm_min=n.tm_sec=n.tm_mon=0;
    n.tm_mday=1;
    w=n.tm_year;

    if((w&3)==0&&((w % 25)!=0||(w & 15)==0))w=8784;else w=8760;

    t=(int)difftime(t, mktime(&n))/3600;
    t=t<w/2?t:w-t; 

    for(;y++<t;)
        puts(" _     __    __\n  |   |  | |   |\n  |_  |__| |   |\n");
}

Ich werde einige Erklärungen hinzufügen, wenn ich dazu in der Lage bin.


Bist du nicht in der Lage zu tun n.tm_hour=n.tm_min=...=n.tm_mon=0;?
LegionMammal978

@ LegionMammal978 Oh ja, ich habe es vergessen. Vielen Dank.
Wade Tyler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.