Aktuelle Uhrzeit ausgeben


49

Herausforderung

Sie müssen die aktuelle Zeit fortlaufend (bis sie durch einen Interrupt abgebrochen wird) einmal pro Sekunde auf eine der folgenden Arten ausgeben:

  • Es muss im 24-Stunden- oder AM / PM-Format vorliegen.
    • Wenn es das erstere ist, muss es mit Doppelpunkten voneinander getrennt werden (dh 15:47:36).
    • Wenn es das letztere ist, muss es mit Doppelpunkten abgesetzt sein und die folgende AM / PM haben (dh 3:47:36 PM)
  • Es kann aus dem Internet gezogen werden.
  • Es kann die Systemzeit sein.
  • Es muss jede natürlich zugängliche Ausgabeform ausgegeben werden, die von Ihnen ausgewählten Text unterstützt.
  • Die Ausgabe enthält möglicherweise neben der Zeit zusätzliche Informationen, Sie müssen jedoch eine und nur eine Zeitausgabe pro Sekunde garantieren.
  • Die kontinuierliche Ausgabe muss eine Sekunde voneinander entfernt sein - wenn Sie warten, bis sich die Sekunde zwischen den Ausgaben ändert, ist das in Ordnung. Wenn Sie zwischen den einzelnen Ausgaben eine Sekunde warten, ist dies trotz des möglichen Genauigkeitsverlusts durchaus akzeptabel.

Da es sich um einen Katalog handelt, dürfen Sprachen, die nach dieser Herausforderung erstellt wurden, miteinander konkurrieren. Beachten Sie, dass ein Dolmetscher vorhanden sein muss, damit die Einreichung getestet werden kann. Es ist erlaubt (und sogar empfohlen), diesen Dolmetscher für eine zuvor nicht implementierte Sprache selbst zu schreiben. Ansonsten müssen alle Standardregeln des eingehalten werden. Einsendungen in den meisten Sprachen werden in Bytes in einer geeigneten, bereits vorhandenen Codierung (normalerweise UTF-8) bewertet.

Katalog

Das Stapel-Snippet am Ende dieses Beitrags generiert den Katalog aus den Antworten a) als Liste der kürzesten Lösungen pro Sprache und b) als Gesamt-Bestenliste.

Um sicherzustellen, dass Ihre Antwort angezeigt wird, beginnen Sie Ihre Antwort mit einer Überschrift. Verwenden Sie dazu die folgende Markdown-Vorlage:

## Language Name, N bytes

Wo Nist die Größe Ihres Beitrags? Wenn Sie Ihren Score zu verbessern, Sie können alte Rechnungen in der Überschrift halten, indem man sich durch das Anschlagen. Zum Beispiel:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Wenn Sie mehrere Zahlen in Ihre Kopfzeile aufnehmen möchten (z. B. weil Ihre Punktzahl die Summe von zwei Dateien ist oder wenn Sie die Strafen für Interpreter-Flags separat auflisten möchten), stellen Sie sicher, dass die tatsächliche Punktzahl die letzte Zahl in der Kopfzeile ist:

## Perl, 43 + 2 (-p flag) = 45 bytes

Sie können den Namen der Sprache auch als Link festlegen, der dann im Snippet angezeigt wird:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


Beinhaltet "bis zum Abbruch durch einen Interrupt" das Schließen des Programms oder benötigt es einen Mechanismus, um den darin codierten Zyklus zu stoppen?
user81655


1
Warnung: Alle sleep 1Antworten unterbrechen Regel 5: Sie müssen eine und nur eine Ausgabe der Zeit pro Sekunde garantieren. !!
F. Hauri

1
F. Hauri: Wie so? Regel 6 besagt: "Wenn Sie zwischen den einzelnen Ausgaben eine Sekunde warten, ist das auch in Ordnung."
YetiCGN

1
@Jasen Nein, aber die Bedeutung von "das ist in Ordnung" impliziert, dass die Warteoption ungeachtet des möglichen Zeitverlusts weiterhin gültig ist. Ich habe das für Sie geklärt.
Addison Crump

Antworten:


