Format Waktu Game Tambahan
Tujuan
Game tambahan sering kali memiliki penghitung waktu mundur yang menyatakan hari, jam, menit, dan detik hingga tugas selesai. Bergantung pada ruang yang tersedia, mereka dapat diformat sebagai:
2d 13h
23h 59m 48s
14m
3h 0m 0s
Tujuan golf kode ini adalah untuk menulis fungsi atau program yang melakukan pemformatan ini.
Input
- Total jumlah detik.
- Jumlah maksimum segmen untuk diproduksi.
Keluaran
- Segmen meliputi:
- 0w minggu
- Hari 0d
- Jam 0jam
- 0 m menit
- 0 detik
- Setiap segmen dipisahkan oleh satu ruang.
- Segmen yang ditampilkan harus bersebelahan. Misalnya, Anda tidak akan menampilkan jam dan detik tanpa menunjukkan menit, bahkan jika ada nol menit.
- Nilai satu digit tidak memiliki nol di depan, meskipun nilai nol harus ditunjukkan sebagai
0
. - Nilai dibulatkan ke bawah.
- Segmen pertama yang ditampilkan adalah nilai bukan nol pertama.
Uji Kasus
seconds segments output
0 1 0s
123 1 2m
123 2 2m 3s
123 3 2m 3s
82815 3 23h 0m 15s
307891 2 3d 13h
307891 4 3d 13h 31m 31s
604800 1 1w
604800 6 1w 0d 0h 0m 0s
Kemenangan
Solusi byte-count terendah dalam satu minggu akan memenangkan "penerimaan".
Suntingan
- Klarifikasi segmen mana yang lebih dulu, seperti yang ditunjukkan dalam contoh.
- Menambahkan test case 4 sesuai permintaan.
307891 1
?0w
atau1w
.3d
? "Segmen pertama yang ditampilkan adalah nilai bukan nol pertama"Jawaban:
CJam (snapshot),
4138 byteDi atas menggunakan notasi tanda kuret, karena dua karakter tidak dicetak.
Terima kasih kepada @ Sp3000 untuk bermain golf 2 byte.
Pengujian
Rilis stabil terbaru (0.6.5) memiliki bug yang dapat menyebabkan
{}#
mengembalikan Integer, bukan Longs. Cukup paradoks, ini dapat dielakkan dengan casting ke integer (i
).Untuk menjalankan ini dengan kode dengan penerjemah online, klik tautan permanen ini atau salin kode dari tempel ini .
Atau, Anda dapat mengunduh dan membuat snapshot terbaru dengan menjalankan perintah berikut:
Anda dapat membuat file CJam seperti ini:
Bagaimana itu bekerja
sumber
Java,
197191 byteSaya hanya memperhatikan bahwa Java mendukung deklarasi seperti
String a[]
. Ini memungkinkan saya untuk menarik deklarasib
danz
ke baris yang sama, yang menyelamatkan saya dari menulisString
lagi.sumber
;z=" ")
- sangat pintar.C,
134127110104103 byteVersi baru:
Versi sebelumnya:
sumber
Pyth,
3943 bytesunting: +4 karakter, karena saya lupa
0s
test case.Ini termasuk 2 karakter yang tidak diinginkan. Dapatkan kode aktual dan coba online: Demonstrasi
Penjelasan:
sumber
Python 2.7 -
181178174 byteUpaya pertama saya untuk bermain golf sesuatu.
sumber
if n!=0
menjadi adilif n
.Julia, 158 byte
Saya yakin ini bisa lebih pendek dengan pendekatan yang lebih pintar, tapi inilah yang saya miliki untuk saat ini.
Ini menciptakan fungsi tanpa nama yang menerima dua bilangan bulat sebagai input dan mengembalikan string. Untuk menyebutnya, berikan nama, mis
f=(s,g)->...
.Penjelasan + tidak dikumpulkan:
Contoh:
sumber
Scala, 147 byte
sumber
rs , 367 byte
Demo langsung dan semua kasus uji.
Berantakan, berantakan, berantakan ...
Diperlukan waktu sekitar 3-7 detik untuk menjalankan kasus uji di Chrome untuk Android. Jangan tidak menggunakan mode debug, yang dapat membekukan browser Anda dalam hal ini karena semua output yang akan dicetak.
sumber
C #,
239 237 170164 byteIni bukan tempat yang sekompak solusi lain, tapi saya tidak bisa menghadapi tantangan ini tanpa harus menusuknya sendiri.
Iterasi terbaru ini terinspirasi oleh jawaban ESC .
Diindentasi untuk kejelasan:
sumber