Desenha a bandeira nacional da França

106

Houve muitos outros desafios de bandeira publicados, mas nenhum para a bandeira nacional da França . Esta semana parece ser um momento apropriado.

Produza esse sinalizador no menor número possível de bytes:

bandeira francesa

  • A imagem deve estar na proporção de 3: 2, com tamanho de pelo menos 78 pixels de largura e 52 pixels de altura.
  • Cada faixa ocupa um terço da largura.
  • As cores da listra da esquerda para a direita são RGB: (0, 85, 164), (255, 255, 255), (239, 65, 53).
  • A imagem pode ser salva em um arquivo ou transmitida para STDOUT em qualquer formato de arquivo de imagem comum ou pode ser exibida.
  • Como alternativa, imprima um bloco de texto com pelo menos 78 caracteres de largura, composto por caracteres que não sejam espaços em branco, que representam o sinalizador, usando códigos de cores ANSI para colori-lo. (Use azul, branco e vermelho padrão.)
  • Imagens / bibliotecas de sinalizadores embutidas não são permitidas.

O código mais curto em bytes vence.

Entre os melhores

O snippet de pilha na parte inferior desta postagem gera o cabeçalho das respostas a) como uma lista da solução mais curta por idioma eb) como um cabeçalho geral.

Para garantir que sua resposta seja exibida, inicie-a com um título, usando o seguinte modelo de remarcação:

## Language Name, N bytes

onde Nestá o tamanho do seu envio. Se você melhorar sua pontuação, poderá manter as pontuações antigas no título, identificando-as. Por exemplo:

## Ruby, <s>104</s> <s>101</s> 96 bytes

Se você quiser incluir vários números em seu cabeçalho (por exemplo, porque sua pontuação é a soma de dois arquivos ou deseja listar as penalidades de sinalizador de intérprete separadamente), verifique se a pontuação real é o último número no cabeçalho:

## Perl, 43 + 2 (-p flag) = 45 bytes

Você também pode transformar o nome do idioma em um link que será exibido no snippet:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes

Steve
fonte
4
Esses valores RGB não correspondem à sua imagem. Pelo que vejo, você tem RGB: (0, 35, 149), (255, 255, 255), (237, 41, 57).
copo
8
O armazenamento compacto da paleta especificada é provavelmente a parte mais complicada desse problema na maioria dos idiomas. Dado isso, parece bastante injusto soluções gráficas para permitir a saída ANSI com uma paleta padrão. Por que não permitir que soluções gráficas usem puro (0, 0, 255) / (255, 255, 255) / (255, 0 0) para nivelar o campo de jogo?
Johne
15
Cada faixa ocupa um terço da largura. Pode ser mais interessante usar a variante naval: por um regulamento datado de 17 de maio de 1853, a marinha voltou a usar as proporções 30:33:37, que agora continua a usar, uma vez que o bater da bandeira faz com que as partes se afastem mais adriça parece menor.
Ben Jackson
34
echo 🇫🇷não é grande o suficiente
Digital Trauma
5
@JohnE Eu concordo. As regras sobre cores dão às soluções da arte ASCII uma enorme vantagem. Eles também não tornam o desafio mais "difícil" (na verdade, apenas adicionam bytes) para os idiomas que podem usar cores arbitrárias e desqualificam várias linguagens interessantes que não podem fazer cores arbitrárias.
a spaghetto

Respostas:

38

CJam, 23 22 bytes

00000000: 27 9b 22 5c 22 25 1f 22 66 7b 69 27 6d 32 37 2a  '."\"%."f{i'm27*
00000010: 7d 4e 5d 32 36 2a                                }N]26*

O acima é um hexdump que pode ser revertido com xxd -r.

Ao custo de dois bytes extras - para um total de 24 bytes -, podemos usar cores de fundo, tornando a saída um pouco mais bonita.

00000000: 27 9b 22 2c 2f 29 00 22 66 7b 69 27 6d 53 32 36  '.",/)."f{i'mS26
00000010: 2a 7d 57 4e 74 32 36 2a                          *}WNt26*

Como funciona

Nos dois programas, usamos a seqüência de escape ANSI \x9bXYm- onde Xé 3a cor do primeiro plano e a cor do plano 4de fundo e Yespecifica a cor a ser usada - para alternar entre as três cores do sinalizador.

'<CSI>       Push the '\x9b' character (Control Sequence Introducer).
"\"%<US>"    Push the string of the ISO 8859-1 characters with code
             points 34, 37, and 31.
f{           For each character in the string, push the CSI and that
             character; then:
  i            Cast the character to integer.
  'm27*        Push 27 m's. The first completes the control sequence,
               the remaining 26 will be printed.
}
N]           Wrap the generated array and "\n" in an array.
26*          Repeat it 26 times.

O outro programa é semelhante.

Resultado

resultado

Dennis
fonte
Atualmente, não tenho certeza da altura em que devo criar a "imagem".
Dennis
Eu fui com 78x30 na minha resposta. Essas dimensões no Lucida Console 9 pt (a fonte padrão do xterm) apresentaram o valor mais próximo de 3: 2.
Mego
Você pode usar um bloco completo para 'Prettyness'
Matthew Roh
75

