Ini adalah tantangan yang cukup sederhana, tetapi (saya harap) tantangan yang menyenangkan.
Tugas
Jika sekarang salah satu bulan 4
dan hari itu 20
, jamnya (pada jam 12 jam) adalah 4
dan menit adalah 20
, atau menit adalah 4
dan yang kedua adalah 20
, cetak seni ascii ini:
.
.:.
:|:
.:|:.
::|::
:. ::|:: .:
:|:. .::|::. .:|:
::|:. :::|::: .:|:;
`::|:. :::|::: .:|::'
::|::. :::|::: .::|:;
`::|::. :::|::: .::|::'
:::|::. :::|::: .::|::;
`:::|::. :::|::: .::|::;'
`::. `:::|::. :::|::: .::|::;' .:;'
`:::.. `;::|::. :::|::: .::|::: ::::;
`:::::. ':|::. :::|::: .::|:' ,::::;'
`:::::. ':|:::::|:::::|:' :::::;'
`:::::.:::::|::::|::::|::::.,:::;'
':::::::::|:::|:::|:::::::;:'
':::::::|::|::|:::::::''
`::::::::::;'
.:;'' ::: ``::.
:':':
;
Anda dapat memiliki spasi tambahan.
Jika tidak, cetak jumlah menit dan detik yang tersisa hingga kejadian berikutnya dalam format: %d minutes and %d seconds left until your next hit.
dengan waktu yang diperkecil.
Ini adalah kode-golf , jadi kode terpendek dalam byte menang!
NB. Jika tantangan ini terlalu tidak pantas untuk situs ini, beri tahu saya dan saya akan mengubahnya.
code-golf
ascii-art
kolmogorov-complexity
date
Maltysen
sumber
sumber
Jawaban:
Python 2, 371 byte
Sumber ini mengandung byte yang tidak dapat dicetak, sehingga disajikan sebagai hexdump yang dapat didekodekan
xxd -r
.Bagian yang dapat dibaca:
sumber
JavaScript (ES6), 537 byte
Menggunakan pengkodean CP-1252.
Catatan: Semua yang tidak dapat dibaca dalam posting ini diloloskan
\u00xx
sehingga sistem Stack Exchange tidak secara otomatis menghapusnya. Mereka harus dianggap memiliki ukuran satu byte.Penjelasan
Menggunakan skema pengkodean run-length bersama dengan pengemasan setiap karakter menjadi 4 bit. Logika utama kode adalah 174 byte dan string daun (termasuk dekompresi) adalah 364 byte. Rincian lebih lanjut dari metode kompresi dapat ditemukan di bawah.
Algoritma Kompresi
Tanpa Kompresi, 911 byte
Ini adalah string daun tanpa kompresi sama sekali.
Run-Length Encoding, 542 byte
Karena ada banyak karakter yang diulang berturut-turut, pengkodean run-length meningkatkan jumlah byte secara signifikan.
Setiap karakter yang diulang 3 kali atau lebih diganti dengan karakter yang diikuti oleh angka desimal
amount - 3
. String yang dikodekan dihasilkan dengan kode ini:Pengepakan 4-bit + RLE, 364 byte
Ada 9 karakter berbeda dalam string asli, yang berarti 4 adalah jumlah bit minimum untuk mewakili masing-masing. Mudahnya, ini memungkinkan dua representasi karakter untuk masuk ke dalam satu byte, memungkinkan algoritma dekompresi sederhana (dan ramah-golf) untuk digunakan. Selain itu, ada 7 karakter yang tersisa, yang memungkinkan pengkodean run-length basis-7 digunakan sebelum pengemasan. Menempatkan setiap indeks 4-bit ke dalam nibble atas dan bawah dari setiap karakter terkompresi berarti 2 karakter disimpan per byte, karena pengkodean CP-1252 mengkodekan setiap karakter di bawah titik kode 256 sebagai byte tunggal.
Kode berikut digunakan untuk melakukan pengkodean dan pengepakan run-length:
Huffman Coding, (Kemungkinan Peningkatan di Masa Depan)
Karakter tertentu muncul lebih dari yang lain, sehingga pengkodean Huffman (integer panjang variabel yang mewakili setiap karakter) dapat menyimpan beberapa byte lebih lanjut. Namun ini akan memperkenalkan kompleksitas yang lebih banyak ke dalam algoritma dekompresi, jadi selain sebagai pekerjaan yang lebih banyak, itu mungkin juga membutuhkan lebih banyak byte untuk mendekompres daripada menyimpannya dalam string yang disandikan.
sumber
Javascript ES6, 905 byte
Wah .. Jam 12 jam membunuh solusi singkat saya ( ahum ).
905 byte untuk mencetak 898 karakter ascii art yay
Kode tidak dikunci
Catatan: Kode ungolfed tidak akan dieksekusi
Cobalah!
Dalam cuplikan kode berikut Anda dapat mengatur tanggal untuk menguji ascii art
sumber
15:16:20
akan cocok di regex Anda dan secara tidak sengaja menampilkan string ajaib?()
tidak perlu untukdate
konstruktor:c=new d(), ...
bisa menjadi hanyac=new d, ...