Untuk tantangan ini, kami menulis waktu dalam bentuk berikut: hh:mm:ss
Beberapa contoh:
12:34:08
06:05:30
23:59:00
Tantangannya adalah untuk mengeluarkan waktu setelah jumlah jam , menit dan detik berlalu, dengan waktu mulai 00:00:00
. Anda dapat membandingkan ini dengan timer yang dimulai pada 00:00:00
.
Berikut adalah contoh input (menggunakan STDIN ) dan output:
Input: 1h20m5s
Output: 01:20:05
Input: 0h100m0s
Output: 01:40:00
Setelah 24 jam, timer akan mereset sendiri:
Input: 25h0m0s
Output: 01:00:00
Bentuk input selalu sama:, XhYmZs
dengan X
jam, Y
menit dan Z
detik (anggap saja X
, Y
dan Z
bilangan bulat utuh kurang dari 100000 dan tidak pernah negatif)
Ini adalah kode-golf , jadi jumlah byte yang paling sedikit memenangkan tantangan ini
Jawaban:
CJam, 34 byte
Coba di sini .
sumber
Ruby -
1311151079784 byteSaya masih bermain golf.
Terima kasih atas @ Doorknob untuk / \ w / inshead dari / h | m | s /
sumber
gets.tr('ms',?h).split(?h)
->gets.split(/\w/)
.Mathematica,
133116112111 bytesumber
Python 2,
138126 BytesSekarang saya menggunakan regex, masih cukup lama ..
Masukan harus dalam tanda kutip.
sumber
C
149112 byteUji di sini
Kredit ke @ Dennis untuk menyingkirkan banyak itu.
sumber
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 byte, dibaca dari STDIN)h,m,s;main()
harus lebih portabel.main(h,m,s)
bekerja dengan GCC ( tautan )m=s/60;h=m/60;
? Setelah ini, Anda juga bisa menyingkirkannyas+=
.JavaScript 110 byte
Di mana x adalah input
Saya rasa ini bukan cara yang paling efisien
sumber
PHP, 80
8893Bytes(disimpan sebagai ISO-8859-1)
Hanya
split
berfungsi di PHP 5 karena fungsinya yang sudah tidak digunakan lagi . Menganggap bahwa pemberitahuan tidak ditampilkan.Bagaimana itu bekerja:
¤—’¢
adalah"[hm]"
terbalik dan nama konstan valid, PHP menggunakan konstanta terdefinisi sebagai string (menghemat satu karakter untuk tanda kutip)·Å–ÅŒ
adalah sama untuk"H:i:s"
<?=x,y
output x dan y. Dengan menggunakan!
, hasil$s
penugasan akan dikonversi ke boolean dan dinegasikan, kemudian dikonversi ke string ke output.(string)false === ''
split("[hm]", "XhYmZs")
membagi string menjadi[X,Y,Zs]
. Lalu,3600*X+60*Y+Zs
adalah jumlah detik. PHP mengonversiZs
menjadi integer sebagaiZ
date(Z)
, menggunakan hasil ini sebagai cap waktu dan mencetak bagian waktunya sebagai "jam: menit: detik". Di UTC (offset 0), cap waktu0
adalah1970/01/01 00:00:00
. Mengurangi zona waktu akan menormalkan tanggal sebagai UTC tanpa mengubah zona waktu yang sebenarnya digunakan (ini menghemat 8 byte untuk pengaturan zona waktu).sumber
AutoIt, 208 byte
Terlalu panjang. Uji:
sumber
Pyth, 40 byte
Saya masih belajar. Coba di sini!
sumber
Perl 5, 84 (83 Bytes + 1)
Menggunakan luapan detik atau menit.
Uji
sumber
VBA (
150149 bytes)sumber
msgbox
sebagai output, Anda dapat mengubah keSub
dan menyimpan 2 byte. Anda juga dapat=
,
JavaScript, 97 byte
sumber
Invalid left-hand side in assignment
PowerShell, 84 Bytes
Splits the command-line input into an array of strings based on the
[hms]
regex. Uses the verbose built-in function.AddSeconds()
to add (hours*3600, minutes*60, and seconds) to(date 0)
a/k/aMonday, January 1, 0001, 12:00:00 AM
, then feeds that into-f
with formattingHH:mm:ss
which will automatically convert it to 24-hour clock format and output it.Example:
sumber
Lua, 104 bytes
sumber
VB.NET (107 bytes)
First submission for code golf so I'm guessing character count => byte count?
sumber
Python 3, 158
Ungolfed version:
sumber
CJam, 50 bytes
sumber
GNU sed + date, 51 byte
(termasuk +1 byte untuk
-r
flag)Ini cukup
date
dengan menambahkan jumlah jam, menit, dan detik yang ditentukan ke00:00:00
(hari ini) dan menampilkan bagian waktu. Disarankan untuk mengaturTZ=UTC
atau menghindari menjalankan program di sekitar perubahan waktu setempat (mis. Penghematan siang hari).sumber