Pure Bash (no OSX), 84

O terminal OSX padrão suporta emojis coloridos. Não tenho certeza se isso conta como texto ou saída gráfica.

printf -vs %26s
for i in {1..26}
do echo ${s// /🔵}${s// /⚪️}${s// /🔴}
done

A saída se parece com:

insira a descrição da imagem aqui


Alternativamente:

Bash com utilitários OSX, 56

yes `dc -e3do26^d1-dn2/*p|tr 201 🔵🔴⚪️`|sed 26q

A dcexpressão:

  • calcula 3^26-1e imprime em ternário22222222222222222222222222
  • divide isso por 2 e multiplica por 3^26. Saída em nível ternário1111111111111111111111111100000000000000000000000000

trem seguida, traduz os 210 caracteres para 🔵⚪️🔴. yesgera esta linha indefinidamente. sed 26qinterrompe a saída em 26 linhas.

Trauma Digital
fonte
51
Um terminal que suporta emojis. Uau.
precisa
6
A primeira solução não usa os valores RGB corretos nem as cores ANSI padrão, usa?
Maçaneta
@ Doorknob Você está certo, é claro - nem as soluções -, então esta resposta pode estar ultrapassando os limites. Pedi esclarecimentos ao OP
Digital Trauma
3
É apenas Unicode.
Undergroundmonorail
1
@ steve Eu realmente não esperava que essa resposta se tornasse tão popular, especialmente porque existem perguntas sobre sua validade . Você pode dar um "sim" ou "não" se você acha que é válido? Obrigado!
Digital Trauma
51

Desmos, 30 12 bytes

3x>10
3x<-10

Experimente online.

Não tenho certeza se isso é válido. Entre em contato se houver algum problema.

um spaghetto
fonte
3
@ CᴏɴᴏʀO'Bʀɪᴇɴ As cores padrão são vermelho e azul nessa ordem (acredito), portanto não há necessidade de defini-las.
a spaghetto
7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Então é um gerador de bandeira aleatória;)
DanTheMan
3
@ CᴏɴᴏʀO'Bʀɪᴇɴ Eles não são aleatórios para mim - inserir duas desigualdades manualmente está sempre me deixando vermelho e depois azul.
Mego
1
Isto é estranho. Estou ficando vermelho e azul também.
lirtosiast
2
Eu não acho que é ... nem se encaixa exatamente na proporção.
Maçaneta
51

Python 2, 47 bytes

s="[3%smF";print(s%4*26+s%7*26+s%1*26+"\n")*30

Contém imprimíveis - aqui está um hexdump (reversível com xxd -r):

00000000: 733d 221b 5b33 2573 3b31 6d46 223b 7072  s=".[3%s;1mF";pr
00000010: 696e 7428 7325 342a 3236 2b73 2537 2a32  int(s%4*26+s%7*2
00000020: 362b 7325 312a 3236 2b22 5c6e 2229 2a33  6+s%1*26+"\n")*3
00000030: 30                                       0

Usa códigos de escape ANSI para imprimir caracteres coloridos em STDOUT - escolhi "F" para a França. Nenhum link on-line porque o ideone não suporta códigos de escape ANSI na saída.

Obrigado a Dennis e xnor por ótimas dicas.

Screenshot do xterm:

bandeira

