pengantar
Bayangkan bahwa barisan karakter sebenarnya adalah dua baris. Baris atas - titik - mewakili jam (sistem 24 jam), sedangkan koma rendah - mewakili menit . Satu karakter dapat mewakili jam, menit, atau keduanya - kapan pun memungkinkan.
Pada awalnya mungkin Anda harus mengonversi menit sejak tengah malam menjadi jam dan menit .
Hasilnya adalah string yang menunjukkan waktu saat ini dalam "format dot". Hitungan titik ( apostrof dihitung di sini sebagai titik dan akan dinamakan demikian! ) Adalah hitungan jam sejak tengah malam dan hitungan koma adalah hitungan menit. Saya akan menunjukkan beberapa contoh untuk membuatnya jelas.
- (Keterangan) jj: mm -
result
- (Hanya jam) 05:00 -
'''''
- (Hanya beberapa menit) 00:08 -
,,,,,,,,
- (jam <menit) 03:07 -
;;;,,,,
- (jam> menit) 08:02 -
;;''''''
- (jam = menit) 07:07 -
;;;;;;;
- (awal hari) 00:00 -
( hasil kosong )
Perhatikan bahwa karakter "keduanya" dapat digunakan maks 23 kali - untuk 23: xx, di mana xx adalah 23 atau lebih.
Simbol
Jika karakter harus (lihat aturan 5.) lolos dalam bahasa Anda, Anda dapat mengubahnya menjadi salah satu alternatif. Jika kata alternatif tidak cukup, Anda dapat menggunakan simbol lain - tetapi tetap masuk akal. Aku hanya tidak ingin melarikan diri menjadi penghalang.
;
(titik koma) - penanda untuk kedua jam dan menit (alt::
)'
(apostrof) - penanda untuk jam (alt:'``°
),
(koma) - penanda untuk menit (alt:.
)
Aturan tambahan
- Kode dengan jumlah byte terkecil menang!
- Anda harus menggunakan kedua simbol kapan pun memungkinkan. Untuk 02:04 hasilnya tidak bisa
'',,,,
, juga;',,,
. Itu harus;;,,
- Input - dapat berupa parameter skrip / aplikasi, input pengguna (seperti readline) atau variabel di dalam kode
3.1. Jika variabel di dalam kode digunakan, maka panjangnya harus paling lama mungkin. Ini1439
(23:59), jadi akan terlihat sepertit=1439
- Bagian umum yang dilambangkan dengan karakter "keduanya" (12 dalam 12:05, 3 dalam 03:10) harus diletakkan di awal string
- Simbol dapat diganti menjadi alternatif hanya jika mereka harus lolos dalam kode Anda.
- Masukan diberikan dalam hitungan menit setelah pukul 00:00 . Anda dapat mengasumsikan bahwa ini adalah bilangan bulat non-negatif.
Uji kasus
Input: 300
Output: '''''
Input: 8
Output: ,,,,,,,,
Input: 187
Output: ;;;,,,,
Input: 482
Output: ;;''''''
Input: 427
Output: ;;;;;;;
Input: 0
Output: (empty)
1439
ini23:59
dan tidak1339
. (23 x 60 + 59).Jawaban:
Pyth, 19 byte
Suite uji
sumber
CJam,
222019 byteMengambil input dari STDIN:
Uji di sini.
Penjelasan
Sungguh beruntung betapa baiknya hal-hal bekerja bersama di sini, khususnya penugasan jam ke
'
dan menit,
sedemikian rupa sehingga urutan jam dan menit pada tumpukan cocok dengan representasi string karakter.Ini adalah satu-satunya blok 3-byte yang saya temukan sejauh ini. Ada banyak solusi 4 karakter:
sumber
GNU Sed, 37
Skor termasuk +1 untuk
-E
opsi sed.Saya tidak terlalu terkesan dengan golfiness jawaban bash saya , jadi saya pikir saya akan mencoba sed untuk bersenang-senang.
Input tidak digunakan, sesuai meta-answer ini .
Cobalah online
sumber
Python 2, 56 byte
Fungsi yang mencetak (satu karakter lebih pendek dari
t=input();
).Metode ini mirip dengan Loovjo . Jumlahnya
,
berbeda antara menit dan jam, dengan minimalim implisit 0. Untuk'
, itu negasi. Sebab;
, menghitungmin
secara implisit dengan mengambil sebanyak;
jam, lalu memotong ke jumlah menit.Menghemat karakter untuk menghemat
d
, tetapi bukan jumlah jam dan menit di sini. Analog dengan lambda adalah dua karakter lebih panjang (58), sehingga tugas variabel sepadan.Memproses input secara langsung juga tidak menyimpan karakter (58):
Strategi lain dengan mengiris, lebih lama (64):
sumber
Retina , 24
Port sepele dari jawaban sed saya .
Input tidak digunakan, sesuai meta-answer ini .
Cobalah online.
sumber
Bash Murni (tanpa utilitas eksternal), 103
Terima kasih kepada @ F. Hauri untuk menghemat 2 byte.
sumber
$1
dan$2
masukp()
dan menulisp , $c
di baris 3.printf "%s"
, memilikic
kosong akan berfungsi dengan baik (meskipun tidak digunakan kembali)C, 119 byte
Terperinci
sumber
putchar
& integer literals sebagai karakter menghemat satu byte, menarik titik koma di dalam makro menyimpan dua lagi :)while
di #define macro Anda. -1 byteHaskell,
6866 BytesContoh penggunaan:
Bit pintar di sini adalah yang
replicate
akan mengembalikan string kosong jika panjang yang diberikan negatif atau nol sehingga saya bisa menerapkannya pada kedua perbedaan dan hanya yang positif yang akan muncul. Bagian pertama mudah, karena jumlah titik koma adalah minimum dari keduanya. KemudianzipWith
menerapkan fungsi ke item yang sesuai.EDIT: Menyadari saya menggunakan arang yang salah selama beberapa menit
EDIT 2: Disimpan 2 byte berkat @Laikoni
sumber
concat$
denganid=<<
.JavaScript (ES6) 69
sumber
Powershell,
9985 byteparam($n)";"*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+"'"*(($h-$m)*!$b)+","*(($m-$h)*$b)
Menggunakan metode Loovjo , ini adalah implementasi PowerShell saya.
ungolfed
Disimpan 14 byte berkat AdmBorkBork
sumber
$m
dan$h
mendeklarasikannya, lalu menggunakan perkalian Boolean. Seperti begitu -param($n)';'*(($m=$n%60),($h=$n/60))[($b=$m-gt$h)]+'°'*(($h-$m)*!$b)+','*(($m-$h)*$b)
Python 3, 98 byte
Mungkin bukan jawaban terbaik, tapi itu sangat menyenangkan!
sumber
Python 2, 61 byte
Penjelasan:
sumber
PHP, 81 byte
Saya mencari input variabel karena lebih pendek daripada membaca dari
STDIN
atau mengambil argumen baris perintah.sumber
240
. Coba$i>=min($h,$m)?$h<$m?",":"'":";"
(+1 byte). Atau gunakanfor($_=1439;$i<max($h=0|$_/60,$m=$_%60);)echo"',;"[$i++<min($h,$m)?2:$h<$m];
(76 byte). Btw: kutipan tunggal membuat-r
tidak mungkin; jadi Anda harus menggunakan backtick selama berjam-jam jika dalam string atau°
mandiri (tidak perlu tanda kutip -> -1 byte).JavaScript (ES6),
7771 bytesumber
Perl 6,
103101989769 byteOutput beberapa array, tapi persetan, selamatmenikmati. Seperti biasa, setiap peluang bermain golf diaplikasikan.Sunting: -2 byte: berani dan menghapus beberapa gips.
Sunting2: -3 byte dengan menghapus array.
Sunting3: -1 byte untuk mencetak dalam format yang benar, menggunakan "lambdas" dan menghapus paranthes.
Sunting4: (maaf guys) menyalahgunakan jam - menit harus mengembalikan 0 dan sebaliknya. Pernyataan if dihapus. Kemudian melepas tanda kurung, kemudian menyadari bahwa saya tidak membutuhkan lambda sama sekali. -28 byte :)
Woah aku semakin baik dalam hal ini.
sumber
C, 141 byte
sumber
h>0||m>0
. Maka Andah--;m--;
hanya perlu sekali dalam setiap iterasi dan{}
untuk ituif/else
akan menjadi usang.else if(h&&!m)
hanyaelse if(h)
if
danelse
.scanf()
.%24
itu perlu - input maks adalah 23:59.Gema, 119 karakter
Contoh dijalankan:
sumber
Matlab: 89 byte
Uji:
sumber
SmileBASIC, 59 byte
Dijelaskan:
Hal ini terlihat cukup mengerikan, karena bagian bawah
;
bahkan tidak sama dengan,
di huruf SmileBASIC inisumber
PHP, 81 byte
beberapa solusi lagi:
Jalankan dengan
echo <time> | php -R '<code>'
.Ganti
1439
dengan input, simpan ke file, jalankan.sumber
Ruby, 50 karakter
Terimakasih untuk:
Menunggu begitu lama untuk digunakan
Numeric.divmod
, hanya untuk menyadari bahwa itu sangat panjang.Contoh dijalankan:
sumber
(?;*h=t/60)[0,m=t%60]
",',"[0<=>m-=h]*m.abs
05AB1E , 25 byte
Cobalah online!
60‰vy„'.Nè×}
pasti dapat dipersingkat, saya hanya tidak bisa mengetahuinya, dan ragu saya akan dapat mencukur 7 byte untuk menang dengan pendekatan ini kecuali ada versi vektor×
.Contoh (Dengan input sama dengan 63):
D60÷''×s60%'.ׂ.BøJ„'.';:ðK
adalah versi asli saya, tapi itu LEBIH mahal daripada divmod.60‰WDµ';ˆ¼}-¬0Qi'.ë''}ZׯìJ
namun metode lain yang saya coba ...sumber
dc , 95 byte
Cobalah online!
sumber
Java 8,
1019986 bytePenjelasan:
Coba di sini.
sumber