56

Minecraft 1.8.7, 7 + 8 = 15 Blytes (Bytes + Blöcke)

Nur ein Befehlsblock beteiligt:

xp 1 @p

Die Ausgabe erfolgt folgendermaßen an der Client-Konsole:

mal

Im Rahmen der normalen Ausgabe.

Dies ist das System:

das System

xpGibt einem bestimmten Spieler mit der Syntax eine bestimmte Menge an Erfahrung xp <amount> <player>. Ich bin mir ziemlich sicher, dass dies der kleinste Befehl ist, der eine singuläre Ausgabe hat, die ich jetzt bekommen kann.


3
Sagen Sie nicht "19 Bytes", weil Sie Ihre Antwortgröße nicht in Bytes gemessen haben.
Feersum

6
@feersum Es gibt einen Grund, warum ich Bytes sage, vertraue mir. Dies kommt einem Konsens für MC ab sofort am nächsten .
Addison Crump

4
Sie können die veralteten Nummerncodes verwenden, nicht wahr?
Conor O'Brien

4
Verwenden Sie dieses Bewertungssystem, wenn Sie möchten, 19 Whatevers, aber nicht 19 Bytes, da es keine zuvor definierte Codierung gibt, mit der Sie diese Lösung in einer 19-Byte-Datei speichern können.
Feersum

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ Ich glaube, ich müsste es in JSON packen. Es sei denn, ich habe 1.6 verwendet, aber das ist praktisch eine andere Sprache.
Addison Crump

17

JavaScript, 32 Bytes

setInterval("alert(Date())",1e3)

Verwendet die Tatsache, dass setInterval Code auswertet. Dies wird nicht empfohlen, aber wann war das ein Problem beim Code-Golf?

Date() Gibt die aktuelle Uhrzeit und das aktuelle Datum in einem Format wie diesem zurück (kann je nach System variieren).

 Wed Jul 28 1993 14:39:07 GMT-0600 (PDT)

Würde es setInterval(alert,1e3,Date())stattdessen funktionieren?
ETHproductions

@ETHproductions Es zeigt immer die gleiche Zeit für mich
ev3commander

@ETHproductions in Ihrem Beispiel Date()wird nur einmal ausgewertet werden , wenn Sie das Intervall erstellen
MMM

15

sh (+ watch), 11 Bytes

Skript:

watch -n1 .

(kein abschließender Zeilenumbruch)

Ausgabe:

Every 1,0s: . (SPACES) Sat Nov 28 19:07:51 2015

Die Anzahl der Leerzeichen hängt von der Klemmenbreite ab.

Getestet unter Debian8 und NetBSD7.


Richtiges Werkzeug für den Job, +1
Addison Crump

Warten Sie, zählt dies als Programmiersprache? Können Sie mir einen Link zu einem Dolmetscher geben?
Addison Crump

@VoteToClose watchist ein Coreutil. Die eigentliche Sprache ist bash / sh.
Türklinke

Also ... sollte das nicht sein Bash (distribution), nicht watch? @Doorknob
Addison Crump

1
Hmm Sie müssen den -pSchalter verwenden, um die Regel nicht zu brechen. Sie müssen eine und nur eine Ausgabe der Zeit pro Sekunde garantieren. !!
F. Hauri

15

Einrasten , 8 7 6 Blöcke


(Ja, ich habe es in MS Paint geändert, weil ich zu faul war, um einen weiteren Screenshot zu erstellen. Na und? Zumindest ist es lesbar.)
Klicken Sie auf das Skript, um die
24-Stunden-Uhr auszuführen .


2
Ich liebe grafische Programmiersprachen immer. : D +1
Addison Crump

oh hey ev3! Ich kenne dich aus Snap / Scratch-Foren: P Warum brauchst du eigentlich Snap statt Scratch?
anOKsquirrel

2
@anOKsquirrel Weil ich nicht alle Join-Blöcke verschachteln muss.
ev3commander

Sollte das nicht lesen 9:21:08?
Luke

