Belarus rushnyk

19

Nous avons déjà pas mal de défis avec le drapeau national: AU CH FI FR GB GB IS KR NP US ... Voici un autre, un peu plus avancé:

Renvoyez ou imprimez le motif décoratif du drapeau national du Bélarus sous la forme d'une matrice de deux valeurs distinctes pour le rouge et le blanc.

rushnyk

Si votre langue ne prend pas en charge les matrices, utilisez une liste de listes ou l'équivalent le plus proche. Des espaces supplémentaires sont autorisés de tous les côtés. La matrice peut être transposée. Les éléments peuvent avoir un séparateur cohérent, tout comme les lignes, par exemple la sortie peut être JSON. Vous devez utiliser la version 2012 du motif d'ornement, pas les versions 1951 ou 1995. C'est le , donc la réponse la plus courte par langue l'emporte.

Exemple de sortie:

....###....#....###....
#..#####...#...#####..#
..###.###.....###.###..
.###...###...###...###.
###..#..###.###..#..###
.###...###...###...###.
..###.###.....###.###..
#..#####...#...#####..#
....###....#....###....
..#..#..#.....#..#..#..
.###...###...###...###.
##.##.##.##.##.##.##.##
.###...###...###...###.
..#..#..#.....#..#..#..
....###....#....###....
#..#####...#...#####..#
..#######.....#######..
.#########...#########.
#######################
####...#########...####
.#####..#######..#####.
..###....#####....###..
#..#....#######....#..#
.......####.####.......
#.....####...####.....#
##...####..#..####...##
###.####.......####.###
.######..#...#..######.
..####...##.##...####..
...###....###....###...
....##.#...#...#.##....
...###....###....###...
..####...##.##...####..
.######..#...#..######.
###.####.......####.###
##...####..#..####...##
#.....####...####.....#
.......####.####.......
#..#....#######....#..#
..###....#####....###..
.#####..#######..#####.
####...#########...####
#######################
.#########...#########.
..#######.....#######..
#..#####...#...#####..#
....###....#....###....
..#..#..#.....#..#..#..
.###...###...###...###.
##.##.##.##.##.##.##.##
.###...###...###...###.
..#..#..#.....#..#..#..
....###....#....###....
#..#####...#...#####..#
..###.###.....###.###..
.###...###...###...###.
###..#..###.###..#..###
.###...###...###...###.
..###.###.....###.###..
#..#####...#...#####..#
....###....#....###....
ngn
la source

Réponses:

7

Stax , 68 octets

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

Exécuter et déboguer

Sorties en version verticale, 1pour blanc, 0pour rouge. Approche naïve: comprimer le quart supérieur gauche, puis terminer.

wastl
la source
4

Python 2 , 183 181 octets

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

Essayez-le en ligne!

Sorties version transposée, en utilisant 0et 1pour le blanc et le rouge.

TFeld
la source
Est-ce que cela compresse la chaîne de valeurs entière pour l'indicateur?
Raghu Ranganathan
@RaghuRanganathan Un quart seulement. Le for s in S[:0:-1]+S:print s[:0:-1]+sdouble les lignes et imprime chaque ligne doublé
TFeld
3

JavaScript (ES6), 164 octets

Sortie transposée. Utilise le 0blanc, le 1rouge.

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

Essayez-le en ligne! (sortie prettifiée)

L'utilisation de Buffer () dans Node.js permet d'économiser 1 octet.

Arnauld
la source
3

SOGL V0.12 , 61 56 octets

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

Essayez-le ici!

dzaima
la source
3

Fusain, 93 89 81 octets

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

Ma première réponse au fusain! :RÉ

Essayez-le en ligne!

4 octets enregistrés en générant la conception horizontalement plutôt que verticalement (moins de nouvelles lignes).

Merci à @Neil d'avoir économisé 8 octets!

Beta Decay
la source
‖Baccepte plusieurs opérandes, certaines combinaisons ont même un codage sur un octet ( ¬et Lpar exemple).
Neil
En outre, l'utilisation d'espaces au lieu de .s devrait vous faire économiser quelques octets car vous n'avez pas besoin d'espaces à la fin d'une ligne.
Neil
(Je ne sais pas lequel de verticalement ou horizontalement entraînera plus d'espaces à la fin des lignes).
Neil
J'ai essayé ‖B¬et cela n'aide pas parce que le littéral de chaîne reflété coûte un octet supplémentaire, mais ‖BLenregistre un octet parce que le littéral de chaîne inversé est le même nombre d'octets.
Neil
Par contre, pour la sortie verticale, ‖BLça me fait 83 octets, et ça ‖B¬peut se faire en 81 octets: Essayez-le en ligne!
Neil
2

Python 2, 153 octets

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]

Essayez-le en ligne!

Lynn
la source
2

Perl 5 , 121 octets

Utilise 1pour les pixels blancs et 0pour le rouge.

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

Ce script contient des caractères non imprimables donc un vidage hexadécimal réversible est inclus dans le lien de vérification ci-dessous.

Essayez-le en ligne!
Vérification de la longueur du code .

Explication

Le quart supérieur du motif est stocké dans le blob binaire. Cela utilise simplement la packfonction de Perl avec la chaîne binaire d'origine (après avoir remplacé .et #avec 1et 0). Cela nous permet de stocker 8 bits du modèle dans chaque octet. Une fois que nous avons décompressé les données, nous avons la longue chaîne binaire, que nous décomposons en sections de longueur 12, concaténons avec l'inverse (sauf pour le caractère du milieu dupliqué), puis bouclons sur la liste des sections (concaténées avec l'inverse) de la liste, à l'exception de l'élément central dupliqué) et les afficher tous en utilisant say, ce qui ajoute une nouvelle ligne.

Dom Hastings
la source