Dengan bilangan bulat antara 0 dan 141 (inklusif), cantumkan semua waktu 24 jam yang jamnya, menit, dan unit kedua ditambahkan ke bilangan bulat itu.
Aturan penambahan
Angka ditambahkan oleh unit waktu mereka, bukan oleh digit tunggal.
Misalnya, ambil 17:43:59
17 + 43 + 59 = 119
Ingat, itu adalah contoh angka yang ditambahkan. Pada kenyataannya, Anda akan memasuki 119, dan 17:43:59 akan menjadi salah satu hasilnya. Output harus diberikan sebagai HH: MM: SS atau H: MM: SS.
Perlu diingat juga bahwa angka tertinggi yang mungkin adalah 141, menjadi 23:59:59. Ini kode golf, jadi jumlah terendah yang menang. Trial and error diizinkan, tetapi mungkin ada cara yang lebih baik untuk melakukan ini.
Sunting: Silakan tentukan di mana dalam kode Anda nilai inputnya.
Jawaban:
Jelly ,
16302920 byteSekarang dengan format output yang benar! Terima kasih banyak untuk Dennis atas bantuannya dalam men-debug jawaban ini. Saran golf diterima. Cobalah online!
Edit: +14 byte dari menggunakan format output yang benar. -1 byte dari menghapus ruang ekstra. -3 dari berubah dari
24,60,60
menjadi“ð<<‘
. -6 byte dari berubah+100DḊ€€
menjadid⁵
.Penjelasan
sumber
Bash, 71
Cobalah online .
sumber
printf
mahal di sini. Dengan semakint
dekat ke format yang tepat, dan memperbaikinya untuk membuat((t-$1))
pekerjaan, Anda bisa turun ke 71:for t in {0..23}+{00..59}+{00..59};{((${t//+0/+}-$1))||echo ${t//+/:};}
Perl 6 ,
6256 byteCukup periksa semua kemungkinan kombinasi dalam produk silang dari semua jam, menit, dan detik.
sumber
Python 3 , 91 byte
Ada solusi yang lebih pendek menggunakan
exec
(Python 2) atau rekursi (Python 3), tetapi keduanya membutuhkan jumlah memori yang tidak masuk akal.Cobalah online!
sumber
PowerShell ,
8777 byteDisimpan 10 byte berkat John L. Bevan
Cobalah online! (Ini akan waktu, sangat lambat)
Penjelasan
Cukup sederhana, dimulai dengan yang sekarang
[datetime]
, tambahkan 1 detik 86.399 kali, format sebagai string, kemudian simpan hanya yang jumlahnya bertambah.sumber
10000000
dengan1e7l
untuk menyimpan 4 byte ... atau bahkan1e7
untuk byte tambahan (saya pikir; saya harus memasukkanL
untuk manfaat parameter; tetapi curiga pendekatan Anda menghindari kebutuhan itu.1e7
selama setidaknya 30 menit, dan itu adalahL
postfix yang saya lewatkan; Saya lupa tentang hal itu dan tidak bisa menemukan cara untuk mendapatkannya ke int yang lebih pendek dari konstanta. Yang memutuskan bahwa bahwa[timespan]
menafsirkan suatu[int]
sebagai kutu dan[double]
sebagai hari sih ?? Theiex
bit cukup brilian, meskipun itu membuat semua ini inordinately lebih lambat.iex
trik diadaptasi dari tip di sini: codegolf.stackexchange.com/a/746/6776Haskell, 77 byte
sumber
Haskell, 90 byte
Mengembalikan daftar HH: MM: SS strings, eg
f 140
->["22:59:59","23:58:59","23:59:58"]
.Ini tiga loop sederhana melalui jam, menit, dan detik. Simpan dan format semua nilai di mana jumlah adalah nomor input
x
.sumber
Pyth - 30 byte
Mengambil semua waktu yang mungkin lalu memfilter.
Test Suite .
sumber
Julia 0,5 , 69 byte
Cobalah online!
sumber
Batch, 168 byte
Menghasilkan jam satu digit.
sumber
Mathematica, 79 byte
sumber
Oktaf,
83, 87 byteCobalah secara Online!
sumber
QBIC ,
8272 byteIni mengenai tempat yang tidak menguntungkan di QBasic, dengan casting ke nomor, pemangkasan dan prabayar
0
ketika diperlukan benar-benar mahal.Output sampel:
Penjelasansaya menulis sebuah novel tentang itu:sumber
PowerShell , 67
79Bytes (versi jahat)Karena aturan tidak mengatakan apa pun tentang menyelesaikan dalam waktu tertentu (atau sama sekali), dan tidak ada tentang tidak ada duplikat, inilah solusi yang mengerikan:
sumber
Racket 39 byte
Tidak Disatukan:
sumber
MATL , 29 byte
Cobalah online!
Penjelasan
sumber
JavaScript,
122120 byteMengambil satu string kosong tambahan sebagai input,
yang saya kira tidak diperhitungkan ukurannya. Bytecount yang diperbarui (termasuk histori) untuk menambahkan dua byte untuk inisialisasi string.sumber
JavaScript (ES6), 110
Kurang golf
Uji
sumber
JavaScript, 96 byte
Tampilan yang diperluas:
Loop melalui semua waktu yang mungkin dengan mengulang 86399 ke 1,
Kurangi semua 3 angka dari nilai input untuk mengembalikan nilai falsey jika ketiga angka tersebut menambah hingga nilai input. Jika nilainya falsey, output nilainya.
sumber
bash, 78 byte (menggunakan utilitas BSD) atau 79 byte (non-BSD juga)
Ini sedikit lebih lama dari solusi bash 71-byte @DigitalTrauma dan @ hvd yang bagus, tapi saya agak menyukai gagasan di sini untuk menggunakan angka-angka pada basis 60; Saya ingin tahu apakah ada yang bisa memainkan golf ini sedikit lagi.
Dengan utilitas catatan standar BSD:
Dengan utilitas seq yang lebih universal tersedia:
Idenya adalah untuk menghasilkan angka-angka dari 0 hingga 83699 dan menggunakan dc untuk mengubahnya menjadi basis 60. "Digit" dalam output basis-60 dc adalah angka 2 digit dari 00 hingga 59, dengan spasi memisahkan "digit", jadi ini mencantumkan semua waktu yang diinginkan dari 00 00 00 hingga 23 59 59 dalam hampir format yang diperlukan.
Namun, jika Anda benar-benar melaksanakannya, angka-angka di bawah 60 ^ 2 bukan angka 3-digit pada basis 60, sehingga awal 00 atau 00 00 hilang. Untuk alasan itu, saya benar-benar menghasilkan angka dari 60 ^ 3 hingga 60 ^ 3 + 83699; ini memastikan bahwa semua angka yang dihasilkan tepat 4 digit panjangnya di basis 60. Ini OK selama saya akhirnya membuang digit pertama tambahan (01) yang tidak diperlukan.
Jadi, setelah waktu yang diinginkan dihasilkan, saya hanya mengambil empat kali lipat dari 01 00 00 00 hingga 01 23 59 59, tambahkan tiga angka terakhir dan kurangi argumen $ 1. Jika itu 0, saya kemudian mengambil semuanya dalam quadruple dari karakter ke-3 (membuang "01"), gunakan tr untuk mengonversi spasi menjadi titik dua, dan mencetak hasilnya.
sumber
PowerShell , 91
97byte (termasuk input)param($x)0..23|%{$h=$_;0..59|%{$m=$_;0..59|?{$h+$m+$_-eq$x}|%{"{0:0}:{1:00}:{2:00}"-f$h,$m,$_}}}
atau
param($x)0..23|%{$h=$_;0..59|?{($s=$x-$h-$_)-le59-and$s-ge0}|%{"{0:0}:{1:00}:{2:00}"-f$h,$_,$s}}
<\ s>Diperluas & dikomentari
NB: Dilampaui oleh versi @ Briantist: /codegolf//a/105163/6776
sumber