Das Programm
Sie sind zwei Strings, da A und B . A ist die aktuelle Position, an der sich Ihr Timer befindet, und B ist die Position, an der Ihr Timer anhält. Beide Zeichenfolgen haben das Format m: ss . Sie müssen ein Programm schreiben, das die verbleibende Zeit festlegt, die auch als m: ss oder mm: ss formatiert werden soll .
Beispiel
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
es sich um einen Befehl handelt (Daten als Codephilosophie). Darf ich stattdessen Leerzeichen verwenden oder muss ich eine andere Sprache finden, um dies zu beantworten?01:30
gültige Ausgabe? (führende Null)Antworten:
Excel, 6 Bytes
Angenommen, A ist in der Zelle
A1
und B ist in der ZelleB1
quelle
|vy':¡
bootstrapped in 05AB1E, nichts, was ich tun kann ... Ich denke, Excel kann dies ehrlich gewinnen, nichts anderes analysiert automatisch das Format, das ich kenne.45:45
A1 und22:22
B123:23:00
MATL ,
177 BytesDie Eingabe ist ein Zellenarray von Zeichenfolgen in der Form
{'1:45' '3:15'}
oder{'1:45', '3:15'}
.Probieren Sie es online!
Erläuterung
quelle
Bash + Coreutils,
4439 BytesProbieren Sie es online!
Erläuterung: Verwenden von "1:45 3:15" als Testfall (letztes Beispiel). Ich zeige Zwischenschritte in Anführungszeichen.
Beachten Sie, dass ich nicht überprüfe, ob der Minutenwert eine Auffüllung von Null benötigt, da das OP angab, dass der Maximalwert für
m
9 ist.Unten ist meine ursprüngliche 44-Byte-Antwort, die den
date
Befehl verwendete, um die verbleibende Gesamtzeit in Sekunden in dasm:ss
Format umzuwandeln.quelle
Python 2,
90878380 BytesNimmt Eingaben wie
"2:45","5:01"
.Probieren Sie es online aus
quelle
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)c, 86
Liest durch Leerzeichen getrennte Zeiten aus STDIN.
Probieren Sie es online aus .
quelle
Batch, 74 Bytes
Durch Ersetzen der
:
in der Zeit durch*60+1
wird sie in einen Ausdruck umgewandelt, der die Anzahl der Sekunden berechnet. Batch interpretiert führende Nullen als Oktal, daher stelle ich a1
vor die Sekunden, um die Dezimalumwandlung sicherzustellen. Zum Glück fallen die beiden1
aus.quelle
C
112100 BytesDanke an @betseg für das Speichern von 11 Bytes und danke an @Johan du Toit für das Speichern von einem Byte!
Probieren Sie es online!
quelle
%s%d
mit%02d
und entfernen Sie das?:
. Probieren Sie es online!scanf()
ist dein Freund für das Lesen mehrerer Ganzzahlen.MySQL,
1322 Byteserwartet die mal in
A
undB
.quelle
Bash + GNU-Dienstprogramme, 43
Probieren Sie es online aus .
Erläuterung
Beachten Sie, dass der
dc
Ausdruck durch 60 geteilt wird, dadate
die Eingabe als H: MM anstelle von M: SS gelesen wird.quelle
ECMAScript 6,
999185 BytesEinzelne Zeile:
Leicht formatiert:
Ich habe das Gefühl, dass es einige Einsparungen geben könnte. Aber ich sehe sie derzeit nicht.
Bearbeiten - hervorragende Vorschläge in den Kommentaren.
quelle
s
.s.split(":")
, können Sie die neuere Syntax:s.split<backtick>:<backtick>
.PHP,
5553 BytesNimmt Eingaben von Befehlszeilenargumenten entgegen
quelle
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 Bytes
Übernimmt die Eingabe als Zeichenfolge.
b="3:15"
a="1:45"
.Erläuterung:
Da
DateTime.Parse()
ein Datum imhh:mm:ss
Format zurückgegeben wird, kann ich das Ergebnis mithilfe von in eine Zeichenfolge umwandeln+""
und anschließend das Ende abschneiden:00
.Dies funktioniert,
hh:mm
da in einer Minute 60 Sekunden und in einer Stunde 60 Minuten sind.0:01
0:00
kehrt zurück0:01
1:00
0:55
kehrt zurück0:05
3:15
1:45
kehrt zurück1:30
quelle
DateTime.Parse()
die Eingabe - zum Beispiel1:45
- alshh:mm
und nichtmm:ss
, was zu der folgenden Ausgabe führt - für A1:45
und B3:15
-[01:30:00]
(hh:mm:ss
) ( auch beiCultureInfo.InvariantCulture
angegebener ). Möglicherweise müssen Sie"0:" + a/b
beim Parsen ein hinzufügen .:00
.;
am Ende eine, Sie können Curry verwenden, dha=>b=>
Sie müssen sich voll qualifizierenDateTime
oder einbeziehenusing System;
.Rebol, 5 Bytes
Vorausgesetzt, ich habe keine Regeln verpasst ..
Rebol verfügt über eine integrierte Arithmetik für eine Reihe von Literaldatentypen. Dies gilt auch für seine Nachkommen wie Red
quelle
Pyth,
47454440 BytesNimmt die Eingabe durch Zeilenumbrüche getrennt.
Pyth hatte dafür keine nützlichen Zeiteinbauten. Ich habe ein paar ausgefallene eval () - Sachen ausprobiert, aber anscheinend kann Pyth keine Sachen mit
*
oder ohne führende Nullen auswerten. Das wurde viel länger als ich gehofft hatte. Einige Bytes werden für das Hinzufügen einer führenden Null zur Ausgabe aufgewendet. Zumindest bin ich kleiner als Bash. Fügt bei Aufforderung eine Erklärung hinzu.Versuche dies!
alternative Lösung, 48 Bytes
quelle
Haskell,
9812786 BytesProbieren Sie es online!
Aber ich frage mich, ob es dafür einige Bibliotheksfunktionen gibt
BEARBEITEN: Der Import wurde entfernt, außerdem wurde ein Fehler behoben, bei dem m: s statt m: ss angezeigt wurde
Auch gut formatierte Version:
EDIT2: Aus (30?) Bytes dank Laikoni! Golf auch einige andere misc. Bytes.
quelle
T-SQL, 238 Bytes
Verwendung:
Als ich das PostGres-Beispiel sah, stellte ich fest, dass ich in SQL nicht viele Golfversuche gesehen hatte, und versuchte es in T-SQL. Jetzt weiß ich, warum Sie in SQL nicht viel Golf spielen sehen: D
quelle
CJam ,
343325 Bytes8 Bytes gespart dank Martin Ender!
Probieren Sie es online!
Erläuterung
quelle
T-SQL, 82 Bytes
quelle
Python, 160 Bytes
Ich bin noch ein Neuling im Codieren von Golf. Wenn also jemand Vorschläge hat, würde ich mich freuen.
quelle
raw_input()
.REXX, 79 Bytes
quelle
Pyth, 28
Probieren Sie es aus .
Erläuterung
quelle
Java 7, 164 Bytes
Erläuterung:
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
TXR Lisp, 101 Bytes
Kondensiert:
(awk(:let(s"%M:%S"))((mf(time-parse s))(prn(time-string-local(-[f 1].(time-utc)[f 0].(time-utc))s))))
quelle
Rubin , 91 Bytes
Probieren Sie es online!
Übernimmt Eingaben von Befehlszeilenargumenten.
Aufruf:
Beispiel:
Ausgabe:
quelle
PowerShell 47 Bytes
Einfache Zeitberechnung und Umrechnung auf Stunden- und Sekundenschnur.
quelle
JavaScript, 88 Bytes
Probieren Sie es online!
Erläuterung:
Teilt die Eingaben am Doppelpunkt auf
Konvertiert einen String in einen int
Ruft den Minutenwert ab
Ruft den zweiten Wert ab
Gibt die Zeichenfolge Minuten: Sekunden zurück
quelle