@Luke Wie die Antwort von TI-BASIC zeigt, ist die Zeit ohne führende Null in einer Ausgabe in Ordnung. Es ist für den Menschen lesbar und klar, wie spät es ist.
Addison Crump

11

Python 2, 47 Bytes

from time import*
while[sleep(1)]:print ctime()

Kein Online-Link, da ideone das Zeitlimit überschreitet (huehuehue), bevor etwas gedruckt wird.

Vielen Dank an @xsot für den while[sleep(1)]Trick und den ctimeTrick.

Druckt das aktuelle Datum und die aktuelle Uhrzeit folgendermaßen aus: Fri Nov 27 21:23:02 2015


2
Ich klatsche langsam auf das Wortspiel. Sehr lustiger Mego. ; D
Addison Crump


sleep 1Antwortunterbrechungsregel 5: Sie müssen eine und nur eine Ausgabe der Zeit pro Sekunde garantieren.
F. Hauri

@ F.Hauri sleep 1bewirkt, dass der aktuelle Thread genau eine Sekunde lang in den Ruhezustand wechselt. Es entspricht den Regeln.
Mego

1
@ F.Hauri In Anbetracht der Tatsache, dass der Herausforderungsautor selbst sleep(1)sowohl in seiner AppleScript-Lösung als auch in seiner Vitsy + bash-Lösung das Äquivalent von verwendet , ist dies eindeutig akzeptabel.
Mego

9

Perl, Befehlszeile, 24 Bytes

sleep(say)while$_=gmtime

Dies muss über die Befehlszeile ausgeführt werden, da perl -E'sleep(say)while$_=gmtime'(unter Windows stattdessen doppelte Anführungszeichen verwenden). Das Datum wird zusammen mit der Zeit ausgegeben, was zulässig zu sein scheint .


Perl, 25 Bytes

sleep print$/.gmtime;do$0

Gibt in einem skalaren Kontext gmtimeeine Zeichenfolge zurück, die der folgenden ähnelt Sat Nov 28 10:23:05 2015. Das Ergebnis von print, immer 1, wird als Parameter für verwendet sleep. do$0wird verwendet, um das Skript nach Ablauf des Timers erneut auszuführen.


2
Wie die AppleScript-Lösung und der Kommentar von @ VoteToClose belegen , müssen Sie die Zeit nicht extrahieren.
Mego

1
Eine weitere 24-Byte - Lösung: {sleep say~~gmtime;redo}.
Denis Ibaev

sleep 1Antwortpausenregel 5: Sie müssen eine und nur eine Ausgabe pro Sekunde garantieren .
F. Hauri

@ F.Hauri Die Regel wurde hinzugefügt, nachdem dieser Beitrag erstellt wurde.
Primo

9

Javascript ES6, 43 39 Bytes

setInterval(_=>console.log(Date()),1e3)

Funktioniert zumindest mit meinen aktuellen Zeiteinstellungen (die sich seit einiger Zeit nicht geändert haben, danke).

4 Bytes von Conor O'Brien gespeichert.


Alarm ist kürzer?
Maltysen

8
@Maltysen Ich denke, in vielen Browsern muss man ein Warnfenster schließen, um das nächste zu sehen.
Fehler

@Maltysen Ich habe es versucht, versaut die Pause irgendwie
SuperJedi224

1
Du brauchst nicht .toTimeString()in Chrome und FF.
Bob

1
Ich denke, Sie können new Date()mitDate()
Conor O'Brien

8

Arcyóu , 27 Bytes

