Rushnyk Belarus


19

Kami punya beberapa tantangan bendera nasional sudah: AU CH FI FR GB GB IS KR NP AS ... Berikut lain, satu agak lebih maju:

Kembalikan atau cetak pola dekoratif dari bendera nasional Belarus sebagai matriks dengan dua nilai berbeda untuk merah dan putih.

rushnyk

Jika bahasa Anda tidak mendukung matriks, gunakan daftar daftar atau yang setara terdekat. Ruang kosong ekstra diizinkan di semua sisi. Matriks dapat ditransposisikan. Elemen-elemen dapat memiliki pemisah yang konsisten, dan begitu pula baris, misalnya output dapat JSON. Anda harus menggunakan pola ornamen versi 2012, bukan versi 1951 atau 1995. Ini , jadi jawaban terpendek per bahasa menang.

Output sampel:

....###....#....###....
#..#####...#...#####..#
..###.###.....###.###..
.###...###...###...###.
###..#..###.###..#..###
.###...###...###...###.
..###.###.....###.###..
#..#####...#...#####..#
....###....#....###....
..#..#..#.....#..#..#..
.###...###...###...###.
##.##.##.##.##.##.##.##
.###...###...###...###.
..#..#..#.....#..#..#..
....###....#....###....
#..#####...#...#####..#
..#######.....#######..
.#########...#########.
#######################
####...#########...####
.#####..#######..#####.
..###....#####....###..
#..#....#######....#..#
.......####.####.......
#.....####...####.....#
##...####..#..####...##
###.####.......####.###
.######..#...#..######.
..####...##.##...####..
...###....###....###...
....##.#...#...#.##....
...###....###....###...
..####...##.##...####..
.######..#...#..######.
###.####.......####.###
##...####..#..####...##
#.....####...####.....#
.......####.####.......
#..#....#######....#..#
..###....#####....###..
.#####..#######..#####.
####...#########...####
#######################
.#########...#########.
..#######.....#######..
#..#####...#...#####..#
....###....#....###....
..#..#..#.....#..#..#..
.###...###...###...###.
##.##.##.##.##.##.##.##
.###...###...###...###.
..#..#..#.....#..#..#..
....###....#....###....
#..#####...#...#####..#
..###.###.....###.###..
.###...###...###...###.
###..#..###.###..#..###
.###...###...###...###.
..###.###.....###.###..
#..#####...#...#####..#
....###....#....###....

Jawaban:


7

Stax , 68 byte

