pengantar
The Atari ST adalah komputer pribadi agak populer dari pertengahan 80-an hingga awal era 90-an, didukung oleh Motorola 68000 mikroprosesor. Pada mesin ini, perilaku default sistem operasi untuk pengecualian CPU yang tidak tertangkap adalah menampilkan deretan bom di layar, seperti yang ditunjukkan pada gambar berikut:
Sumber: https://commons.wikimedia.org/wiki/File:Row_of_bombs.png
NB: Tergantung pada versi OS, grafik bom mungkin sedikit berbeda. Tapi mari kita ambil yang ini sebagai referensi.
Jumlah bom tergantung pada vektor pengecualian, yang paling umum adalah:
- ($ 008) Kesalahan Bus: 2 bom
- ($ 00c) Kesalahan Alamat: 3 bom
- ($ 010) Instruksi Ilegal: 4 bom
Tujuan
Tujuan Anda adalah untuk menulis program atau fungsi yang mencetak atau mengeluarkan seni ASCII dari bom Atari ST tersebut.
Memasukkan
Integer yang mewakili jumlah bom untuk ditampilkan. Kode Anda harus mendukung nilai-nilai yang paling umum: 2, 3 dan 4. Mendukung lebih sedikit dan / atau lebih banyak bom baik-baik saja, tetapi tidak diperlukan atau dikenai bonus.
Keluaran
Bom asli terdiri dari ubin 16x16 piksel, diwakili di sini dalam ASCII dan biner:
....##.......... 0000110000000000
.#.#..#......... 0101001000000000
.......#........ 0000000100000000
#..#....#....... 1001000010000000
..#...#####..... 0010001111100000
......#####..... 0000001111100000
....#########... 0000111111111000
...###########.. 0001111111111100
...###########.. 0001111111111100
..#############. 0011111111111110
..########.####. 0011111111011110
...#######.###.. 0001111111011100
...######.####.. 0001111110111100
....#########... 0000111111111000
.....#######.... 0000011111110000
.......###...... 0000000111000000
Dalam tantangan ini, setiap bom ASCII harus direntangkan menjadi dua kali lebar aslinya untuk rendering yang lebih baik. Oleh karena itu, itu akan terdiri dari 16 baris 32 karakter, menggunakan ##
untuk piksel 'ON' dan dua spasi untuk piksel 'OFF'. Semua ubin bom harus diletakkan berdampingan. Ruang terkemuka dilarang. Ruang trailing juga dilarang, kecuali ruang yang sebenarnya merupakan bagian dari ubin bom (yaitu kolom ke-31 dan ke-32) yang harus ada. Anda dapat memasukkan tidak lebih dari satu break-line terdepan dan tidak lebih dari satu break-line trailing.
Contoh
Di bawah ini adalah keluaran referensi untuk dua bom, di mana pemutusan saluran wajib ditandai sebagai \n
dan pemutusan saluran tambahan yang ditandai ditandai sebagai (\n)
:
(\n)
#### #### \n
## ## ## ## ## ## \n
## ## \n
## ## ## ## ## ## \n
## ########## ## ########## \n
########## ########## \n
################## ################## \n
###################### ###################### \n
###################### ###################### \n
########################## ########################## \n
################ ######## ################ ######## \n
############## ###### ############## ###### \n
############ ######## ############ ######## \n
################## ################## \n
############## ############## \n
###### ###### (\n)
(Tentu saja, format break-line lainnya seperti \r
atau \r\n
dapat digunakan juga.)
Aturan
Ini adalah kode-golf, jadi jawaban tersingkat dalam byte menang. Celah standar dilarang.
Jawaban:
Jelly ,
4344 byte+1 byte - lupa menggandakan karakter (tidak ada yang memperhatikan!)
TryItOnline
Bagaimana?
Persiapan adalah untuk mengompresi data sebagai enkode run-length dari gambar asli:
1
s (spasi) atau0
s (hash) dalam gambar, abaikan garis baru - menghasilkan daftar[4,2,11,1,1,...]
:;[0,15]
;v
,, dengan indeksi
terbalik dan jumlah16**i*v
=19468823747267181273462257760938030726282593096816512166437
);[5,119,249,42,...]
:;¥vẏ)X;ndĊɓ¡ẹ3ċi}Ịɲ¡P
Sekarang kode mengevaluasi angka ini, memetakan huruf
1
s dan0
s ke spasi dan karakter hash *, menggandakan masing-masing, membaginya menjadi garis-garis dan mengulangi masing-masing sesuai jumlah kali.* sebenarnya implementasi dilakukan modulo 2 untuk menghemat byte, jadi spasinya ganjil dan hash genap:
sumber
05AB1E ,
57555350 byteMenggunakan pengodean CP-1252 .
Cobalah online!
Penjelasan
Karena gambar output hanya terdiri dari 2 karakter, kita dapat menampilkannya sebagai angka biner.
Kami dapat mengabaikan baris baru karena setiap baris memiliki panjang yang sama.
Kita dapat mengabaikan karakter terakhir dari setiap baris karena sama untuk semua baris.
Kami menggunakan gambar yang lebih tipis karena membutuhkan lebih sedikit ruang dan kami dapat dengan mudah menduplikasi setiap karakter nanti.
Menggunakan 1 untuk mewakili ruang dan 0 untuk mewakili # kita mendapatkan nomor biner:
111100111111111101011011111111111111101111111011011110111111110111000001111111111000001111111100000000011111000000000001111000000000001110000000000000110000000010000111000000010001111000000100001111100000000011111110000000111111111100011111
Kami kemudian mengonversikan ini ke basis-10 dan kemudian mengompresnya ke basis 214, basis maksimum di 05AB1E. Hasilnya adalah:
Daging program kemudian terdiri dari:
sumber
Pyth,
575654535150 byteKode berisi karakter yang tidak patut
xxd
dicetak , jadi ini hexdump yang dapat dibalik.Cobalah online.
sumber
JavaScript (ES6),
159154140136 byteMenyimpan banyak byte berkat @Hedi dan @Arnauld
Itu 104 karakter, tapi (sayangnya) 136 byte UTF-8. String dihasilkan dengan potongan ini:
Tampilkan cuplikan kode
Menggunakan
.replace
bukannya[...string].map
sama-sama panjang:Bagaimana itu bekerja
Karena setiap baris data mentah dapat direpresentasikan sebagai angka 16-bit, kami dapat menyimpan seluruh file dalam string 16-char. Algoritma kompresi mengambil setiap baris biner, membaliknya dan membaliknya (karena setiap baris dalam aslinya berakhir dengan 0 , setiap baris dalam versi yang dimodifikasi sekarang dimulai dengan 1 ), kemudian mengubahnya menjadi char, dan menggabungkan karakter yang dihasilkan .
Untuk mendekompresnya, kita perlu mengekstrak charcode dan mengubah representasi binernya menjadi string hash dan spasi. Ini dapat dilakukan dengan fungsi rekursif, seperti:
f
berulang kali mengambil bit terakhirq
, memilih dua spasi jika 1 atau dua hash jika 0, lalu menyatukannya dengan hasil menjalankanf
sisanyaq
. Ini dijalankanx.charCodeAt()
, mengubah kode-char menjadi string spasi dan hash yang benar.(Ada lebih banyak drama di sini sebelumnya, tetapi teknik penghematan 4-byte menghapus semua itu.)
Setelah itu, kita bisa mengulang
n
kali string dan menambahkan baris baru. Ini adalah metode dekompresi terpendek yang saya temukan, tetapi jangan ragu untuk menyarankan metode yang mungkin lebih pendek.Upaya lain untuk mengompresi string:
Yang pertama dari ini adalah 153 byte, sehingga tidak ada yang mendekati 136 ...
sumber
+x?'##':' '
alih - alih" #"[x].repeat(2)
x.charCodeAt()
daripada mengubahnya menjadi biner? (Saya pikir itu akan menghemat sekitar 8 byte.)File MS-DOS .COM, 84 byte
BAIK. Hanya untuk bersenang-senang karena saya tidak bisa mengalahkan 50 byte ...
Dicoba di bawah DOSbox serta di bawah MS-DOS 6.22 di mesin virtual.
Di bawah DOSbox, program ini bekerja dengan baik tetapi di bawah MS-DOS nyata output tidak akan ditampilkan dengan benar karena DOS membutuhkan CR-LF bukan LF di akhir baris.
(Namun hasilnya benar.)
Varian 88 byte akan menggunakan CR-LF di akhir baris.
Ini filenya:
Kode assembler (dalam sintaks AT&T) terlihat seperti ini:
--- Sunting ---
Saya lupa menyebutkan: Program harus dimulai dengan baris perintah berikut:
Nama file COM + tepat satu karakter spasi + Jumlah bom (1-9)
sumber
objdump -dw
output adalah cara yang baik untuk menunjukkan biner mentah, karena Anda melihat byte mana yang instruksi. Saya melakukan itu untuk jawaban gcd dan adler32 . (Serta menyertakan kode sumber yang dikomentari bagi orang-orang untuk mencoba sendiri.)Python,
223179 bytePendekatan kedua:
Cobalah di repl.it!
Daripada membuat daftar string on-the-fly, ada string heksadesimal kode keras yang diindeks dan dikonversi ke biner; kemudian setiap digit biner diubah menjadi salah satu
' '
atau'#'
, yang digandakan dan digabungkan bersama ... dllPendekatan pertama:
Cobalah di repl.it!
Ini berisi daftar hard-string dari setiap baris (tidak termasuk spasi tambahan) yang dibuat dengan menduplikasi salah satu
' '
atau'##'
beberapa kali. Untuk masing-masing string ini, mereka diisi dengan spasi hingga 32 karakter, digandakann
kali, kemudian digabungkan dengan baris baru.sumber
'\n'
. Jadi,lambda n:print(*(''.join(2*' #'[int(d)]for d in bin(int('0c0052000100908023e003e00ff81ffc1ffc3ffe3fde1fdc1fbc0ff807f001c0'[i:i+4],16))[2:].zfill(16))*n for i in range(0,64,4)))
. Juga, Anda tidak perlu menghitung byte yang diperlukan untuk menetapkan nama lambda. Jadi skor Anda bisa 176.C,
250240208188 byteBeralih ke menggunakan fungsi.
Tes seperti ini.
main(c,v)char**v; { f(atoi(v[1])); }
sumber
0x
./// ,
539532 + no. bom byte/// Jawab pertama, menampilkan 4 bom. Akhir empat 1 dapat diganti dengan representasi bom yang ingin Anda cetak (11 untuk 2, 111 untuk 3)
Cobalah online!
Jika input harus desimal, berikut ini memiliki
555548 byte (di mana digit terakhir dapat diubah menjadi 1, 2, 3 atau 4):Cobalah online!
Bagian terpenting dari kode adalah:
| berarti //
ABCDEFGHIJKLMNOP berarti setiap baris bom masing-masing
S berarti 2 spasi
s berarti 4 spasi
* berarti 6 spasi
q berarti 8 spasi
T berarti ## (2)
t berarti #### (4)
^ berarti ##### # (6)
r berarti ######## (8)
& berarti ################ (16)
Sebagian besar kode memastikan bahwa bom dicetak. berdampingan, tidak di atas satu sama lain.
sumber
CJam , 66 byte
Cobalah online! (perhatikan bahwa ada beberapa karakter yang tidak patut ditulis dalam kode.)
Bom di disandikan sebagai angka dalam biner menggunakan 1 untuk spasi (ruang terdepan sebagai 1 memastikan kita tidak harus mengisi representasi biner), mengubah urutan, dan kemudian dikonversi ke string di basis-136 (yang menghasilkan string terpendek tanpa karakter lebar). Langkah-langkah ini bisa dimainkan di sini .
Jawaban ini kemudian membalikkan penyandian, trik utama adalah mengulangi bom sebelum mentransposisi, secara efektif merangkai setiap baris bom sekaligus. Karakter di setiap baris kemudian dapat digandakan dengan baris baru dimasukkan untuk hasil akhir.
sumber
PHP,
138104 + 32 = 136 byteSaya tidak pernah berpikir
file
itu biner aman. Saya hanya berharap saya akan menemukan cara yang lebih menarik untuk menyimpan data; tapi tidak ada yang saya coba kalahkan biner mentah.0
dengan 2 spasi,1
dengan##
, waktupengulangan
$argv[1]
, hasil cetak + baris barujalankan bersama
-r
data biner dalam file
b
:kode untuk menghasilkan file:
sumber
\n
.MATL ,
6463605958 byteCobalah online!
Penjelasan
Kode ini menggunakan versi pra-kompresi dari matriks biner 16 × 16. Pra-kompresi (bukan bagian dari program) menggunakan dua langkah:
String yang dikompresi,
didekompresi dari basis 94 ke basis 16:
Vektor run-lenghts plus 1 yang diperoleh dikalikan dengan 2:
untuk melakukan peregangan horizontal.
Vektor run-lenghts berisi 49 nilai. Nomor asli yang harus diulang dengan panjang itu harus
[0 1 0 1 ... 0]
(49 entri). Tetapi alih-alih itu, lebih pendek untuk menggunakan vektor[1 2 ... 49]
, yang akan sama-sama valid berkat pengindeksan modular. Jadi decoding run-length adalahVektor yang dihasilkan containis berjalan dari
1
,2
, ...49
, untuk total 512 entri. Ini dibentuk kembali menjadi matriks 16 × 32:dan digunakan sebagai indeks modular ke dalam string
' #'
untuk menghasilkan bom tunggal:Akhirnya, pengulangan horizontal oleh faktor yang diberikan oleh input menghasilkan hasil yang diinginkan:
sumber
Python 2: 143 byte
Ada di ideone
(Saya menyadari bahwa penyandian langsung bom asli di pangkalan 36 dibuat untuk kode yang lebih pendek dengan Python.)
Tali dibentuk dengan memperlakukan spasi sebagai 1s dan hashes sebagai 0s, dan kemudian mengkonversi ke basis 36. Program kemudian mengkonversi kembali ke biner dan diiris menjadi panjang 16 (dengan offset 2 untuk '0b' di depan Python. string biner), mengkonversi ke spasi ganda dan hash ganda, menggabungkannya, mengulang
n
kali string dan mencetak.Sebelumnya: Python 2,
169 166163 byteAda di ideone
Hampir satu port jawaban Jelly saya .
sumber
Python 2.7,
144141 byteBom ditulis dalam biner dengan 1 untuk ruang, 1 yang terkemuka menghilangkan kebutuhan untuk melapisi representasi biner. Bom itu ditransposisikan (mirip dengan jawaban CJam saya ) dan disimpan di pangkalan 36.
Program ini menerjemahkan bom ke biner dan mengulang bit dengan langkah 16 secara efektif mengikuti transposisi (yang menghemat byte lebih dari memotong garis yang diberikan). Baris yang dihasilkan digabungkan, bit diganti dengan dua kali lipat
atau
#
, dan bergabung menjadi string menghanguskan.sumber
O
karena suatu alasan ...C (gcc) ,
216 204 183 165134 byteCobalah online!
Ditulis sebagai program mandiri (
201 183151 byte)Cobalah online!
Segfault ini jika parameter baris perintah tidak diberikan.
sumber
Batch, 415 byte
Catatan: garis
set s=
berakhir dalam 5 spasi. Menerima hitungan sebagai parameter baris perintah. Cukup lilitkan melalui setiap baris bom (dikompresi sangat sedikit dengan menghilangkan lintasan 5 karakter identik) lalu ulangi bom sebanyak yang diinginkan sebelum akhirnya menduplikasi masing-masing karakter.sumber
Python 2,
206205203199191188186184160 byteMelihat Hex untuk daftar nomor tetapi tampaknya tidak cukup menabung untuk membuatnya sepadan. Berharap bisa menurunkan kode tapi sepertinya sudah sejauh yang saya bisa dengan pendekatan ini. Semua petunjuk tambahan diterima dengan rasa terima kasih.
SUNTING
-1 dengan mengubah
e==1
kee>0
. Saya selalu lupa itu.-2 dengan mengabaikan panjang string biner, menambahkan 7 0's dan hanya mengambil 16 elemen terakhir. Bekerja karena tidak pernah lebih dari 7 yang memimpin 0's.
-4 karena sekarang saya telah kehilangan referensi kedua ke variabel b yang dapat saya gunakan
bin(y)[2:]
langsung pada fungsi peta dengan mengambilnya di bawah magic 200 :-)-8 dengan menggunakan slice assignment pada daftar kedua. Belajar sesuatu yang baru malam ini.
-3 dengan terima kasih kepada @Jonathan
-2 dengan menggunakan
c=d=([0]*7+map(int,bin(y)[2:]))[-16:]
alih-alih memilikic=d;
-2 lagi terima kasih kepada @Jonathan
-24 dengan terima kasih kepada @Linus
Keluaran
sumber
" #"[e>0]*2
akan bekerja(...)
bisa (RE: per komentar saya sebelumnya).for y in ...:print"".join(" #"[e>0]*2for e in(([0]*7+map(int,bin(y)[2:]))[-16:]))*z
RProgN ,
210193 BytesMenyimpan beberapa byte dengan beralih 0 = '' 1 = '##' ke 1 = '' 0 = '', ini berarti saya tidak perlu menambahkan angka nol kembali. Juga, ini berarti bahwa sekarang string B64 yang dulu mengatakan "MAFIA" tidak, Ini menyedihkan.
Penjelasan
Cukup panjang, Ekspansi, pencetakan, dan semacamnya dari string terkompresi adalah 105 byte. Mungkin sedikit lebih golf, tetapi setidaknya itu berfungsi.
Input secara implisit ada di stack, stack dicetak secara implisit.
Keluaran
Cobalah!
sumber
PHP,
144140139138136 byteCatatan: menggunakan pengkodean Windows-1252
Jalankan seperti ini:
Atau menggunakan pengkodean IBM-850 (135 byte dan hasil yang lebih cantik):
Penjelasan
Ini tidak melakukan hal-hal biner dan tidak memerlukan file eksternal.
Setiap angka 16 bit dibalik, kemudian dikodekan sebagai nomor basis-36, diisi dengan yang pertama
0
jika perlu, sehingga setiap 16 bit menghasilkan 3 byte. Menggabungkan hasil-hasil di01c02203k07d1j81j46b4cmwcmwpa4ohobugc8o6b434w0ow
. Kode membalikkan proses sehingga bom dicetak dengan benarN
kali.Tweaks
$j
ke nol pada batas garis%=
. Ini menghilangkan tanda kurung$argn
sumber
GCC C 129 byte
ISO8859 / ASCII
Dalam satu baris:
Jalankan dengan:
Kompilasi sumber sebagai ISO8859-x (ASCII).
NB óÿÿþÿoÜüðààÀÀ! ÀCàCðøþ? harus mengandung Kode ASCII yang tidak terlihat tetapi telah rusak karena cara StackExchange menyajikan kontennya. Silakan lihat tautan ideaone untuk pengkodean pengujian yang tepat Sebagai alternatif, ASCII String asli ada di: https://github.com/claydonkey/AtariBombs/blob/master/ISO8859_REPR2.txt
Penjelasan
Pertama, konversi representasi hex bom [f3 ff ad ff fe ff 6f 7f dc 1f fc 1f f0 07 e0 03 e0 03 c0 01 c0 21 c0 21 e0 43 f0 07 f8 0f fe 3f] ke UTF-8 (dalam Versi UTF-8 kompiler menyimpan string sebagai Wide Char Array - 2 atau 4 byte untuk setiap karakter saat runtime tetapi ini bersifat akademis). Sedangkan karakter UTF-8 akan disimpan sebagai 2-4 byte, nilai-nilai ini semuanya dalam ISO-8859-1 (ASCII) dan karenanya hanya membutuhkan 1 byte. Juga aman untuk disimpan sebagai ISO-8859-x (tidak ada nilai 0x8_ atau 0x9_). Oleh karena itu teks mengkonsumsi 32 byte dalam ISO-8859 dan rutin mengkonsumsi total 135 byte.
(NB wide chars disimpan sebagai integer 16 bit di windows dan 32bit di linux tapi sekali lagi ini tidak relevan dengan tugas yang ada)
Peringatan: Tidak semua karakter dapat ditampilkan (karakter kontrol di bawah 0x20). Namun, masih ada. Sebagian besar halaman web utf-8 / 8859/1253 ( https://w3techs.com/technologies/overview/character_encoding/all ) jadi saya rasa ini sah
(menggeser semua nilai di bawah 0x20 ke printable ASCII harus memperbaikinya).UTF-8
Ini adalah versi yang lebih dekat dengan postingan asli dengan sumber yang disandikan UTF-8. Ini mengkonsumsi 173 byte. String itu sendiri menjadi 50 byte sumber. Rutin juga lebih lama karena ASCII byte sekarang disimpan dengan padding 0's untuk Wide Chars 16bit / 32bit dan harus digeser bukannya dicor ke uint16_t seperti di atas. Saya terus menggunakan ini karena dapat diverifikasi dengan ideone yang menggunakan pengkodean UTF-8.
Jalankan dengan:
Jika Anda dapat mengatur nilai implisit ke integer 16bit di kompiler Anda, Anda dapat menghilangkan deklarasi tipe wchar_t dari Wide Char. Ideone tidak mengeluh, jadi saya rasa sebaiknya pergi.
Cobalah di ideone
sumber
Haskell, 155 byte
Sebagai fungsi dengan tipe
Int -> String
:Mencetak ke IO secara langsung akan dikenakan biaya 5 byte (atau 6 jika kita lebih suka mengembalikan
IO ()
daripadaIO [()]
):sumber
C, 175 byte
menggabungkan setiap x ke dirinya sendiri dan membuat p overflow untuk mengakhiri setiap baris.
sumber
Java, 228 byte
sumber
n->{String s="";for(int x,r=0;r<16*n;s+=(++r%n<1?"\n":""))for(x=16;x-->0;)s+=((new int[]{1536,10496,128,18496,4592,496,2044,4094,4094,8191,8175,4078,4062,2044,1016,224}[r/n])&(1<<x))<1?" ":"##";return s;}
( 205 byte ) Selain menggunakan Java 8 lambda, saya telah mengurangi lebih banyak byte dengan mengubah: posisix=16
(dan berubahwhile
menjadifor
); 2x==0
ke<1
; mengembalikans
alih-alih mencetaknya (impor juga merupakan bagian dari byte-count btw ..);--x>=0
untukx-->0
. Tetap saja, jawaban yang bagus, jadi +1!J, 89 byte
Mengkodekan string sebagai angka dasar-95, menambah setiap digit dengan
32
, kemudian mewakilinya dengan string ascii.Penjelasan
Ini terdiri dari dua bagian utama. Ada konstruksi bom, dan pengulangan yang sebenarnya. Mari kita sejenak menyebut bom sebagai
b
. Kemudian, kode tersebut terlihat seperti:Saat dipanggil dengan input
k
, ini setara dengan:b
adalah bom kotak, jadik#b
buatk
pengulanganb
,;
ratakan secara vertikal, dan|:
transpos hasilnya. (Bomb
itu sendiri dibangun secara dialihkan.)Sekarang, inilah bomnya:
String berikut adalah string basis-95 yang dikodekan dengan offset
32
, sehingga semua karakter termasuk dalam rentang ASCII, dan untungnya tidak ada'
s yang perlu diloloskan.3 u:
mendapatkan kode char dari string,32x-~
membuat setiap angka nomor ex
tended dan mengurangi32
darinya;95#.
mengkonversi ke nomor basis-95 dan2#.inv
mengubahnya menjadi array digit biner. Saya menambahkan terkemuka1
ke biner untuk membuatnya menjadi angka yang solid, jadi saya melepasnya}.
. Saya membentuk array menjadi tabel 16x16 dengan16 16$
kemudian memindahkannya menggunakan|:
. (Kemungkinan golf untuk nanti: transpos string yang disandikan secara literal.)2#
Menduplikat setiap karakter dengan lebar. Kita dibiarkan dengan tabel0
s dan1
s.' #'{~
peta0
s ke' '
dan1
ke'#'
. Karena itu, kita dibiarkan dengan bom kita.Kasus cobaan
sumber
BaCon ,
229227195 byteKontribusi dalam BASIC demi nostalgia. Variabel 'a' menentukan jumlah bom.
Keluaran :
sumber
Haskell,
191181 bytesumber
C (Atari TOS 2.06 US),
129 124 117113 byteIni menggunakan bitmap bom dari TOS ROM, yang sedikit berbeda dari yang ada di pertanyaan. Untuk TOS versi lain, Anda harus menyesuaikan alamat yang ditunjuk oleh
*a
. Perhatikan bahwa beberapa ROM emulator tidak termasuk bitmap bom!Jika Anda tidak memberikan argumen baris perintah, beberapa bom bitmap resolusi tinggi dapat ditampilkan :-)
sumber
C ++ 11, 252 byte
sumber
SmileBASIC, 127 byte
(Cuplikan layar versi tanpa karakter yang digandakan)
SB memiliki font persegi, jadi menggandakan karakter terlihat buruk (dan tidak muat di layar)
Karakter non-ASCII telah digantikan oleh
x
.Nilai hex:
0008,0002,0610,1F8A,3FC1,7FC1,7FF2,FFF4,FFF8,EFF0,73F0,7FC0,3FC0,1F80,0600
Karena SB menyimpan file dalam UTF-8, beberapa di antaranya dihitung sebagai 2 atau 3 byte.
sumber
FOR K=1TO N
denganINPUT N
, saya pikir ini akan menampilkan jumlah bom yang diberikan dalam input. Namun, saya harus mengatakan bahwa meskipun font persegi, saya percaya karakter masih harus digandakan untuk tetap konsisten dengan persyaratan (untuk menghindari keunggulan dibandingkan jawaban lain). Anda dapat menyimpan yang saat ini untuk solusi yang tampak lebih bagus, tetapi saya pikir Anda masih harus menambahkan solusi yang benar. Setelah Anda menambahkan itu, saya akan mendukung penggunaan kreatif karakter UTF-8!Ruby 2.x (lambda) - 157 byte
Mungkin bisa bermain golf lebih lanjut, tapi saya suka versi ini:
Gagasan serupa dengan versi python: pecahkan string bom yang disandikan heksadesimal menjadi bagian-bagian dari 4 karakter, konversikan ke biner, terjemahkan
1
ke#
dan0
ke, menggandakan setiap karakter, dan mencetak array yang dihasilkan.
Perhatikan bahwa put digunakan untuk mencetak array. Ini akan mencetak array satu baris per elemen.
sumber
Excel VBA, 204 Bytes
VBE Anonymous Fungsi jendela langsung yang mengambil input dari rentang
[A1]
dan keluaran ke Objek ActiveSheetKeluaran
sumber