Rushnyk na Białorusi

19

Mamy już kilka wyzwań z flagami narodowymi: AU CH FI FR GB GB IS KR NP US ... Oto kolejna, nieco bardziej zaawansowana:

Zwróć lub wydrukuj dekoracyjny wzór z flagi narodowej Białorusi jako matrycę dwóch różnych wartości dla czerwieni i bieli.

rushnyk

Jeśli twój język nie obsługuje matryc, użyj listy list lub najbliższego odpowiednika. Dodatkowa spacja jest dozwolona ze wszystkich stron. Matryca może być transponowana. Elementy mogą mieć spójny separator, podobnie jak wiersze, np. Wyjściem może być JSON. Musisz użyć wersji 2012 wzoru wzoru, a nie wersji z 1951 lub 1995 roku. To jest , więc wygrywa najkrótsza odpowiedź na język.

Przykładowe dane wyjściowe:

....###....#....###....
#..#####...#...#####..#
..###.###.....###.###..
.###...###...###...###.
###..#..###.###..#..###
.###...###...###...###.
..###.###.....###.###..
#..#####...#...#####..#
....###....#....###....
..#..#..#.....#..#..#..
.###...###...###...###.
##.##.##.##.##.##.##.##
.###...###...###...###.
..#..#..#.....#..#..#..
....###....#....###....
#..#####...#...#####..#
..#######.....#######..
.#########...#########.
#######################
####...#########...####
.#####..#######..#####.
..###....#####....###..
#..#....#######....#..#
.......####.####.......
#.....####...####.....#
##...####..#..####...##
###.####.......####.###
.######..#...#..######.
..####...##.##...####..
...###....###....###...
....##.#...#...#.##....
...###....###....###...
..####...##.##...####..
.######..#...#..######.
###.####.......####.###
##...####..#..####...##
#.....####...####.....#
.......####.####.......
#..#....#######....#..#
..###....#####....###..
.#####..#######..#####.
####...#########...####
#######################
.#########...#########.
..#######.....#######..
#..#####...#...#####..#
....###....#....###....
..#..#..#.....#..#..#..
.###...###...###...###.
##.##.##.##.##.##.##.##
.###...###...###...###.
..#..#..#.....#..#..#..
....###....#....###....
#..#####...#...#####..#
..###.###.....###.###..
.###...###...###...###.
###..#..###.###..#..###
.###...###...###...###.
..###.###.....###.###..
#..#####...#...#####..#
....###....#....###....
ngn
źródło

Odpowiedzi:

7

Stax , 68 bajtów

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

Uruchom i debuguj

Wyprowadza wersję pionową, 1białą, 0czerwoną. Naiwne podejście: kompresuj lewy górny kwartał, a następnie zakończ.

pustkowie
źródło
4

Python 2 , 183 181 bajtów

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

Wypróbuj online!

Wysyła transponowaną wersję, używając 0i 1dla bieli i czerwieni.

TFeld
źródło
Czy to kompresuje cały ciąg wartości dla flagi?
Raghu Ranganathan
@RaghuRanganathan Tylko jedna czwarta. for s in S[:0:-1]+S:print s[:0:-1]+sPodwaja linie i wydrukować każdy wiersz podwoiła
TFeld
3

JavaScript (ES6), 164 bajty

Wyjście transponowane. Używa 0białego, 1czerwonego.

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):''

Wypróbuj online! (prettified output)

Użycie Buffer () w Node.js pozwala zaoszczędzić 1 bajt.

Arnauld
źródło
3

SOGL V0.12 , 61 56 bajtów

 №α⁶U-┼°jōIΤ$ΣΧρ←FVξÆ⅝{VqM┼οYΠ!↕οΩÆ.χg±└¶Σ,Cy′┌“2─±6«n╬,

Wypróbuj tutaj!

dzaima
źródło
3

Węgiel drzewny, 93 89 81 bajtów

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

Moja pierwsza odpowiedź na węgiel drzewny! :RE

Wypróbuj online!

Zaoszczędzono 4 bajty, wysyłając projekt w poziomie zamiast w pionie (mniej nowych linii).

Dzięki @Neil za oszczędność 8 bajtów!

Rozpad beta
źródło
‖Bakceptuje wiele operandów, niektóre kombinacje mają nawet kodowanie jednobajtowe ( ¬i Lna przykład).
Neil,
Ponadto użycie spacji zamiast .s powinno zaoszczędzić kilka bajtów, ponieważ nie potrzebujesz spacji na końcu linii.
Neil,
(Nie wiem, która z pozycji w pionie lub w poziomie spowoduje powstanie większej liczby spacji na końcach linii).
Neil,
Próbowałem ‖B¬i to nie pomaga, ponieważ odzwierciedlony ciąg liter kosztuje dodatkowy bajt, ale ‖BLoszczędza bajt, ponieważ literał ciągów z odwróconą linią ma tę samą liczbę bajtów.
Neil,
Z drugiej strony, dla wyjścia pionowego, ‖BLdostaje mnie do 83 bajtów i ‖B¬można to zrobić w 81 bajtach: Wypróbuj online!
Neil,
2

Python 2, 153 bajty

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]

Wypróbuj online!

Lynn
źródło
2

Perl 5 , 121 bajtów

Wykorzystuje 1białe piksele i 0czerwone.

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

Ten skrypt zawiera znaki niedrukowalne, więc odwracalny zrzut heksowy znajduje się w linku weryfikacyjnym poniżej.

Wypróbuj online!
Weryfikacja długości kodu .

Wyjaśnienie

Górna ćwiartka wzoru jest przechowywana w binarnym obiekcie blob. To po prostu używa packfunkcji Perla z oryginalnym ciągiem binarnym (po zamianie .oraz za #pomocą 1i 0). To pozwala nam przechowywać 8 bitów wzoru w każdym bajcie. Po rozpakowaniu danych mamy długi ciąg binarny, który dzielimy na sekcje o długości 12, łączymy z odwrotnością (z wyjątkiem zduplikowanego znaku środkowego), a następnie zapętlamy listę sekcji (połączoną z odwrotnością listy, z wyjątkiem zduplikowanego elementu środkowego) i wypisz je wszystkie za pomocą say, co dodaje nowy wiersz.

Dom Hastings
źródło