Für diese Herausforderung schreiben wir die Zeit in der folgenden Form: hh:mm:ss
Einige Beispiele:
12:34:08
06:05:30
23:59:00
Die Herausforderung besteht darin, die Zeit nach Ablauf von Stunden , Minuten und Sekunden als Startzeit auszugeben 00:00:00
. Sie können dies mit einem Timer vergleichen, der um begann 00:00:00
.
Hier ist ein Beispiel für Eingänge (mit STDIN ) und Ausgänge:
Input: 1h20m5s
Output: 01:20:05
Input: 0h100m0s
Output: 01:40:00
Nach 24 Stunden setzt sich der Timer zurück:
Input: 25h0m0s
Output: 01:00:00
Die Form der Eingabe ist immer gleich: XhYmZs
mit X
Stunden, Y
Minuten und Z
Sekunden (davon ausgehen , dass X
, Y
und Z
ganze Zahlen sind weniger als 100000 und nie negativ)
Das ist Code-Golf , also gewinnt die geringste Anzahl von Bytes diese Herausforderung
Antworten:
CJam, 34 Bytes
Probieren Sie es hier aus .
quelle
Ruby -
1311151079784 BytesIch spiele immer noch Golf.
Vielen Dank für @Doorknob für / \ w / inshead von / h | m | s /
quelle
gets.tr('ms',?h).split(?h)
->gets.split(/\w/)
.Mathematica,
133116112111 Bytesquelle
Python 2,
138126 BytesJetzt verwende ich Regex, aber immer noch ziemlich lange ..
Die Eingabe sollte in Anführungszeichen erfolgen.
quelle
C
149112 BytesTeste es hier
Dank an @Dennis, der viel davon losgeworden ist.
quelle
main(h,m,s){scanf("%dh%dm%ds",&h,&m,&s);s+=h*3600+m*60;m=s/60;h=m/60;printf("%02d:%02d:%02d",h%24,m%60,s%60);}
(110 Bytes, liest aus STDIN)h,m,s;main()
sollte tragbarer sein.main(h,m,s)
arbeitet mit GCC ( Link )m=s/60;h=m/60;
? Danach können Sie das auch loswerdens+=
.JavaScript 110 Bytes
Wobei x die Eingabe ist
Ich denke nicht, dass dies der effizienteste Weg ist
quelle
PHP, 80
8893Bytes(gespeichert als ISO-8859-1)
Funktioniert nur unter PHP 5 wegen veralteter
split
Funktion. Es wird davon ausgegangen, dass keine Benachrichtigungen angezeigt werden.Wie es funktioniert:
¤—’¢
ist"[hm]"
invertiert und ein gültiger Konstantenname, PHP verwendet undefinierte Konstanten als String (speichert ein Zeichen für die Anführungszeichen)·Å–ÅŒ
ist das gleiche für"H:i:s"
<?=x,y
gibt x und y aus. Mit!
wird das Ergebnis der$s
Zuweisung in einen Booleschen Wert konvertiert und negiert. Anschließend wird es in einen String für die Ausgabe konvertiert.(string)false === ''
split("[hm]", "XhYmZs")
teilt die Zeichenfolge auf[X,Y,Zs]
. Dann3600*X+60*Y+Zs
ist die Anzahl der Sekunden. PHP konvertiertZs
in Integer alsZ
date(Z)
, verwenden dieses Ergebnis als Zeitstempel und drucken seinen Zeitanteil als "Stunden: Minuten: Sekunden". In UTC (Offset 0), der Zeitstempel0
ist1970/01/01 00:00:00
. Durch das Subtrahieren des Zeitzonenversatzes wird das Datum als UTC normalisiert, ohne dass die tatsächlich verwendete Zeitzone geändert wird (dies sparte 8 Byte für die Einstellung der Zeitzone).quelle
AutoIt, 208 Bytes
Zu lang. Prüfung:
quelle
Pyth, 40 Bytes
Ich lerne immernoch. Probieren Sie es hier aus!
quelle
Perl 5, 84 (83 Bytes + 1)
Verwendet den Überlauf von Sekunden oder Minuten.
Prüfung
quelle
VBA (
150 bis149 Byte)quelle
msgbox
als Ausgabe verwenden, können Sie zu a wechselnSub
und 2 Bytes sparen. Sie können auch den ganzen nicht benötigten weißen Raum um das=
und nach jedem,
JavaScript, 97 Bytes
quelle
Invalid left-hand side in assignment
PowerShell, 84 Bytes
Teilt die Befehlszeileneingabe basierend auf der
[hms]
Regex in ein Array von Zeichenfolgen auf . Verwendet die verbose integrierte Funktion.AddSeconds()
, um(date 0)
a / k / a (Stunden * 3600, Minuten * 60 und Sekunden) zu addieren, undMonday, January 1, 0001, 12:00:00 AM
speist diese dann in eine-f
Formatierung ein,HH:mm:ss
die sie automatisch in das 24-Stunden-Format umwandelt und ausgibt.Beispiel:
quelle
Lua, 104 Bytes
quelle
VB.NET (107 Bytes)
Erste Einreichung für Code Golf, also schätze ich die Anzahl der Zeichen => Anzahl der Bytes?
quelle
Python 3, 158
Ungolfed-Version:
quelle
CJam, 50 Bytes
quelle
GNU sed + date, 51 Bytes
(einschließlich +1 Byte für
-r
Flag)Dabei wird einfach
date
die angegebene Anzahl von Stunden, Minuten und Sekunden zu00:00:00
(heute) addiert und der Zeitteil angezeigt. Es wird empfohlen,TZ=UTC
das Programm so einzustellen oder zu vermeiden, dass eine Ortszeitänderung auftritt (z. B. Sommerzeit).quelle