Zeigen Sie eine Digitaluhr an
(Ich sehe, dass es viele Herausforderungen mit der Uhr gibt. Ich habe versucht, alle zu lesen. Ich bin mir ziemlich sicher, dass dies einzigartig ist.)
Schreiben Sie einen Code, der kontinuierlich eine Digitaluhr im Format angezeigt aktualisiert , h:m:s
wo h
, m
und s
besetzen können 1 oder 2 Zeichen. Die Einschränkungen in einfachen Worten wie @BlueEyedBeast ausgedrückt, ich möchte im Grunde, dass es die angezeigte Zeit ersetzt.
- Zeilenumbrüche sind nicht erlaubt
- Nachgestellte Leerzeichen sind erlaubt
- Andere abschließende Zeichen sind nicht zulässig
- Es dürfen keine Sekunden verpasst werden (57 -> 59 sind nicht erlaubt)
- Zahlen, die mit "0" beginnen, sind zulässig, solange sie nicht mehr als 2 Zeichen belegen
- Der Code darf keine Eingaben annehmen
- Wenn Ihre Sprache die aktuelle Zeit ohne Eingabe nicht abrufen kann, können Sie bis zu 8 Byte auf eine standardmäßig zulässige Weise eingeben
- Die Ausgabe muss auf Standard sein
- Das ist Codegolf, also gewinnt die kürzeste Antwort!
Beispiel
Ich arbeite an einer Sprache mit dem Namen *> <> (Seestern), da solche Programme in> <> nicht möglich sind (warten Sie nur auf die Datei-Ein- / Ausgabe). Hier ist ein funktionierendes Digitaluhrprogramm (ungolfed). Dieses Programm ist geschrieben in *> <> :
s":"m":"hnonon" "ooo88888888888ooooooooooo1S
Hinweis: Alles ist identisch mit> <>, außer, s = Sekunde, m = Minute, h = Stunde, S = Schlaf (100 ms * x)
Dies gibt aus:
14:44:31
Aktualisierung alle 100ms bis zum Abschluss.
Nicht zugelassene Beispiele
Folgendes ist nicht erlaubt:
1:
14:44:3114:44:32
2:
14:44:31 14:44:32
3:
14:44:31
14:44:32
Die Uhrzeit muss in der ersten Zeile stehen, in der sie ohne sichtbare nachgestellte Zeichen ausgegeben wurde. Das Löschen des Terminals ist jedoch zulässig, da es immer noch keine nachgestellten Zeichen gibt.
Antworten:
Pyke, 6 Bytes
Probieren Sie es hier aus!
Ich denke das ist gültig. Ersetzen Sie das Leerzeichen durch Wagenrücklauf für eine gültige Ausgabe (funktioniert nicht online)
quelle
HTML + JS (ES6), 8 + 60 = 68 Byte
In Chrome getestet.
-1 Byte (@ETHProductions): Verwenden Sie das französische Zeitformat anstelle von
.toTimeString().slice(0,8)
HTML + JS (ES6), 8 + 62 = 70 Byte
Dies funktioniert in FireFox.
-3 Bytes (@ETHProductions): Verwenden Sie das französische Zeitformat anstelle von
.toTimeString().slice(0,8)
quelle
new Date().toLocaleTimeString`fr`
(1 Byte im Chrome mit...TimeString('fr')
)Python 2, 50 Bytes
(Python 2.1+
ctime
ohne Argument)time.ctime()
ergibt eine formatierte Zeichenkette, aus der mit hh: mm: ss geschnitten werden kann[11:19]
(sie bleibt unabhängig von Datum und Uhrzeit an derselben Stelle).print
Wenn Sie den Wagenrücklauf'\r'
vor dem Text aktivieren und den Text zum ersten Element eines Tupels mit machen,
, wird das implizite Nachlaufen effektiv unterdrückt'\n'
und die zuvor geschriebene Ausgabe überschrieben.while 1
Schleifen für immer.quelle
,
am Ende, um die Zeilenumbrüche zu unterdrücken, sonst in Python 2.7.12 bekomme ich Zeilenumbrüche.Mathematica,
48413728 BytesDie Ausgabe wird
TimeObject
kontinuierlich aktualisiert.Sieht aus wie das:
Alternative Versionen
48 Bytes:
53 Bytes:
quelle
Dynamic@{DateString@TimeObject[], Clock[]}[[1]]
Pause
.Dynamic@{Now,Clock[]}[[1]]
ist 26 Bytes und zeigt ein Datum / Uhrzeit-Objekt.Dynamic@{DateString@"Time",Clock[]}[[1]]
ist 40 Bytes und gibt nur hh: mm: ssIch sehe, dass die Anforderung für einen Nicht-Signal-UI-Eingang zum Stoppen des Programms entfernt wurde. Jetzt können wir also Folgendes tun:
Bash + Coreutils, 28
yes
Gibt den String "now" fortlaufend einmal pro Zeile in eine Pipe aus.date -f-
reads interpretiert jedes "now" als die aktuelle Uhrzeit und gibt es dann im gewünschten Format aus. Die Formatzeichenfolge enthält die ANSI-Escape-Sequenz zum Löschen des Bildschirms.date
tut nach dem Datum eine neue Zeile aus - ich bin mir nicht sicher, ob dies disqualifiziert, da der Bildschirm ohnehin jedes Mal gelöscht wird.Wenn es disqualifiziert, können wir verwenden
tr
stattdessen verwenden:Bash + Coreutils, 31
Bisherige Antworten:
Bash + X, 32
Leider kann dies nur jede Sekunde aktualisiert werden. Wenn dies disqualifiziert, können wir dies stattdessen tun:
Bash + Coreutils, 43
quelle
date +$'\e[2J'%T;$0
date +$'\e[2J'%T;exec $0
für 24 Bytes tun ...QBIC , 6 Bytes
Löscht ständig den Bildschirm und druckt die Systemzeit im Format
22:03:41
.quelle
Clojure,
150136141 BytesV3: 141 Bytes :(
+5 Bytes, um einen Fehler zu beheben. Da die Zeiten nicht mit Nullen aufgefüllt sind, kann die Uhr "schrumpfen" und expandieren, wenn sich die Zeit ändert. Es "schmierte", als es schrumpfte, weil die letzte Ziffer nicht mehr gelöscht wurde. Es wurde behoben, indem am Ende einige Leerzeichen hinzugefügt wurden, um sicherzustellen, dass alles überschrieben wird.
V2: 136 Bytes
-14 Bytes durch Umschalten auf
SimpleDateFormat
das Formatieren des Datums. Immer noch riesig.V1: 150 Bytes
Mir wurde klar, dass ich wahrscheinlich den schlechtesten Weg nutze, um das Datum herauszufinden. Hier besteht definitiv Verbesserungsbedarf.
Ungolfed:
quelle
Bash + Watch, 19 Bytes
watch gehört nicht zu coreutils , ist aber in praktisch jeder Linux-Distribution sofort verfügbar.
Golf gespielt
Probieren Sie es online!
quelle
WinDbg, 73 Bytes
Es wird kontinuierlich eine Zeile mit der aktuellen Zeit aktualisiert, bis der Benutzer Strg + Umbruch drückt.
Wie es funktioniert:
Beispielausgabe (na ja, Sie haben die Idee):
quelle
PHP, 28 Bytes
Das
date
Funktion druckt buchstäblich alles aus, was sie nicht erkennt.\r
ist der Wagenrücklauf, setzt den Cursor auf die erste Spalte.Laufen Sie mit
-r
.quelle
MATL , 11 Bytes
Endlosschleife, die den Bildschirm löscht und die Uhrzeit im angegebenen Format druckt.
Sie können es bei MATL Online ausprobieren! . Dieser Compiler ist experimentell. Wenn es nicht funktioniert, aktualisieren Sie die Seite und klicken Sie erneut auf "Ausführen".
quelle
82 Bytes
Anonyme Methode, die ständig 8 Zeichen mit neuer Ausgabe überschreibt. Kann 1 Byte kürzer gemacht werden, wenn geändert wird, um einen Dummy-Parameter zu akzeptieren (
z=>...
).Volles Programm:
quelle
System
? Einige Leute tun es, und einige Leute nicht: /C #, 65 Bytes
Überschreibt dieselbe Zeile in einer Endlosschleife
quelle
SmileBASIC 3.3.2, 38 Bytes
UTF-16 saugt :(
Auf jeden Fall wird die Ortszeit wiederholt in HH: MM: SS mit einem Leerzeichen danach und ohne Zeilenumbruch ausgegeben. Es wird jedoch nicht jede Sekunde aktualisiert, sondern immer wieder gedruckt.
quelle
@L?TIME$
und fügen Sie eine Zeile nach (für insgesamt 3 Zeilen) ein,LOCATE 0, 0
die den Trick enthält (unterstützt SmileBASIC die Wagenrückführung?).len(""" YOUR CODE HERE """)
und dann einfach * 2 für UTF-16 ausführen .C
1341168980767573 Bytesquelle
time.h
. Dadurch wird der Typ time_t entfernt, daher müssen Sie stattdessen n als int definieren. Dies kann erreicht werden, indem es außerhalb von main (liken;main...
) deklariert wird , wodurch die Notwendigkeit vonint
. Sie können auch von der loszuwerdenchar
mit dem gleichen Trick:b[9];main...
. Sie sind beide int-Typ, aber es ist flexibel genug.strftime...
und das herausgenommenb[9]
und nur einen Druck darauf gemacht:printf("\r%d:%d:%d",(n/3600)%60-29,(n/60)%60,n%60);
Ich bin mir nicht sicher, ob die Eltern gebraucht werden oder nicht. Sie können auch eine Reihe von{}
for(;;)a,b,c;
(n/60)%60
im Ernst?n
als Parametermain
, sagenmain(n)
stattn;main()
Powershell, 39 Bytes
Weil ich cls in Powershell nicht mag. Aus dem Beitrag von briantist unter /codegolf//a/102450/63383
quelle
Pascal, 61 Bytes
Free Pascal hat schöne Zeitroutinen in SysUtils Einheit. Ungolfed:
quelle
C 65 (vorige 64) Bytes
Funktioniert garantiert auf Linux-Rechnern. :)
@ Marco Danke!
quelle
Vim, 26 Bytes
Dadurch wird ein rekursives Makro (z. B. eine Ewige Schleife) erstellt, das den gesamten Text in der aktuellen Zeile löscht und durch die aktuelle Uhrzeit ersetzt.
quelle
Pyth - 28 Bytes
Ein bisschen länglich, weil Pyth keine Freizeit hat.
quelle
Groovy, 45 Zeichen
quelle
Gelee , 8 Bytes
Probieren Sie es online!
Der Wagenrücklauf funktioniert nicht online und ich kann den Interpreter nicht zum Laufen bringen, daher ist er ein bisschen ungetestet, aber er funktioniert wie erwartet, wenn ich druckbare Zeichen anstelle des CR verwende.
quelle
ForceLang, 123 Byte
datetime.toTimeString
wird in der Referenzimplementierung von Java unterstütztDateFormat.getTimeInstance()
, das vom Gebietsschema abhängt, sodass Sie das Standardgebietsschema des Systems auf ein Gebietsschema festlegen können, das die 24-Stunden-Zeit verwendet.quelle
PowerShell,
30282420 ByteDie Region meines Computers wurde basierend auf in Deutschland geändert dem Kommentar raznagul geändert , um 4 Bytes zu sparen. :)
Vorherige Version, die in allen Ländereinstellungen funktioniert.
quelle
tcl, 69 bytes
Probieren Sie es hier aus!
quelle
Batch, 36 Bytes
Wobei
␈
das ASCII-BS-Zeichen (Code 8) darstellt.quelle
Schläger, 71 Bytes
Wo
↵
ist eigentlich ein CR (hex0d
). Hex-Dump des Programms zur weiteren Verdeutlichung (Hinweisbyte an Position hex4d
):Verwendet SRFI / 19, das in der Racket-Distribution enthalten ist.
(current-date)
Ruft das aktuelle lokale Datum und die Uhrzeit ab. Dasdate->string
Format~3
ist ISO-8601 Stunden-Minuten-Sekunden-Format.(let l () ... (l))
in einer idiomatischen Endlosschleife.(require srfi/19)
lädt dassrfi/19
Modul.quelle
C 156 Bytes
quelle
TI-Basic, 40 Bytes
(In TI-BASIC sind viele Zeichen 2-Byte-Token, und Doppelpunkte am Zeilenanfang sind 0 zusätzliche Bytes.)
quelle
R, 41 Bytes
Verfügt über ein nachfolgendes Leerzeichen (da das
cat
Standardtrennzeichen ein Leerzeichen ist).Aufgrund der Aktualisierungsrate der R-GUI werden beim Ausführen dieser Funktion in der GUI gelegentlich einige Sekunden übersprungen. Wenn Sie sie jedoch in einer Datei speichern und in der Befehlszeile ausführen, wird sie alle Sekunden korrekt angezeigt.
Läuft für immer, bis der Benutzer unterbricht.
quelle