Dengan bilangan bulat 16 bit yang tidak ditandatangani, konversikan bentuk desimalnya (yaitu, basis-10) menjadi kisi ASCII 4x4 bitnya, dengan bit paling signifikan (MSB) di kiri atas, bit paling tidak signifikan (LSB) di kanan bawah, baca seberang lalu ke bawah (seperti teks bahasa Inggris).
Contohnya
Input: 4242
+---+---+---+---+
| | | | # |
+---+---+---+---+
| | | | |
+---+---+---+---+
| # | | | # |
+---+---+---+---+
| | | # | |
+---+---+---+---+
Input: 33825
+---+---+---+---+
| # | | | |
+---+---+---+---+
| | # | | |
+---+---+---+---+
| | | # | |
+---+---+---+---+
| | | | # |
+---+---+---+---+
Persyaratan Khusus
Input harus dalam desimal (basis-10), namun Anda dapat mengonversi ke biner dengan cara apa pun yang Anda inginkan (termasuk menggunakan bahasa bawaan, jika tersedia).
Format tabel output harus sama persis . Ini berarti Anda harus menggunakan karakter ASCII spesifik (
-
,,+
dan|
) untuk garis-garis kotak tabel seperti yang ditunjukkan, masing-masing interior sel adalah 3 karakter, dan bit benar diwakili oleh#
sedangkan false diwakili oleh spasi ().
Ruang putih terkemuka atau tertinggal tidak diizinkan. Baris baru final diperlukan .
Pesanan bit harus sesuai dengan contoh seperti yang dijelaskan.
Tunjangan
- Input harus berupa angka dasar-10 pada baris perintah, input standar, atau input pengguna, tetapi tidak boleh dikodekan ke dalam kode sumber Anda.
Semoga jelas menang kode terpendek! :-)
sumber
Jawaban:
J, 26 byte
Kata kerja anonim. Syukurlah, J sangat pandai menggambar kotak. Mari kita coba:
Seperti disebutkan oleh beberapa komentator, cara J menggambar kotak bergantung pada sistem: pada beberapa platform, kode ini akan bekerja di bawah pengaturan default, tetapi pada yang lain, kotak akan digambar menggunakan karakter menggambar garis Unicode. (Perintah
9!:6
dan9!:7
memungkinkan Anda untuk meminta dan mengatur karakter masing-masing untuk menggambar nilai kotak.)sumber
JavaScript (ES6), 102
... atau 96 menggunakan
return
sebagai gantinyaconsole.log
.Tes menjalankan cuplikan di bawah ini di peramban yang mendukung EcmaScript 6.
sumber
Befunge -93, 196
218byteUntuk menjalankan program ...
Show
.Input
kotak.Run
. (Atau ubahSlow
menjadi sekitar 5 milidetik lalu klikShow
.)Output untuk 4242:
Output untuk 33825:
Penjelasan
Ya ampun, apa yang sudah saya dapatkan? Baiklah, ini dia! (Kode yang tidak relevan diganti dengan
.
s.)Bagian 1: Dapatkan input (simpan dalam 0,0) dan hitung 32768 (simpan dalam 1,0).
Bagian 2: Cetak "+ --- + --- + --- + ---".
Bagian 3: Cetak "+" dan baris baru dan periksa untuk melihat apakah (1,0) adalah 0 (yaitu kita selesai). Jika demikian, akhiri. Kalau tidak, lanjutkan.
Bagian 4: Dapatkan digit input biner, perbarui (0,0) dan (1,0) saat kita melanjutkan. Cetak hal yang benar. Saya mengambil keuntungan dari perilaku Befunge.
Bagian 5: Cetak baris baru dan kembali ke bagian yang mencetak "+ --- + --- + --- + --- +". Trik wrap-around digunakan.
Ta-da!
sumber
Julia,
156143 byteTidak Terkumpul:
Cobalah online
sumber
Python 2,
157153151146 byteTerima kasih kepada Morgan Thrapp karena menyimpan 4 byte, dan kepada Jonathan Frech karena menyimpan 5.
Pemakaian
sumber
'+---'*4
ke dalam variabel dan dua lagi jika Anda melakukannyaj=''.join
int(input())
denganinput()
dan menyimpan lima byte.Ruby,
118114terima kasih untuk @ w0lf untuk menyimpan beberapa karakter
sumber
?
notasi (mis:?|
alih-alih'|'
). Ini bekerja untuk semuanya kecuali ruang.?\s
berfungsi untuk ruang, namun sebenarnya tidak membantu di sini.GNU sed + dc, 116
Skor termasuk +1 untuk
-r
bendera kesed
:Output tes:
Kalau tidak:
Sed murni, 146
Anda mungkin berpikir itu curang untuk menggunakan
sed
ekstensi GNU untuk mengevaluasi suatudc
perintah. Dalam hal ini, kita dapat melakukan ini sedikit berbeda, menurut meta-jawaban ini . Tentu saja pertanyaannya dengan jelas menyatakan bahwa input harus ada di basis 10, tetapi di sini saya mencoba untuk mengklaim bahwa kita dapat menimpanya untuksed
jawaban dan menggunakan unary (basis 1) sebagai gantinya.Uji keluaran
Menggunakan
printf
untuk menghasilkan string unary yang diperlukan:sumber
C ++ 11,
193191190176172 byteSolusi pertama saya tentang codegolf, jadi jangan salahkan saya.
Tidak disatukan
Versi sebelumnya
sumber
using namespace std
dalam kode produksi. Dan itu juga tidak berguna di sini.0x
.using namespace std
menghemat beberapa byte, karena saya tidak perlu awalancout
dancin
denganstd::
. Bahkan menggunakan hanyausing std::cout;
tidak akan membantu.C++
tidak mendukung int otomatis.Pyth, 37 byte
Cobalah online: Demonstrasi atau Test Suite
Penjelasan:
sumber
CJam,
4341 bytePasti golf, tapi saya rasa ini awal. Menghasilkan baris atas, kemudian untuk setiap 4 bit itu menciptakan baris genap dan menyalin baris aneh sebelumnya.
Cobalah online .
sumber
Python 2,
122121120 byte-1 byte terima kasih kepada @ xnor
4**8+
trik yang rapi Pencetakan utama dilakukan dengan mengulang sebanyak 9 kali, memilih baris yang sesuai untuk odd / even.sumber
bin(4**8+input())[3:]
menyimpan byte lebihformat
Python 2, 94
Idenya adalah untuk mengambil polanya
kecuali dengan
%s
di tempat kosong dan melakukan substitusi tuple. Tupelnya terlihat sepertiItu dibuat dengan mengambil digit dari input dalam biner dan menambahkan simbol yang sesuai ke depan tuple. Ekspresi dengan tuple eksplisit memberikan panjang yang sama.
Terima kasih kepada Sp3000 untuk 2 byte.
sumber
PowerShell,
203188182 BytesEdit - menyimpan 15 byte dengan mengubah urutan yang
|
digambar, sehingga kita dapat membuang.TrimEnd("|")
output dan alih-alih mengonversi for-loop menjadi blok subcode yang menghasilkan arraySunting2 - menyimpan 6 byte lain dengan menghilangkan kebutuhan untuk menyimpan ke dalam
$o
variabel dan hanya keluaran dengan-join''
langsung.Ooooooooof.
Menggambar di PowerShell sulit . Bekerja dengan digit biner di PowerShell sulit .
Menggunakan built-in ke
[convert]
integer input ke representasi string dalam biner, kemudian melemparkan kembali ke[int64]
sehingga kita dapat menelepon kembali.ToString()
untuk menambah / menambah jumlah nol yang sesuai. (Perhatikan bahwa membuat array string dan menggabungkannya@(,"0"*16)-join''
adalah 1 karakter lebih pendek dari string literal"0000000000000000"
)Kemudian, ambil for-loop sederhana untuk
1..16|%{...}
memeriksa setiap digit untuk membangun susunan keluaran kami, lalu akhirnya-join''
kembali bersama.Sebelumnya, 188
Sebelumnya-er, 203
sumber
Javascript (ES6),
216207 byteMenentukan fungsi anonim.
Terima kasih kepada ETHproduk untuk tips!
sumber
.join` | `
2. Anda juga dapat menggunakan string template untuk nilai interpolasi:i=>`,${"0".repeat....join`,`},`.replace...
3 Anda dapat menemukan lebih banyak tips ES6 di utas ini .i=>`,${("0".repeat(16)+i.toString(2)).slice(-16).split``.map((v,l,a)=>l%4?"":"| "+a.slice(l,l+4).map(v=>' #'[v]).join` | `+" |").filter(v=>v).join`,`},`.replace(/,/g,`<line break>+---+---+---+---+<line break>`).slice(1)
("0".repeat(16)+i.toString(2)).slice(-16)
->(65536|i).toString(2).slice(1)
CJam, 62 byte
Cobalah online .
sumber
Pyth, 50 byte
Penjelasan harus menunggu sampai waktu lain, saya memposting ini di ponsel saya!
sumber
Ruby, 102
Algoritma
Cetak pembagi horizontal
Loop 20 kali (19..0)
Jika nomor loop tidak dibagi dengan 5, konversikan menjadi angka dalam kisaran 16..0 dengan mengalikannya dengan 4/5. Cetak spasi (ascii 32) atau
#
(ascii 32 + 3 = 35) didahului oleh|
dan diikuti oleh spasi.Jika nomor lingkaran dibagi 5, cetak penghentian |, baris baru, dan pembagi horizontal yang identik dengan yang pertama.
sumber
Perl, 103 byte
Banyak string pengulangan untuk membuat grid
x
s, mengkonversi input ke biner dan kemudians///
yangx
s ke#
atau$"
() tergantung pada bendera pada posisi yang ditentukan (
$x
).sumber
PHP, 159 byte
bingrid16.php
:Pemakaian:
Tidak ada yang mewah, hanya memaksa rendering.
Saya mencoba sudut lain menggunakan array bukan loop, tetapi lebih panjang pada 224 byte:
sumber
Perl 5 ,
8584 byte8483 byte kode +-p
bendera-1 byte setelah Dom mengingatkan saya untuk menggunakan baris baru
Cobalah online!
sumber
$/
!c99 263 byte
golf:
ungolfed:
Saya hanya suka menghadirkan varian yang sedikit bergeser dan merasa ini adalah pertama kalinya yang sesuai (bahkan harganya beberapa byte, tapi C tidak dapat menantang dalam byte bahkan dengan kesempatan jadi saya tidak peduli) untuk menggunakan argc / argv
sumber
Ruby, 95
Mengangguk ke Mhmd untuk konversi String yang ringkas, tetapi saya ingin mencoba menggunakan metode string alih-alih metode angka.
sumber
Ruby, 93
Versi yang sedikit lebih pendek hanya menggunakan operasi numerik.
sumber
C # 227 Bytes
Golf:
Lekuk:
Pertama kali saya mencoba sesuatu seperti ini, tipsnya akan disambut baik!
sumber
wc
perintahPython 3,
145144 BytesDi barisan:
Dengan baris baru:
Sunting: Tanks @ manatwork untuk menghemat 1 byte
sumber
r=0,1,2,3
adalah 1 karakter lebih pendek daripada menghasilkan denganr=range(4)
.Kotlin , 192 byte
Yg diperindahkan
Uji
sumber
05AB1E , 45 byte
Cobalah online!
sumber