(@ t(pn(zz 1)(p(st %H:%M:%S

Ich musste zwei neue Funktionen für diese Herausforderung zusammenfassen zzund st.

pn: Genau wie bei Lisp progn.

zz: Direkter Link zu Pythons time.sleep.

st: Direkter Link zu Pythons time.strftime.

Normalerweise sind Anführungszeichen um die Formatzeichenfolge erforderlich. Da jedoch keine Leerzeichen vorhanden sind, wird sie als Symbol analysiert. Der Interpreter wertet undefinierte Symbole als sich selbst aus, sodass wir einen String erhalten.


1
Ich würde abstimmen, aber ich habe keine Stimmen mehr. +1; c Und nette Updates. : D
Addison Crump

7

Bash, 51 31 24 21 20 Bytes

Vielen Dank an @quartata für einige sehr hilfreiche Kommentare. Vielen Dank an @Dennis für die Klarstellung und für das Abschneiden von noch mehr Bytes. Vielen Dank an @VoteToClose für die Klarstellung der Regeln (die ich anscheinend schlecht lesen kann), die die Bytes weiter reduzieren.

datezeigt das vollständige Datum im 24-Stunden-Format an. sleep 1schläft für eine Sekunde. exec $0Schleifen das Skript unendlich.

date;sleep 1;exec $0

Du brauchst den Shebang nicht.
ein Spaghetto

Auch ich denke du kannst das truedurch das sleep 1da ersetzen was sleepein zurückgibt 1.
ein Spaghetto

date +%T;sleep 1;exec $0ist etwas kürzer. @quartata Nitpicking: sleephat den Exit-Code Null, weshalb es whileweitergeht.
Dennis

3
Oh, ich bin ein Idiot
ein Spaghetto

2
Der Platz danach datewird nicht benötigt, das sind also nur 20 Bytes.
ThisSuitIsBlackNot

6

Befunge 98, 53 Bytes

 v
v>"EMIT"4(>H.8,':,M.8,':,S:.8,d,
>:S-    !!k^

Anmerkungen:

  1. Dieses Programm füllt die gedruckten Zahlen nicht mit Nullen.
  2. Dieses Programm gibt nach jeder Zahl ein Leerzeichen und dann ein Backspace-Zeichen aus, da der .Befehl am Ende ein implizites Leerzeichen ausgibt.
  3. Die Größe des Stapels in diesem Programm wächst mit jeder Sekunde und es wird schließlich kein Speicher mehr verfügbar sein.
  4. Dieses Programm überschreibt die vorherige Zeit, wenn es eine neue druckt. Ändern Sie den dWert in der ersten Zeile in einena

Warum ist die Zeichenfolge "TIME" erforderlich? Gibt es eine Möglichkeit, es zu packen? (Ich wusste nicht darüber)
Addison Crump

Die "EMIT"4(zu Beginn des Programms sagt die Dolmetscherin die laden TIMEFingerabdruck, die es ermöglicht , die H, Mund SAnweisungen. (Nein, es gibt nicht die Nummer 4 aus).
pppery

Das ist großartig . Ich hätte nie gedacht, dass viele Esolangs dies tun würden, +1.
Addison Crump

@VoteToClose Befunge 98 verfügt sogar über eine Anweisung zum Ausführen eines beliebigen Programms, das vom Stapel abgerufen wurde.
pppery

1
rennt weg, um diese Sprache zu lernen Entschuldigung ...
Addison Crump

6

mIRC 7.49 20 16 Bytes

/timer 0 1 $time

Wo können wir das testen?
Addison Crump

Du musst mIRC herunterladen, es ist ein Shareware-IRC-Client. Sie können es auch von mirc.com herunterladen, da Sie in der obigen Antwort eine sayVerbindung zu einem Server herstellen und dann einem Kanal beitreten müssen. Andernfalls würden Sie echoanstelle von verwenden say. mIRC hat eine eigene Skriptsprache mSL (mIRC scripting language)
onkarjit

5

AutoHotkey, 50 Bytes

x::Send,% a!=A_Sec? A_Hour ":" A_Min ":" a:=A_Sec:

Anmerkungen:

  1. Erfordert das Halten xfür die kontinuierliche Ausgabe.
  2. Entfernen Sie Ihren Finger von x, um die Ausgabe zu unterbrechen und zu beenden.
  3. Die Ausgabe erfolgt im 24-Stunden-Format.

2
Sie können dies für ein paar zusätzliche Bytes in einen Tooltip einfügen, sodass der Benutzer nicht gezwungen ist, diesen zu halten x.
Michelfrancis Bustillos

5

C (unter Linux x64): 179 177 175 168 159 Byte

#include<time.h>
#include<sys/time.h>
main(){struct timeval a;char b[9];for(;;){gettimeofday(&a,0);strftime(b,9,"%T",localtime(&a.tv_sec));puts(b);sleep(1);}}

Ungolfed:

#include <time.h>
#include <sys/time.h>
main(){
  struct timeval a;
  char b[9];
  for(;;){
    gettimeofday(&a, 0);
    strftime(b, 9, "%T",localtime(&a.tv_sec));
    puts(b);
    sleep(1);
  }
}

Nur auf Linux x64 getestet und funktioniert wahrscheinlich nur unter Linux x64 (x32 funktioniert möglicherweise, andere Plattformen jedoch wahrscheinlich nicht).

Der Hauptunterschied zwischen diesem Programm und dem anderen veröffentlichten C-Programm besteht in der Verwendung von Linux-exklusiven Funktionsaufrufen, die, obwohl sie für echte Software furchtbar sind, einige Bytes einsparen ... wenn Sie alle Compiler-Warnungen ignorieren.


Willkommen bei PPCG! Wenn ich mich nicht irre, können Sie meines Erachtens das Leerzeichen zwischen #includeund entfernen <...>. Auch können Sie 1e6anstelle von verwenden 1000000?
Addison Crump

@VoteToClose Du hattest Recht mit den Leerzeichen im #includes. Es sieht jedoch nicht so aus, als ob usleep () 1e6 akzeptiert - basierend darauf, wie schnell es Zeitstempel ausspuckt, interpretiert es dies einfach als 1.
Gamerdog

¯ \ _ (ツ) _ / ¯ Ich kenne C auch nicht wirklich. Ich lasse die Profis dran. Willkommen nochmal, stimmen Sie ab. : D
Addison Crump

Ah, noch etwas - Sie müssen die Zeichenfolge nicht nur für die Uhrzeit abschneiden, sondern können auch die gesamte Datums- und Uhrzeitangabe ausgeben, sofern die erforderliche Zeitzeichenfolge vorhanden ist.
Addison Crump

2
Sie können %Tals Formatspezifikation in verwenden strftime.
Mego

5

Jolf , 14 8 7 Bytes

Durchgestrichen 14 ist eine gestrichene 1? Naw, es wird sich nie durchsetzen;)

Probieren Sie es hier aus! Klicken Sie auf Ausführen, klicken Sie nicht auf etwas anderes ^ _ ^ Die Seite ist hochexplosiv. Ja. Fixes Ausgabesystem mit Update.

TaD#`~2

(Ich habe einige Konstanten hinzugefügt, und ~1zu ~4sind Mächte von 10.)

Erläuterung

setInterval("alert(Date())",1000);
     T         a      D#   ` ~2

4
Jemand sollte YAJSGV (eine weitere JavaScript-Golfvariante) erstellen.
intrepidcoder

Dies scheint viel mehr als nur die Zeit zu drucken.
Dennis

1
@ Tennis Ich nahm an, das war in Ordnung wie bei anderen Lösungen
Conor O'Brien

Meine schlechte, ich hatte nur deine und die Bash-Antwort gelesen.
Dennis

@ Tennis kein Problem ^ _ ^
Conor O'Brien

5

Dyalog APL , 27 18 16 Bytes

':',¨⎕TS⋄→≢⎕DL 1

Probieren Sie es online!

⎕TSYMD hmst prepend
':',¨: zu jeder
neuen Anweisung
⎕DL 1eine Sekunde warten und die tatsächliche Wartezeit zurückgeben; 1,0 Sekunden entsprechen
der tatsächlichen Wartezeit und geben 1
go to line (1 = diese Zeile)


4

Perl 6 , 29 Bytes

Der richtige Weg, dies zu tun:

Supply.interval(1).tap: -> $ {
  say join ':',.hour,.minute,.whole-second given DateTime.now
}
await Promise.new; # halt this thread indefinitely
22:21:58
22:21:59
22:22:0
22:22:1
22:22:2
…

Die Golfversion

loop {sleep say join ':',now.polymod(1,60,60,24)[31]} # 56 bytes
3:59:26
3:59:27
3:59:28
3:59:29
…

Da die Ausgabe nicht auf die Zeit beschränkt sein muss, kann ich sie etwas kürzer machen.

loop {sleep say DateTime.now} # 29 bytes
2015-11-27T22:18:10-06:00
2015-11-27T22:18:11-06:00
2015-11-27T22:18:12-06:00
2015-11-27T22:18:13-06:00
…

4

R, 38 Bytes

repeat{Sys.sleep(1);print(Sys.time())}

Dies gibt die aktuelle Uhrzeit in folgendem Format aus:

[1] "2015-11-28 07:34:01 CET"

4

Powershell, 19 Bytes

for(){date;sleep 1}

Da es seit worden ist darauf hingewiesen , dass die Ausgabe muss lediglich die hh umfassen: mm: ss Sie reduzieren könnenfor(){date;sleep 1}
steve

4

PHP, 37 Bytes

<?=date('G:i:s');header('refresh:1');

Gibt die formatierte Serverzeit aus und legt fest, dass die Seite jede Sekunde aktualisiert wird.

Natürlich hängt es von Ihrer Internetverbindung ab und wie schnell Ihr Server reagiert :)

Demo


Nein, keine Erfrischung:Warning: Cannot modify header information - headers already sent
Martijn

@ Martijn Ich habe keine Ahnung, womit du dich anlegen kannst, weil es bei mir funktioniert :)
nicael

Ich werde die Ablehnung im Zweifelsfall entfernen, aber das funktioniert genau einmal für mich. Versucht auf zwei verschiedenen regulären Servern.
Martijn

2
Hängt davon ab, ob die Ausgabepufferung aktiviert ist.
Andrea

<?=header('refresh:1').date('G:i:s');sollte mit beiden Einstellungen für die Ausgabebereitstellung funktionieren.
Jasen

4

VBA, 69 Bytes

Es ist ganz einfach, die Zeit zu ermitteln. Es wird now()nur jede Sekunde ausgegeben. VIEL ausführlicher.

Dies ist die "richtige" Art, 1 Sekunde in VBA zu warten. 78 Bytes

Sub a():Debug.Print Now():Application.Wait Now()+TimeValue("0:0:1"):a:End Sub

Oder wenn Sie einige Ecken abschneiden möchten und nur in 86% der Fälle richtig liegen, sind 63 Bytes ausreichend.
Wenn Sie eine SigFig hinzufügen, erreichen Sie eine Genauigkeit von 95% und eine dritte von 99,36%

Sub a():Debug.Print Now():Application.Wait Now()+1e-5:a:End Sub

Wenn Sie die obige Methode auf 100% bringen möchten, benötigen Sie 69 Bytes (1/86400)

Sub a():Debug.Print Now():Application.Wait Now()+(1/86400):a:End Sub

Alle diese Methoden würden auf einer Schaltsekunde stolpern, weil sie nicht für 1 Sekunde warten, sondern bis 1 Sekunde warten. Um Mitternacht, wenn die Uhren eine Stunde zurückfallen, stoppt diese Uhr für eine Stunde und hebt dann dort auf, wo sie aufgehört hat.

VBA erlaubt die Schlafmethode, aber Ihr Byte-Couter ist ruiniert. 97 Bytes

Declare Sub Sleep Lib "kernel32" (ByVal k as Long)
Sub a():Debug.Print Now():Sleep(1e3):a:End Sub

3

JavaScript, 47 38 35 Bytes

for(p=1;t=Date();p=t)t!=p&&alert(t)

Erläuterung

Überprüft fortlaufend, ob sich die Uhrzeit geändert hat, und überprüft, ob sie sich geändert alerthat.

for(
  p=1;
  t=Date();
  p=t
)
  t!=p
    &&alert(t)

Sie müssen nicht nur die Zeitzeichenfolge abrufen. ; D Solange es irgendwo drin ist.
Addison Crump

@VoteToClose Oh wahr!
user81655

Denken Sie nicht, dass Sie brauchen +"", wie ohne new, Date()eine Zeichenfolge zurückgibt.
ETHproductions

@ETHproductions Ah, ja, das wurde dort belassen, als es verwendet wurde new. Danke, dass du das verstanden hast!
User81655

3

AppleScript, 51-35 Bytes

wiederholen
Aktuelles Datum protokollieren
Verzögerung 1
Ende

Ziemlich offensichtlich. Druckt das aktuelle Datum, das die Uhrzeit enthält, verzögert eine Sekunde und fährt dann fort.


1
Warten Sie also, dürfen Sie das aktuelle Datum und die Uhrzeit ausdrucken?
ein Spaghetto

@quartata Ja, jede Verkettung mit der Zeit, solange die Zeit kontinuierlich ausgegeben wird und garantiert ausgegeben wird, ist in Ordnung.
Addison Crump

Verzögerung 1 macht was? Pause für 1000000000 ns?
Jasen

@Jasen Das stimmt.
Addison Crump


3

Dyalog APL, 36 Bytes

Diesmal nicht sehr kurz.

{⎕←1↓∊'⊂:⊃,ZI2'⎕FMT 3↑3↓⎕TS⋄∇⎕DL 1}1

Dies gibt eine 24-Stunden-Zeit aus, dh:

14:37:44
14:37:45
14:37:46
...

Erläuterung:

  • {... }1: definiere eine Funktion und rufe sie auf (das Argument wird ignoriert, aber wir brauchen die Funktion, um sie rekursiv aufzurufen)
    • ⎕TS: Eine Systemfunktion, die das aktuelle Datum und die aktuelle Uhrzeit im Format Jahr - Monat - Tag - Stunde - Minute - Sekunde - Millisekunde zurückgibt . ( ⎕TS= T ime s Stampf)
    • 3↑3↓: Lasse die ersten 3 Gegenstände fallen (dh Jahr - Monat - Tag) und nimm dann die ersten 3 verbleibenden Gegenstände (Stunde - Minute - Sekunde).
    • '⊂:⊃,ZI2'⎕FMT: Formatieren Sie jede Zahl als zweistellige Ganzzahl ( I2) mit führenden Nullen ( Z) und vorangestelltem Doppelpunkt ( ⊂:⊃). (Dies ergibt eine Matrix.)
    • : Liefert alle Elemente in der Matrix in Zeilenreihenfolge. (Dies ergibt einen Vektor, in diesem Fall eine Zeichenkette.)
    • 1↓: lösche das erste Zeichen (das ist ein Extra :)
    • ⎕←: gib es aus
    • ⎕DL 1: dann warte eine Sekunde ( ⎕DL= d e l ay)
    • : rufe die Funktion rekursiv auf

{⎕←1↓∊':',¨⍕¨3↑3↓⎕TS⋄∇⎕DL 1}1für 28 Bytes reicht es laut OP .
Adám

Die neuen Regeln erlauben Müllausgabe und zufällige Leerzeichen, sodass Sie viel loswerden können.
Adám


3

Haskell, 98 96 85 Bytes

import GHC.Conc
import Data.Time
m@main=getCurrentTime>>=print>>threadDelay(10^6)>>m

Alternative Version unter Verwendung der do-Notation:

main = do
  time <- getCurrentTime
  print time
  threadDelay 1000000
  main

Ruft die aktuelle Zeit mit getCurrentTimeaus der Data.TimeBibliothek ab, leitet sie dann weiter print, wartet 1.000.000 Mikrosekunden (1 Sekunde) und ruft sich selbst auf.

Danke an Nimi und Mauris!


m@main=...>>mist immer kürzer alsmain=...>>main
Lynn

Da threadDelayes ohnehin GHC-spezifisch ist, können Sie es auch ausGHC.Conc
Lynn

3

Batch - 34 40 Bytes

Ich liebe eingebaute Variablen:

:A                    //Set label A
echo %time%           //Print the time in 24 hour format
timeout 1    //Wait 1 second (thanks DavidPostill)
goto A                //Jump back to A and repeat

Es muss auf jeden Fall sleepbald einen Befehl in Batch geben.


Kein integrierter Schlaf, aber es gibt eine Zeitüberschreitung . Sie können das ping ...mit ersetzen timeout 1. Auch die Uhr ist bei der Benutzung nicht sehr genau ping. Es ist besser mit timeout;)
DavidPostill

@DavidPostill danke für den Tipp, ich wusste nie, dass es so einen Befehl in Windows gibt. :)
GiantTree

@ GiantTree Gern geschehen;)
DavidPostill

