Do tego wyzwania piszemy czas w następującej formie: hh:mm:ss
Kilka przykładów:
12:34:08
06:05:30
23:59:00
Wyzwanie polega na wyprowadzeniu czasu po upływie godzin , minut i sekund jako początkowego czasu 00:00:00
. Możesz to porównać z timerem, który zaczął się od 00:00:00
.
Oto przykład danych wejściowych (przy użyciu STDIN ) i danych wyjściowych:
Input: 1h20m5s
Output: 01:20:05
Input: 0h100m0s
Output: 01:40:00
Po 24 godzinach licznik resetuje się sam:
Input: 25h0m0s
Output: 01:00:00
Formularz wejścia jest zawsze taka sama: XhYmZs
z X
godzinach, Y
minutach i Z
sekundach (zakładamy, że X
, Y
i Z
są liczbami całkowitymi mniej niż 100.000 i nie ujemna)
To jest golf golfowy , więc najmniejsza ilość bajtów wygrywa to wyzwanie
Odpowiedzi:
CJam, 34 bajty
Wypróbuj tutaj .
źródło
Rubinowy -
1311151079784 bajtówNadal gram w golfa.
Dzięki za @Doorknob za / \ w / inshead of / h | m | s /
źródło
gets.tr('ms',?h).split(?h)
->gets.split(/\w/)
.Mathematica,
133116112111 bajtówźródło
Python 2,
138126 bajtówTeraz używam wyrażenia regularnego, choć wciąż dość długo ...
Dane wejściowe powinny być w cudzysłowach.
źródło
do
149112 bajtówSprawdź to tutaj
Podziękowania dla @Dennis za pozbycie się go dużo.
źródło
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 bajtów, odczyt ze STDIN)h,m,s;main()
powinien być bardziej przenośny.main(h,m,s)
współpracuje z GCC ( link )m=s/60;h=m/60;
? Po tym możesz się też pozbyćs+=
.JavaScript 110 bajtów
Gdzie x jest wejściem
Nie sądzę, że jest to najbardziej efektywny sposób
źródło
PHP, 80
8893Bajty(zapisany jako ISO-8859-1)
Działa tylko na PHP 5 z powodu przestarzałej
split
funkcji. Zakłada, że powiadomienia nie są wyświetlane.Jak to działa:
¤—’¢
jest"[hm]"
odwrócony i jest prawidłową nazwą stałą, PHP używa niezdefiniowanych stałych jako łańcucha (zapisuje jeden znak dla cudzysłowów)·Å–ÅŒ
jest taki sam dla"H:i:s"
<?=x,y
wyjścia x i y. Używając!
, wynik$s
przypisania jest konwertowany na wartość logiczną i negowany, a następnie konwertowany na ciąg znaków na wyjście.(string)false === ''
split("[hm]", "XhYmZs")
dzieli ciąg na[X,Y,Zs]
. Zatem3600*X+60*Y+Zs
jest liczbą sekund. PHP konwertujeZs
na liczbę całkowitą jakoZ
date(Z)
, wykorzystujemy ten wynik jako znacznik czasu i wypisujemy jego część czasu jako „godziny: minuty: sekundy”. W UTC (przesunięcie 0) znacznik czasu0
to1970/01/01 00:00:00
. Odjęcie przesunięcia strefy czasowej normalizuje datę jako UTC bez zmiany faktycznie używanej strefy czasowej (dzięki temu zaoszczędzono 8 bajtów na ustawienie strefy czasowej).źródło
AutoIt, 208 bajtów
Za długo. Test:
źródło
Pyth, 40 bajtów
Nadal się uczę. Wypróbuj tutaj!
źródło
Perl 5, 84 (83 bajtów + 1)
Wykorzystuje przepełnienie sekund lub minut.
Test
źródło
VBA (
150149 bajtów)źródło
msgbox
jako wyjścia, możesz zmienić na aSub
i zapisać 2 bajty. Możesz także=
,
JavaScript, 97 bajtów
źródło
Invalid left-hand side in assignment
PowerShell, 84 bajtów
Dzieli dane z wiersza poleceń na tablicę ciągów znaków opartych na
[hms]
wyrażeniu regularnym. Używa pełnej wbudowanej funkcji,.AddSeconds()
aby dodać (godziny * 3600, minuty * 60 i sekundy) do(date 0)
/ k / aMonday, January 1, 0001, 12:00:00 AM
, a następnie przekazuje to do-f
formatowaniaHH:mm:ss
który automatycznie przekonwertuje go na format 24-godzinny i wyśle go.Przykład:
źródło
Lua, 104 bajty
źródło
VB.NET (107 bajtów)
Pierwsze zgłoszenie do kodu golfa, więc zgaduję liczbę znaków => liczbę bajtów?
źródło
Python 3, 158
Wersja bez golfa:
źródło
CJam, 50 bajtów
źródło
GNU sed + data, 51 bajtów
(w tym +1 bajt na
-r
flagę)To po prostu
date
dodaje określoną liczbę godzin, minut i sekund do00:00:00
(dzisiaj) i wyświetla część czasu. Zalecane, aby ustawićTZ=UTC
lub unikać uruchamiania programu wokół zmiany czasu lokalnego (np. Czas letni).źródło