àÑΣ▒i╕7FF3xì¥╫Yb▌t╤y╡µåè0═↕h╗ΔDOü↔`◙■^>♀;∟Γ9→§Æ¼$ß⌡╫èj_┐;ø;¡²Ω☺┘4!P╛

Jalankan dan debug itu

Output versi vertikal, 1untuk putih, 0untuk merah. Pendekatan naif: kompres kuartal kiri atas, lalu lengkap.


4

Python 2 , 183 181 byte

S=[bin(int(''.join(w),36))[2:].rjust(31,'0')for w in zip(*[iter("RBRG5FDLAJ2O77MSE012OBJWJUSWDQ464UKNYZIE8JYGS0JRFOCIJY7U5F983X0LYW20WNTE")]*6)]
for s in S[:0:-1]+S:print s[:0:-1]+s

Cobalah online!

Keluaran versi dialihkan, menggunakan 0dan 1untuk putih dan merah.


Apakah ini memampatkan seluruh string nilai untuk bendera?
Raghu Ranganathan

@RaghuRanganathan Hanya seperempat. Yang for s in S[:0:-1]+S:print s[:0:-1]+smenggandakan garis, dan mencetak setiap baris berlipat
TFeld

3

JavaScript (ES6), 164 byte

Output ditransposisikan. Penggunaan 0untuk putih, 1untuk merah.

f=(x=y=0)=>y<61?x>22?`
`+f(!++y):(-~'o`xb[FMMf[MM[Fxbo`cCMMZZMMcCo`xb{F}N~~N}}{[wH{?]@NbfvB}H{Wwooa'.charCodeAt((y>30?60-y:y)*2+(X=x>11?22-x:x)/6)>>X%6&1)+f(x+1):''

Cobalah online! (output yang sudah diraih)

Menggunakan Buffer () di Node.js menghemat 1 byte.



3

Arang, 93 89 81 byte

”{“↷B⦃¶¹¹|TQ⌊‽÷⪫Mg+℅§ºH·τP≔⁻⊗|Yω¤⁵⊗-κ�κb5Aωγ⎚I0ê﹪oζM⟲ºh⟲⮌#⎇s▶‴ψ◧≔◨◧⁺4U×m∧üF↑⬤”‖O¬

Jawaban arang pertamaku! : D

Cobalah online!

Disimpan 4 byte dengan mengeluarkan desain secara horizontal daripada vertikal (lebih sedikit baris baru).

Terima kasih kepada @Neil untuk menghemat 8 byte!


‖Bmenerima beberapa operan, Beberapa kombinasi bahkan memiliki pengodean byte tunggal ( ¬dan Lmisalnya).
Neil

Selain itu, menggunakan spasi sebagai ganti .s akan menghemat beberapa byte karena Anda tidak membutuhkan spasi di akhir baris.
Neil

(Saya tidak tahu yang secara vertikal atau horizontal akan menghasilkan lebih banyak ruang di ujung garis).
Neil

Saya mencoba ‖B¬dan itu tidak membantu karena string literal yang dipantulkan membutuhkan byte tambahan, tetapi ‖BLtidak menghemat byte karena string literal baris-terbalik adalah jumlah byte yang sama.
Neil

Di sisi lain, untuk output vertikal, ‖BLmembuat saya menjadi 83 byte, dan ‖B¬dapat dilakukan dalam 81 byte: Coba online!
Neil

2

Python 2, 153 byte

00000000: 2363 6f64 696e 673a 4c31 0a66 6f72 2079  #coding:L1.for y
00000010: 2069 6e20 7261 6e67 6528 2d33 302c 3331   in range(-30,31
00000020: 293a 733d 666f 726d 6174 2869 6e74 2827  ):s=format(int('
00000030: 0137 ec80 937f f739 027d 7209 37e7 395c  .7.....9.}r.7.9\
00000040: 30cc ef73 108c 1fff fe41 b14e fb14 1bfe  0..s.....A.N....
00000050: d364 09ce f7ff fc81 18c6 c811 8cec 8111  .d..............
00000060: 272e 656e 636f 6465 2827 6865 7827 295b  '.encode('hex')[
00000070: 6162 7328 7929 3a3a 3331 5d2c 3136 292c  abs(y)::31],16),
00000080: 2730 3132 6227 293b 7072 696e 7420 732b  '012b');print s+
00000090: 735b 2d32 3a3a 2d31 5d                   s[-2::-1]

Cobalah online!


2

Perl 5 , 121 byte

Menggunakan 1piksel putih dan 0merah.

$_=unpack"B*",'ñæÄxããÄvñí·Ž2IŽ=·ñæÀxàƒxoá|3†øÞ<òà';say for(@a=map{s/.$//r.reverse}/.{12}/g),pop@a&&reverse@a

Skrip ini berisi karakter yang tidak patut dicetak sehingga hexdump yang dapat dibalik disertakan dalam tautan verifikasi di bawah ini.

Cobalah online!
Verifikasi panjang kode .

Penjelasan

Kuartal atas dari pola disimpan dalam gumpalan biner. Ini hanya menggunakan packfungsi Perl dengan string biner asli (setelah mengganti .dan #dengan 1dan 0). Ini memungkinkan kita untuk menyimpan 8 bit pola di setiap byte. Setelah kami membongkar data, kami memiliki string biner panjang, yang kami pecah menjadi beberapa bagian dengan panjang 12, digabungkan dengan terbalik (kecuali untuk karakter tengah duplikat) dan kemudian loop atas daftar bagian (digabungkan dengan terbalik daftar, kecuali untuk elemen tengah duplikat) dan output mereka semua menggunakan say, yang menambahkan baris baru

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.