Golf: Entfernen :Aund Ersetzen goto Amit%0
stevefestl

3

Python 3, 99 Bytes

Entschuldigung, wenn es den Code seltsam formatiert, dies von einem iPad. (frag nicht). Ich weiß, dass dieser Code in Anbetracht einiger anderer Antworten groß ist, aber ich habe noch keinen Python gesehen, deshalb wollte ich ihn hinzufügen.

import time
import datetime
while(True):
 print(datetime.datetime.now().time())
 time.sleep(1)  

Sie können ersetzen Truemit 1, und wenn Sie das setzen printund sleepLinien auf der gleichen Linie wie die while(getrennt durch ein Semikolon) es erspart Ihnen die Leerzeichen.
Undergroundmonorail

@undergroundmonorail ok danke für den True / 1-Tipp. Ich bin das nicht gewohnt, da Java Dosent das macht. Ich wusste auch nicht, dass Python Semikolons enthält. Ich werde das untersuchen
Ashwin Gupta

3

Java, 300 166 137 125 124 Bytes

Fast mehr als die Hälfte dank VoteToClose, Paülo Ebermann und janschweizer!

interface A{static void main(String[]a)throws Exception{for(;;Thread.sleep(1000))System.out.println(new java.util.Date());}}

Ungolfed:

interface A {
    static void main(String[] a) throws Exception {
        for (;; Thread.sleep(1000)) System.out.println(new java.util.Date());
    }
}

1
Vereinfachen Sie Ihre Importe: java.util.*Anstelle der beiden java.utilImporte, java.text.*aus den gleichen Gründen. Verwenden Sie for(;;)für Endlosschleifen. Verwendung String[]ain der Hauptdeklaration. Verwenden Sie interface A{static void main(..., da dies es noch mehr verkürzen wird. Sie können mit Exceptionüber InterruptedException, und Sie können ersetzen exmit e. Sie können auch den gesamten Text im Verschluss entfernen, da dies sowieso nichts bewirkt.
Addison Crump

1
Ja, die Interface-Sache ist ein bisschen verrückt - ich habe keine Ahnung, warum Java das zulassen würde, wenn man bedenkt, dass die Interfaces speziell dafür ausgelegt sind , nicht lauffähig zu sein.
Addison Crump

1
Zwei Dinge: Sie müssen die Zeitzeichenfolge in "HH: mm: ss" ändern - ab sofort formatieren Sie "Hour: Month: Second". Da Sie eine Schleife verwenden, können Sie auch die Deklaration DateFormatund die CalendarVariablendeklaration gemeinsam entfernen. Sie ersetzen den Inhalt der for-Schleife durch System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}.
Addison Crump

1
Alle Dinge, die ich gerade vorgeschlagen habe, zusammengefasst:import java.util.*;import java.text.*;interface A{static void main(String[]a){for(;;){System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()));try{Thread.sleep(1000);}catch(Exception e){}}}}
Addison Crump

1
throws Exceptionkürzer ist als eine try / catch
Phase

3

Perl, 99 81 75 51 40 36 29 27 Bytes

sleep(print gmtime.$/);do$0

1
Sie können es abkürzen, indem Sie gmtimeanstelle von verwenden localtime.
Brad Gilbert b2gills

2
Alsoprintf"%02d:%02d:%02d\n",(gmtime)[2,1,0]
Brad Gilbert b2gills

1
gmtime."\n"wird einen skalaren Kontext erzwingen.
Primo

1
Sie sollten fast nie ."\n"Golf spielen müssen: Verwenden Sie .$/diese Option, um 2 Bytes zu sparen. Verwenden Sie mindestens eine wörtliche Newline, anstatt \n1 Byte zu speichern.
ThisSuitIsBlackNot
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.