Program
Dostępne są dwie struny, A i B . A to bieżąca pozycja, w której znajduje się stoper, a B to pozycja, w której stoper się zatrzyma. Oba ciągi mają format m: ss . Musisz napisać program, który określa pozostały czas, który również powinien być sformatowany jako m: ss lub mm: ss .
Przykład
0:00 0:01 -> 0:01
0:55 1:00 -> 0:05
1:45 3:15 -> 1:30
:
jest to polecenie (dane jako filozofia kodu). Czy zamiast tego mogę używać spacji, czy muszę znaleźć inny język, aby na to odpowiedzieć?01:30
prawidłowy wynik? (wiodące zero)Odpowiedzi:
Excel, 6 bajtów
Zakładając, że A jest w komórce,
A1
a B w komórceB1
źródło
|vy':¡
bootstrapped w 05AB1E, nic nie mogę zrobić ... Myślę, że Excel może szczerze wygrać, nic innego automatycznie nie analizuje tego formatu, o którym wiem.45:45
A1 i22:22
B1, wynikiem będzie23:23:00
Edit Nevermind - maksymalna wartość oczekiwana dla m wynosi 9.MATL ,
177 bajtówDane wejściowe to tablica komórek ciągów znaków w postaci
{'1:45' '3:15'}
lub{'1:45', '3:15'}
.Wypróbuj online!
Wyjaśnienie
źródło
Bash + coreutils,
4439 bajtówWypróbuj online!
Objaśnienie: użycie „1:45 3:15” jako przypadku testowego (ostatni przykład). W cudzysłowie pokazuję kroki pośrednie.
Zauważ, że nie sprawdzam, czy wartość minutowa wymaga zerowania, ponieważ OP stwierdził, że maksymalna wartość
m
wynosi 9.Poniżej znajduje się moja oryginalna 44-bajtowa odpowiedź, która użyła
date
polecenia, aby zmienić całkowity czas w sekundach nam:ss
format.źródło
Python 2,
90878380 bajtówPrzyjmuje dane wejściowe jak
"2:45","5:01"
.Wypróbuj online
źródło
a,b=[60*int(s[-5:-3])+int(s[-2:])for s in input()]
print'%d:%02d'%divmod(b-a,60)
:)c, 86
Odczytuje czasy STDIN oddzielone spacjami.
Wypróbuj online .
źródło
Partia, 74 bajty
Zastąpienie
:
in the time*60+1
konwertuje go na wyrażenie, które oblicza liczbę sekund. Batch interpretuje początkowe zera jako ósemkowe, więc wstawiam a1
na sekundy, aby zapewnić konwersję dziesiętną; na szczęście oba1
s anulowane.źródło
C,
112100 bajtówPodziękowania dla @betseg za uratowanie 11 bajtów i podziękowania dla @Johan du Toit za uratowanie jednego bajtu!
Wypróbuj online!
źródło
%s%d
pomocą%02d
i usunąć?:
. Wypróbuj online!scanf()
jest twoim przyjacielem do czytania wielu liczb całkowitych.MySQL,
1322 bajtówoczekuje czasów w
A
iB
.źródło
Narzędzia Bash + GNU, 43
Wypróbuj online .
Wyjaśnienie
Zwróć uwagę, że
dc
wyrażenie dzieli przez 60, ponieważdate
odczytuje dane wejściowe jako H: MM zamiast M: SS.źródło
ECMAScript 6,
999185 bajtówPojedyncza linia:
Lekko sformatowany:
Wydaje mi się, że mogą tam być jakieś oszczędności ... ale obecnie ich nie widzę.
Edytuj - doskonałe sugestie w komentarzach.
źródło
s
.s.split(":")
, można użyć nowszej składni:s.split<backtick>:<backtick>
.PHP,
5553 bajtówpobiera dane wejściowe z argumentów wiersza poleceń
źródło
<?=date('i:s',($x=strtotime)($argv[2])-$x($argv[1]));
C #, 72 bajty
Pobiera dane wejściowe jako ciągi znaków.
b="3:15"
a="1:45"
.Wyjaśnienie:
Ponieważ
DateTime.Parse()
zwraca datę whh:mm:ss
formacie, jestem w stanie przeanalizować wynik w ciągu za pomocą+""
, a następnie przyciąć końcowe:00
.Działa to,
hh:mm
ponieważ zarówno 60 sekund na minutę, jak i 60 minut na godzinę.0:01
0:00
zwraca0:01
1:00
0:55
zwraca0:05
3:15
1:45
zwraca1:30
źródło
DateTime.Parse()
przyjmuje dane wejściowe - na przykład1:45
- jakohh:mm
i niemm:ss
, co skutkuje następującymi danymi wyjściowymi - dla A1:45
i B3:15
-[01:30:00]
(hh:mm:ss
) ( nawet zCultureInfo.InvariantCulture
określonym ). Być może będziesz musiał dodać"0:" + a/b
podczas parsowania.:00
.;
na końcu, możesz użyć curry, tj.a=>b=>
Musisz w pełni się zakwalifikowaćDateTime
lub dołączyćusing System;
.Rebol, 5 bajtów
Zakładając, że nie przegapiłem żadnych zasad ..
Rebol ma wbudowaną arytmetykę dla wielu dosłownych typów danych. Dotyczy to również jego potomków, takich jak Czerwony
źródło
Pyth,
47454440 BajtówOddziela dane wejściowe od nowych linii.
Pyth nie miał wbudowanego czasu przydatnego do tego. Próbowałem trochę fantazyjnych rzeczy eval (), ale najwyraźniej Pyth nie może ewaluować rzeczy z
*
zerami wiodącymi. Trwało to znacznie dłużej, niż się spodziewałem. Sporo bajtów wydaje się na dodanie wiodącego zera do wyniku. Przynajmniej jestem krótszy niż bash. Na żądanie doda wyjaśnienie.Spróbuj tego!
alternatywne rozwiązanie, 48 bajtów
źródło
Haskell,
9812786 bajtówWypróbuj online!
Ale zastanawiam się, czy są do tego jakieś funkcje biblioteczne
EDYCJA: Usunięto import, naprawiono także błąd, w którym pokazywał m: s zamiast m: ss
Również dobrze sformatowana wersja:
EDIT2: Golfed off (30?) Bajtów dzięki Laikoni! Grał także w inne gry. bajty.
źródło
T-SQL, 238 bajtów
Stosowanie:
Widząc wcześniej przykład PostGres, zdałem sobie sprawę, że nie widziałem wielu prób gry w golfa w SQL, więc spróbowałem w T-SQL. Teraz wiem, dlaczego nie widzisz dużo golfa w SQL: D
źródło
CJam ,
343325 bajtówZaoszczędź 8 bajtów dzięki Martinowi Enderowi!
Wypróbuj online!
Wyjaśnienie
źródło
T-SQL, 82 bajty
źródło
Python, 160 bajtów
Nadal jestem nowy w kodowaniu golfa, więc jeśli ktoś ma jakieś sugestie, byłbym wdzięczny.
źródło
raw_input()
.REXX, 79 bajtów
źródło
Pyth, 28
Spróbować .
Wyjaśnienie
źródło
Java 7, 164 bajty
Wyjaśnienie:
Kod testowy:
Wypróbuj tutaj.
Wydajność:
źródło
TXR Lisp, 101 bajtów
Skondensowany:
(awk(:let(s"%M:%S"))((mf(time-parse s))(prn(time-string-local(-[f 1].(time-utc)[f 0].(time-utc))s))))
źródło
Ruby , 91 bajtów
Wypróbuj online!
Pobiera dane wejściowe z argumentów wiersza poleceń.
Wezwanie:
Przykład:
Wydajność:
źródło
PowerShell 47 bajtów
Prosta matematyka przedziału czasowego i obejmująca ciąg godzin i sekund.
źródło
JavaScript, 88 bajtów
Wypróbuj online!
Wyjaśnienie:
Dzieli dane wejściowe na jelicie grubym
Konwertuje ciąg na int
Pobiera wartość minut
Pobiera drugą wartość
Zwraca ciąg minut: sekundy
źródło