Mego
fonte
1
Você tem um espaço extra lá. in [0]->in[0]
mbomb007
2
1. Você pode usar bytes ESC reais em vez de \x1b. 2. Negrito não parece ser necessário. 3. Não sei se isso também se aplica à arte ANSI, mas a questão parece exigir uma proporção de 3: 2.
Dennis
É mais curto para sub nos parâmetros com formatação: print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30.
Xnor
16
Pressione F para prestar respeito
Riking 18/11/2015
4
O personagem parece um pouco melhor, por exemplo print("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
ali_m 21/11/2015
44

HTML / SVG, 76 bytes 87 88 121 122 149

Guardado 27 bytes graças a @insertusernamehere

Economiza 9 bytes graças a @Joey

Guardado 1 bytes graças a @sanchies

Economiza 1 bytes graças a @Neil

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52

Usando muitos abusos de sintaxe em HTML, isso pode ser bem curto.


Captura de tela da saída:

Saída da bandeira da França


Ou tente (verifique se o seu navegador suporta SVG):

<svg><path fill=#0055a4 d=m0,0h26v52H0 /><path fill=#ef4135 d=M52,0h26v52H52

Downgoat
fonte
3
Eu tentei derrotá-lo com CSS e agora joguei seu SVG em um campo ainda menor do que minha solução CSS. : D Este é o mais curto que pude trabalhar no Safari, Chrome e Firefox, tem 122 bytes de comprimento:<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
insertusernamehere
1
@insertusernamehere Obrigado, isso salvou 27 bytes! Eu consegui promover golf esse baixo para um surpreendente 88 bytes
Downgoat
3
Para mim, fill=#0055a4 />também funciona (não "), economizando um byte inteiro.
Sanchises
3
@sanchises um byte inteiro? o_O wow : D
developerbmw
4
@developerbmw Na verdade, seria mais impressionante economizar meio byte quando você pensa sobre isso.
Sanchises
29

Brainfuck $ , 153 bytes

+++++++++++++[->>>++>+++++++>++++>>>>++++++++>+++<<<<<<<<<<]>>>+>>#->$#>$#+++++++>$--->+++++[<]<<+++++[->+++++>++++++<<]>+#>($#([-]>[.>]<[<])>>>>+++<<<<)

Produz a imagem com códigos de cores ANSI. Eu escolhi uma altura de 30 como Mego .

A implementação de referência de 2009 vinculada na página esolangs desapareceu. Você pode executá-lo usando este intérprete criado por mim, que suporta tudo, desde a página esolangs.

Brainfuck, 258 bytes

É basicamente a mesma coisa, mas apenas no velho e simples Brainfuck.

>>+++++++++++++[-<<++>>>>++>+++++++>++++>++++>+++++>++++>++++++++>+++[<]<]>>+>>->>------>--->+++++[<]<<<++++[>+++++[->+++++<]>+[>>[.>]<[<]<-]>>>>>+++[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>------[<]+++++[-<+++++>]<+[>>[.>]<[<]<-]>>>>>+++[<]<++++++++++.[-]<<-]

Ou, se você preferir este em oOo CODE (984 bytes):

one day ThERe WIlL Be PEaCE iN ThIS wORlD
OnE DaY ThERe WiLl Be peaCe iN ThIS wOrld
one day theRe WIlL be pEaCE iN ThIS wORlD
OnE DaY theRe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCe in ThIS wORlD
OnE day ThERe WIlL Be PEaCE iN ThIS wOrld
OnE DaY ThErE wilL bE PeaCe IN this woRlD
one day There will Be pEacE in ThiS woRld
one Day TheRe will Be PEaCE iN ThIS wOrLd
onE dAY thEre WilL Be PEaCE iN ThIs World
OnE DaY ThERe WIlL bE pEace in ThIS wORlD
OnE DaY thErE Will Be PeAce in this WoRLd
one dAY thErE wilL bE PeaCE in tHIs world
one day theRe WIlL Be PeAce iN tHIS wORlD
OnE DaY ThErE wIll be PEaCE iN ThIS wORlD
one dAY thERe WiLl be peace In THis worLD
onE dAy thErE WilL Be peACe in this world
one Day TheRe wIll Be pEace In thIs WORlD
OnE DaY ThERe WiLl Be peaCE iN ThIS wORlD
OnE day tHEre WIlL bE peace in tHiS World
oNE daY tHere WiLL be PEace IN this world
one day ThERe WIlL bE peaCe IN thIS wORlD
OnE DaY ThERe WIlL Be PEaCE iN THis WoRld
oNE daY thERe wiLL
PurkkaKoodari
fonte
25

Bash + ImageMagick, 60 77 73 bytes

convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"

(ugh, +17 caracteres devido a requisitos de cores que eu não havia notado antes ...)

Saídas para o arquivo a, no formato netpbm:

llama@llama:~$ convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
llama@llama:~$ file a
a: Netpbm image data, size = 78 x 52, rawbits, pixmap

Também pode gerar em PNG, se você alterar o nome do arquivo para a.png(+4 caracteres).

Resultado:

insira a descrição da imagem aqui

Maçaneta da porta
fonte
1
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
Digital Trauma
@DigitalTrauma Thanks! Isso salva 4 caracteres e não sai com um erro. (Além disso, eu nunca soube ImageMagick poderia ler de / escrever para STDIN.)
Doorknob
Você pode usar em -scalevez de -sample; Além disso, a barra invertida não parece ser necessário
aditsu
25

LaTeX, 139 bytes

Obrigado a @WChargin por salvar 21 bytes.

\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,‌​1,1!\z.94,.25,.21!\end{document}

Isso imprime a seguinte imagem de 12 cm * 8 cm em uma página A4:

insira a descrição da imagem aqui

Observe que "Página 1" também é impressa na parte inferior da página

Fatalizar
fonte
1
Bem, este é cerca de 100 bytes mais curta do que a minha asymptotesolução ...
Arcturus
1
s.\newcommand\z[1].\def\z#1para salvar um monte de bytes. Além disso, você pode raspar alguns usando \def\z#1!{…}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!isto é, utilizar os seus próprios delimitadores em vez de chaves para agrupamento
wchargin
1
Você também pode\input color
wchargin 20/11/2015
1
Para completar, versão revisada (139 bytes):\documentclass{proc}\input color\begin{document}\def\z#1!{{\color[rgb]{#1}\rule{4cm}{8cm}}}\z0,.33,.64!\z1,1,1!\z.94,.25,.21!\end{document}
wchargin
24

Pitão, 27 bytes

 .w*52[smmdGc3CM"\0U¤ÿÿÿïA5

Existem alguns caracteres não imprimíveis, então aqui está um hexdump:

00000000   2E 77 2A 35  32 5B 73 6D  6D 64 47 63  33 43 4D 22  .w*52[smmdGc3CM"
00000010   5C 30 55 A4  FF FF FF EF  41 35                     \0U.....A5

Isso cria um arquivo o.pngcom exatamente 78 pixels de largura e 52 pixels de altura:

insira a descrição da imagem aqui

Explicação:

.w*52[smmdGc3CM"........
               "........  a string containing the bytes 
                          0, 85, 164, 255, 255, 255, 239, 65, 53
             CM           convert them to integers
           c3             split into 3 lists
      smmdG               duplicate each list 26 times
     [                    put them into a list
  *52                     and duplicate it 52 times
.w                        save it as an image o.png
Jakube
fonte
1
Por um segundo, pensei que havia entendido mal a especificação PNG.
Primo
1
save it as an image o.png, mas não há ".png" em nenhum lugar?
rev
1
@AsidShout Como você chama o programa? Se você usar python3 pyth.py code.pyth, poderá encontrá-lo no mesmo diretório.
21715 Jak Jak
20

HTML (modo quirks), 68 bytes

Isso usa o modo peculiar para renderizar o sinalizador.

O HTML é MUITO inválido, mas funciona em um navegador Android 4.4.2 padrão e no Firefox 42.0 (no Windows 7 x64).

<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>

A bandeira é renderizada com o tamanho certo e as cores vermelha e azul padrão. Todas as páginas da Web começam com um fundo branco padrão.



Como uma alternativa:

Uma versão HTML5 perfeitamente válida (141 bytes):

<!DOCTYPE html><title>x</title><table style=width:78px;height:52px><tr><td style=background:#0055a4><td><td style=background:#ef4135></table>

Verifique sua validade em: https://html5.validator.nu/

Tela de impressão do resultado:

resultado de validação

Ismael Miguel
fonte
1
Você tem certeza? Quando tenho um arquivo HTML com apenas essa linha, ele não funciona no Firefox, Chrome e Safari. Se o arquivo contiver outros elementos HTML após essa linha, funcionará para mim. Então, talvez você não possa descartar a trilha >?
insertusernamehere
1
"Perfeitamente válido"? Deveria ser style="..."isso que você procura no segundo exemplo.
mbomb007
3
@ mbomb007 O que pretendo é criar o menor código HTML válido. Ele valida com o validador oficial, portanto, é perfeitamente válido em HTML. Você pode tentar se não acredita.
Ismael Miguel
1
@ mbomb007 Além disso, cotações ausentes é o menor problema: não há <html>, não <head>, não <body>, não </tr>, não </td>e não fechamento de todas as tags ausentes.
Ismael Miguel
1
@insertusernamehere Você estava certo. Também estava incomodando no Android. Eu testei no jsfiddle. Mas ao acessar data:text/html,<table width=78 height=52><td bgcolor=0055a4><td><td bgcolor=ef4135>, não estava funcionando. Corrigido agora e use o link para testá-lo.
Ismael Miguel
17

TI-Basic, 52 44 42 bytes

GridOff
AxesOff
11
Shade(-Ans,Ans,Xmin,Xmin/3
Shade(-Ans,Ans,Xmax/3,Xmax,1,1,Ans

(assume uma área de gráfico padrão [-10,10,1] por [-10,10,1])

Seria 4 bytes mais curto sem as 2 primeiras linhas, mas, por padrão, teria eixos e não pareceria tão bom.

Se parece com isso:

insira a descrição da imagem aqui

Se o sombreamento for inválido para o desafio, informe-me!

Sem as duas primeiras linhas, fica assim:

insira a descrição da imagem aqui

DanTheMan
fonte
Eu também incluiria a versão sem as três primeiras linhas apenas como comparação.
GamrCorps
1
Eu acho que você pode simplesmente ir de Ymin para Ymax. Você também pode assumir uma tela padrão de -10 a 10. Também não tenho certeza sobre a validade disso, pois as regiões vermelha e azul são apenas meio sombreadas.
lirtosiast
@ThomasKwa Editei meu post para mostrar por que não usei apenas Ymin e Ymax. Não sabia que podia assumir uma tela padrão, mas você não tem certeza sobre o que é essa tela padrão. Você poderia por favor esclarecer? Sobre a coisa "semi-sombreada", é assim que o TI-Basic obscurece as coisas, se for inválido, mudarei prontamente.
18715 DanTheMan
1
Uma tela padrão é Ymin = Xmin = -10, Ymax = Xmax = 10. A calculadora começa com essas configurações de janela e AxesOn etc., para que você possa assumi-las.
lirtosiast
1
@ Doorknob Até onde eu sei, é impossível fazer isso sem recorrer à bruxaria.
18715 DanTheMan
17

ffmpeg, 110 113 116 117 119 108 100 bytes

Exibir, usando ffplay, 100 bytes:

ffplay -f lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3

Salvo no arquivo, usando ffmpeg, 108 bytes:

ffmpeg -lavfi color=#0055a4:49x98[r];color=white:49x98[w];color=#ef4135:49x98[b];[r][w][b]hstack=3 -t 1 .png

A versão atual do comando será interrompida com um erro, mas exibirá uma única imagem ".png", igual à mostrada abaixo.

insira a descrição da imagem aqui

Gyan
fonte
8
Uau. Abusando ffmpeg para fazer imagens ...
Cole Johnson
Eu vi essa pergunta e pensei em fazer o mesmo. Bom trabalho tornando-o compacto. Se for permitido, você pode torná-lo um pouco menor usando em whitevez de #ffffff: os valores devem ser os mesmos.
Llogan
Eu sei. Não foi incomodado o suficiente. Vai fazer isso agora.
Gyan
#Fff funciona?
ev3commander
Não. Mas eu posso pular o f em f.png
Gyan
16

CSS, 127 128 144 bytes

body:before,body:after{content:'';float:left;width:33%;height:100%;background:#0055a4}body:after{float:right;background:#ef4135}

Não há necessidade de outra tag, funciona apenas com o bodyelemento

Editar% s

  • Economizou 16 bytes removendo display:block;e alguns ;.
  • Salvo 1 byte , removido o final }.
insertusernamehere
fonte
6
Embora tecnicamente o CSS não seja uma linguagem de programação para nossas definições.
Conor O'Brien
10
@ CᴏɴᴏʀO'Bʀɪᴇɴ eu sei - só queria vencer o SVG .
insertusernamehere
4
@ CᴏɴᴏʀO'Bʀɪᴇɴ está certo, esta não é uma resposta válida.
Mego
2
@ CᴏɴᴏʀO'Bʀɪᴇɴ o css foi salvo como um arquivo SASS, já que o SASS é uma linguagem de script, seria uma resposta válida?
fcalderan
6
Sim, CSS regular é um arquivo SASS válido.
ev3commander
16

JavaScript, 140 143 147 151 153 bytes

   with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=2;i--;fillRect(i*52,0,26,52))fillStyle=i?"#ef4135":"#0055a4"


Editar% s

  • Economizou 2 bytes substituindo 2*i*26por i*52. Graças a Cᴏɴᴏʀ O'Bʀɪᴇɴ .
  • Salvo 4 bytes , refatorando o forloop. Graças a ETHproductions .
  • Salva 2 bytes usando a withdeclaração Graças ao Dendrobium .
  • Economizou 2 bytes , transformando o incremento em decremento. Graças a Shaun H .
  • Economizou 3 bytes substituindo fillStyle=["#0055a4","#ef4135"][i]por i?"#ef4135":"#0055a4".
insertusernamehere
fonte
3
2*i*26pode se tornar 52*i, não?
Conor O'Brien
7
@ CᴏɴᴏʀO'Bʀɪᴇɴ Claro que pode. Obrigado. Está muito além da minha hora de dormir.
insertusernamehere
2
Você pode cortar 2 bytes usando a withinstrução:with(document)with(body.appendChild(createElement`canvas`).getContext`2d`)for(i=0;i<2;fillRect(i++*52,0,26,52))fillStyle=["#0055a4","#ef4135"][i]
Dendrobium
2
salve um byte: x=(d=document).body.appendChild(d.createElementcanvas ).getContext2d #;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
Shaun H #
2
@Dendrobium Isso é bom. Muito obrigado.
insertusernamehere
13

R, 59 bytes

frame();rect(0:2/3,0,1:3/3,1,,,c("#0055a4",0,"#ef4135"),NA)

A saída é exibida:

insira a descrição da imagem aqui

Pode-se também fazer 49 bytes com

barplot(rep(1,3),,0,col=c("#0055a4",0,"#ef4135"))

se você não se importa com os eixos e bordas:

insira a descrição da imagem aqui

flodel
fonte
2
A proporção parece errada. Eu acho que você tem uma proporção de 2: 3 em um retângulo de cor única em vez de uma proporção de 3: 2 em toda a bandeira.
Fatalize
A proporção pode ser ajustada manualmente, redimensionando a janela de plotagem.
Flod #
3
Para se qualificar, sua inscrição deve funcionar 'fora da caixa'. Caso contrário, qualquer pessoa pode postar uma solução de 6 pixels e dizer 'Você pode aumentar o zoom manualmente'.
Sanchises
4
Você diz 'machados', eu digo 'mastro de bandeira'.
2
@sanchises: eu sou francesa e eu digo f ** k. LIBERTE!
Flod #
12

Blitz 2D / 3D , 154 108 bytes

Isso produz exatamente a mesma coisa que o exemplo dado na pergunta (exceto o anti-aliasing nas bordas onde as cores se encontram).

Graphics 800,533
ClsColor 255,255,255
Cls
Color 0,35,149
Rect 0,0,267,533
Color 237,41,57
Rect 533,0,267,533

A saída é exibida e fica assim:

insira a descrição da imagem aqui

El'endia Starman
fonte
12

Mathematica, 63 94 103 bytes

Quando vi esse desafio pela primeira vez, pensei em Doce! O Mathematica seria perfeito para isso! até que notei que os embutidos foram banidos: '(

Mas espere! Eu posso usar gráficos de barras!

r=RGBColor;BarChart[{1,1,1},ChartStyle->{r@"#0055a4",White,r@"#ef4135"},BarSpacing->0,AspectRatio->2/3]

(Obrigado a Martin Büttner por reduzir 5 bytes, mas adicionar 16)

Se parece com isso:

insira a descrição da imagem aqui

Se você adicionar ,Axes->None, fica assim:

insira a descrição da imagem aqui

Se você não se importa com a borda, pode usar o seguinte: (95 bytes)

r=RGBColor;BarChart[{1,1},ChartStyle->{r@"#0055a4",r@"#ef4135"},BarSpacing->1,AspectRatio->2/3,Axes->None]

Se parece com isso:

insira a descrição da imagem aqui

Sem eixos:

insira a descrição da imagem aqui

DanTheMan
fonte
3
Axes->None. Você também deve ser específico AspectRatio->2/3. Renomeação RGBColoré simples: r=RGBColor;...r["..."]. Você também pode usar a notação de prefixo para salvar mais dois bytes r@"#0055a4".
Martin Ender
Se você não precisar do esquema, tente BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]. O vermelho parece perto o suficiente.
DavidC
@DavidCarraher Meh, como a pergunta especifica um valor RGB específico, esse deve ser usado exatamente.
Martin Ender
Minha principal recomendação era desenhar dois retângulos, não três. Você está tecnicamente correto sobre Red, no entanto.
21415
As bordas ao redor das barras não invalidariam esta solução?
precisa
11

Javascript (ES6) 117 bytes

Desenha no console

for(i=c=s=[];i<156;c[i++]=`color:${[,'blue','#fff'][i%3]||(s+=`
`,'red')}`)s+='%c'+'+'.repeat(26);console.log(s,...c)

George Reith
fonte
2
Por 'white'que eu acho que é mais curto que fazer: #fff. Além disso, as cores Vermelho e Azul devem corresponder às cores especificadas na especificação
Downgoat 18/11/15
1
Você pode economizar alguns bytes com i=c=s=[]em vez de i=0,c=[],s=''depois de actualizar as cores que podem ajudar um pouco ...
Dom Hastings
1
@ Vɪʜᴀɴ Ao imprimir em texto, você pode usar as cores padrão ( rede blue). É o segundo ponto, contando de baixo para cima. Isso está dentro das especificações.
Ismael Miguel
@DomHastings Ótima dica, uso inteligente de coerção. Obrigado!
George Reith
1
@sysreq Seu texto no console ... Não tenho controle sobre a altura da linha do seu console. Tem 78 caracteres de largura e 52 de altura.
George Reith
10

pb , 68 bytes

cw[Y!52]{cccw[X!26]{b[77]>}ccccw[X!52]{b[77]>}cw[X!78]{b[77]>}<[X]v}

Uau, um desafio para o qual o pb é realmente bom! Esses são poucos e distantes entre si.

Quando escrevi as especificações para pb, incluí a saída colorida principalmente como piada. O idioma foi nomeado após um "pincel", por que não cor? Além de programas de exemplo, esta é a segunda vez que eu o uso. É implementado com códigos ANSI conforme a pergunta.

Eu usei 'M' como o personagem para mostrar porque é bastante denso.

Resultado:

Redimensionei essa captura de tela verticalmente para ter dois terços da sua altura porque as letras não são quadradas. A saída é 78 por 52, mas a captura de tela original parece realmente errada.

Com comentários, indentação e lixo eletrônico:

c               # Increase output colour by 1
                # 0 (White) -> 1 (Red)
                # Loop ends with output colour == 1, this is cheaper than
                # setting it back to white every time.

w[Y!52]{        # While the brush's Y coordinate is not 52:
    ccc           # Increase output colour by 3
                    # 1 (Red) -> 4 (Blue)

    w[X!26]{      # While the brush's X coordinate is not 26:
        b[77]       # Write 'M' at the brush's coordinates
        >           # Increase X coordinate by 1
    }             

    cccc          # Increase output colour by 4
                    # 4 (Blue) -> 8 mod 8 = 0 (White)

    w[X!52]{      # While the brush's X coordinate is not 52:
        b[77]       # (same as before)
        >         
    }             

    c             # Increase output colour by 1
                    # 0 (White) -> 1 (Red)

    w[X!78]{      # While the brush's X coordinate is not 78:
        b[77]       # (same as before)
        >
    }

    <[X]          # Set X back to 0
    v             # Increase Y by 1
}
undergroundmonorail
fonte
78x30 fornece as dimensões desejadas para a saída do terminal.
Mego
@ Mega Sim, mas não tenho certeza se é permitido.
Undergroundmonorail
A saída resultante no xterm na fonte padrão corresponde às dimensões especificadas.
Mego
Eu me sentiria estranho ao medir o tamanho da saída do console em qualquer coisa, exceto em "caracteres".
Undergroundmonorail
1
Quando seus personagens têm 1,2x de altura e largura, eles não produzem pixels muito bons.
Mego
10

C, 115 bytes

insira a descrição da imagem aqui

#define c"[48;2;%d;%d;%dm%9c"
d=255;main(a){while(a++<9)printf(c c c c,0,85,164,0,d,d,d,0,239,65,53,0,0,0,0,10);}

Contém imprimíveis:

00000000: 2364 6566 696e 6520 6322 1b5b 3438 3b32  #define c".[48;2
00000010: 3b25 643b 2564 3b25 646d 2539 6322 0a64  ;%d;%d;%dm%9c".d
00000020: 3d32 3535 3b6d 6169 6e28 6129 7b77 6869  =255;main(a){whi
00000030: 6c65 2861 2b2b 3c39 2970 7269 6e74 6628  le(a++<9)printf(
00000040: 6320 6320 6320 632c 302c 3835 2c31 3634  c c c c,0,85,164
00000050: 2c30 2c64 2c64 2c64 2c30 2c32 3339 2c36  ,0,d,d,d,0,239,6
00000060: 352c 3533 2c30 2c30 2c30 2c30 2c31 3029  5,53,0,0,0,0,10)
00000070: 3b7d 0a                                  ;}.

Para que este programa funcione, algumas coisas precisam ser verdadeiras:

  • O terminal suporta a ESC [48;2;<r>;<g>;<b>msequência de escape "truecolor".
  • O terminal não é xterm, pois a implementação do xterm acima produzirá cores ligeiramente erradas.
  • O terminal ignora completamente NUL caracteres.

Também parece melhor se o fundo do seu terminal for preto.

Para alterar a altura do sinalizador, passe argumentos de linha de comando para o programa. Para cada argumento passado, o sinalizador se torna uma linha mais curta. Isto não é um erro, é um recurso!

Resultado:

insira a descrição da imagem aqui

Functino
fonte
Ocorreu um problema ao compilar isso gcc(versão 5.1.1). Quaisquer sinalizadores específicos necessários para compilar? "ac: 1: 10: aviso: ISO C99 requer espaço em branco após o nome da macro #define c" \ x1b [48; 2;% d;% d;% dm "
steve
1
@ Steve é ​​que um aviso é um erro?
Functino
1
@Steve Acabei de testar novamente, gcc 5.2.1. Sem bandeiras. Produziu 12 avisos, mas tornou um binário funcional.
Functino
desculpas - funciona bem - ficou confuso com os avisos (e o fato de que o código parece muito enigmático para um novato C como eu)
steve
9

MATLAB, 82 79 78 bytes

x=[0 1 1 0];y(3:4)=2;fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)

A saída se parece com:

costrom
fonte
1
Qual versão do MATLAB? Não funciona no r2013a, pois as cores precisam ser números decimais no intervalo [0,1].
Tom Carpenter
1
A linha a seguir funciona fill(x,y,[0 85 164]/255,x+1,y,'w',x+2,y,[239 65 53]/255)e economiza 2 bytes. :) Eu também usaria ponto-e-vírgula em vez de novas linhas para evitar que coisas extras sejam impressas.
Tom Carpenter
1
@ TomCarpenter Eu espaquei na escala de cores 0-1, já faz um tempo desde que tive que especificar cores. Quanto às vírgulas / novas linhas, eu estava escolhendo a legibilidade sobre a escrita console, mas eu mudei minha resposta
costrom
9

Visual Basic + Excel, 618 137 bytes

Apenas curioso para ver como isso pode ser jogado no golfe.

EDIT: curiosidade saciada, graças a @ Neil e @ JimmyJazzx, 618 bytes caiu para 137 bytes

Sub a(): Columns("A:C").ColumnWidth = 26: Range("A1:A13").Interior.Color = RGB(0, 85, 164): Range("C1:C13").Interior.Color = RGB(239, 65, 53): End Sub

Sinalizador do Excel

Steve
fonte
1
Gravar uma macro resulta em código terrivelmente ineficiente. Tente Range("A1:C13").Interior.ColorIndex = 5e o Range("G1:I13").Interior.ColorIndex = 3que parece ser suficiente.
Neil
2
Desculpe, esse foi o Excel 2003, e esqueci de incluir o ActiveWorkbook.Colorspara especificar os valores RGB exatos. O Excel 2007 tem opções adicionais de cores, mas não as conheço de imediato.
Neil
1
Recebo 137 bytes com algumas alterações rápidas. Eu acho que você pode reduzir isso mais, mas essas são as mudanças fáceis. Sub a():Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
JimmyJazzx
Eu tenho 135 comSub a:Columns("A:C").ColumnWidth=26:Range("A1:A13").Interior.Color=RGB(0,85,164):Range("C1:C13").Interior.Color=RGB(239,65,53):End Sub
Joey
9

CSS, 102 110 111 114 bytes

*{background:linear-gradient(90deg,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat

Thomas Eschemann
fonte
1
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}- um byte mais curto
user2428118
1
na verdade, um único * é suficiente :) Obrigado!
Thomas Eschemann 18/11/2015
1
+1; Você pode salvar outro byte removendo o final }.
usar o seguinte comando
1
Você pode excluir a primeira cor e salvar 8 bytes.
23915 Awashi
Você pode substituir última 66%com 0.
Mr_Green
8

Dyalog APL ( 47 44)

⎕SM←↑1 21 41{(''⍴⍨2/20)1⍺,⍵,⍨4↑0}¨2*8 11 10

Resultado:

bandeira

marinus
fonte
2
você pode fazer 2*8 11 10?
lirtosiast
1
@ThomasKwa: obrigado
marinus
8

iKe , 43 bytes

,(0 0;"|"\"#0055A4|#FFF|#EF4135";52#,&3#26)

Este é um exemplo de um programa iKe de "tupla bruta" - é apenas uma descrição de uma origem ( 0 0), uma paleta ( 3 7#"#0055A4#FFFFFF#EF4135") e um bitmap (+52#'&3#26 ). Você precisa agrupar uma descrição como essa em uma função ou usar referências às visualizações, se desejar animar.

A paleta é uma maneira muito simples de criar uma série de cores CSS, equivalentes hexadecimais da especificação.

  3 7#"#0055A4#FFFFFF#EF4135"
("#0055A4"
 "#FFFFFF"
 "#EF4135")

Se os requisitos de cores fossem menos rigorosos, poderíamos usar uma das paletas internas do iKe e salvar um número considerável de caracteres:

windows@7 0 4

bandeira

Experimente no seu navegador .

Editar:

Salve um byte usando uma #FFFcor CSS curta para a faixa branca:

,(0 0;3 7#"#0055A4#FFFFFF#EF4135";+52#'&3#26)
,(0 0;"|"\"#0055A4|#FFF|#EF4135";+52#'&3#26)

Se alguém mais estiver interessado em jogar com o iKe, há um manual no repositório do github . aqui está outro problema que resolvi usando o iKe.

Edição 2:

Salvo um byte com uma maneira mais simples de construir o bitmap:

+52#'&3#26
52#,&3#26

Minha pergunta no OP não foi respondida, mas, para o registro, se forem permitidos requisitos de cores mais flexíveis, esse programa terá 30 bytes usando a paleta do Windows 3.1:

,(0 0;windows@7 0 4;52#,&3#26)

flag2

Desde que este problema foi postado, o iKe ganhou um recurso que centraliza automaticamente as texturas desenhadas sem uma posição, o que poderia salvar outros 3 bytes, mas isso seria contra as regras:

,(;windows@7 0 4;52#,&3#26)
JohnE
fonte
7

Oitava, 77 76 bytes

s(98,49)=0;imshow(cat(3,[s w=s+255 w-18],[s+35 w s+41],[s+149 w s+57])/255);

Exibe a imagem:

insira a descrição da imagem aqui

taça
fonte
7

Processando, 100 bytes

size(78,52);background(255);noStroke();fill(#0055A4);rect(0,0,26,52);fill(#EF4135);rect(52,0,26,52);

Exibe isso: França

(A solução ingênua é mais curta que a minha primeira.)

geokavel
fonte
Eu acho que comandos de desenho de processamento pode sair na frente de pixels empurrando aqui:size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
Johne
@ JohnE Lol, sim, eu só notei isso.
geokavel
@JohnE Até minha solução super básica é mais curta que a sua!
geokavel
haha- parece que ambos demasiado complicada lo
Johne
que tal abusar das instruções da balança? Isso funciona no sketchpad.cc, mas pode ser interrompido no Processamento 3:size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
JohnE 18/11/2015
7

Ruby, 56 47 45 bytes

ASCII

$><<"\e[34z\e[37z\e[31z\n".gsub(?z,?m*27)*52
Peter Lenkefi
fonte
Sim, isso é melhor que o meu. Exceto que a barra do meio precisa ser branca.
Iamnotmaynard 18/11
@iamnotmaynard Verdadeiro, fixo. Obrigado!
22815 Peter Pan
7

PHP, 70 bytes

0000000: 424d 0000 0000 0000 0000 2300 0000 0c00  BM........#.....
0000010: 0000 2001 c000 0100 0800 a455 00ff ffff  .. ........U....
0000020: 3541 ef3c 3f66 6f72 283b 3665 343e 2469  5A.<?for(;6e4>$i
0000030: 3b29 6563 686f 2063 6872 2824 692b 2b2f  ;)echo chr($i++/
0000040: 3936 2533 293b                           96%3);

O acima é um hexdump que pode ser revertido com xxd -r. Como alternativa, também pode ser gerado com o seguinte script PHP:

<?=hex2bin('424d0000000000000000230000000c0000002001c00001000800a45500ffffff3541ef3c3f666f72283b3665343e24693b296563686f206368722824692b2b2f39362533293b');

Eu assumo as configurações padrão, pois elas estão sem um .ini (você pode desativar o .ini local com a -nopção). Produz uma imagem .bmp (288 x 192), que deve ser canalizada para um arquivo. Isso é o maior possível, sem afetar a contagem de bytes.


Uso da amostra

$ xxd -r in.hex > france.php
$ php -n france.php > out.bmp
$ out.bmp

Resultado

Bandeira francesa

primo
fonte
Essas cores não parecem certas. Eles usam os valores RGB especificados na pergunta?
Maçaneta
@Doorknob Eles fazem. A partir do byte 26, é definida uma paleta de cores com três valores (bgr): A45500, FFFFFF, 3541EF.
Primo19:
6

ShaderToy (GLSL), 147 bytes

void mainImage(out vec4 o,vec2 i){float x=i.x/iResolution.x*3.0;vec3 w=vec3(255,255,255);o=vec4((x<1.0?vec3(0,85,164):x<2.0?w:vec3(239,65,53))/w,1);}

Veja aqui

Não é particularmente emocionante. Tenho certeza de que existem maneiras de jogar mais; Vou dar um tempo quando chegar em casa.

Robert Fraser
fonte
3
O link é redirecionado para shadertoy.com/error : /
Quentin