MATLAB - 89 Bytes
a=@()hour(now);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Ziemlich selbsterklärend. Erstellen Sie zunächst ein Funktionshandle, um die aktuelle Stunde der Systemuhr abzufragen. Dann zeigen Legen... wait for it...
wir mit einem Wagenrücklauf an und gehen dann in eine while
Schleife, in der wir ständig prüfen, ob die aktuelle Stunde, zu der eine 1 hinzugefügt wurde, nicht mit der aktuellen Stunde übereinstimmt. Wenn dies der Fall ist, wiederholen Sie die Schleife. Nur bis zum Zeitpunkt der nächsten Stunde wird angezeigt dary!
und danach erfolgt ein Wagenrücklauf.
Die Stunden von MATLAB basieren auf einer 24-Stunden-Indexierung, sodass der mod
Betrieb mit Basis 24 von 23:00 Uhr bis 24:00 Uhr ausgeführt werden muss.
Kleinere Anmerkung
Für diese hour
Funktion ist die Toolbox Financial Time Series erforderlich. Die now
Funktion unterliegt nicht dieser Einschränkung, sondern ruft das aktuelle Datum und die aktuelle Uhrzeit als Seriennummer ab, anhand derer hour
die aktuelle Stunde berechnet wird.
Möchten Sie dies in Octave ausführen?
Sicher! Da Octave diese Toolbox nicht hat, müssen wir die hour
Funktion nur so ändern , dass sie datevec
einen Vektor von 6 Elementen zurückgibt - jeweils eines für Jahr, Monat, Tag, Stunde, Minuten und Sekunden. Sie müssten nur das vierte Element der Ausgabe extrahieren:
a=@()datevec(now)(4);disp('Legen... wait for it...');while(mod(a()+1,24)~=a())end;disp('dary!')
Die zusätzlichen Zeichen erhöhen die Größe der Lösung auf 98 Byte. Sie können dies jedoch in Octave ausführen. Beachten Sie die In-Place-Indizierung ohne temporäre Variable im Funktionshandle.
Keine finanzielle Zeitreihen-Toolbox?
Wenn Sie dies in MATLAB ohne die Financial Time Series Toolbox ausführen möchten , weil Sie nicht sofort ohne temporären Index in Variablen indizieren können, dauert das Schreiben etwas länger:
disp('Legen... wait for it...');h=datevec(now);ans=h;while(mod(h(4)+1,24)~=ans(4)),datevec(now);end;disp('dary!');
Dieser ermittelt zunächst die aktuelle Uhrzeit und das aktuelle Datum und speichert es in der Variablen h
sowie in der aufgerufenen automatischen Variablen ans
. Danach wiederholen wir die Schleife und prüfen, ob die aktuelle Stunde nicht mit der nächsten Stunde übereinstimmt. Bei jeder Iteration aktualisieren wir die automatische Variable mit der aktuellen Uhrzeit und dem aktuellen Datum. Sobald die nächste Stunde mit der aktuellen Uhrzeit und dem aktuellen Datum übereinstimmt, zeigen wir den letzten Teil der Zeichenfolge an und beenden. Dies erhöht die Byteanzahl auf 114.
Beachten Sie auch, dass Sie dies nicht online ausprobieren können. Octave-Interpreter online haben ein Zeitlimit while
für die Ausführung von Code. Da dies eine Schleife ist, die auf die nächste Stunde wartet, wird eine Zeitüberschreitung auftreten, während auf die Ausführung des Codes gewartet wird. Das Beste, was Sie tun können, ist, es auf Ihrem eigenen Computer auszuführen und zu überprüfen, ob es funktioniert.