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:
- 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 N
está 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
<style>body { text-align: left !important} #answer-list { padding: 10px; width: 290px; float: left; } #language-list { padding: 10px; width: 290px; float: left; } table thead { font-weight: bold; } table td { padding: 5px; }</style><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table><script>var QUESTION_ID = 64140; var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe"; var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk"; var OVERRIDE_USER = 42156; var answers = [], answers_hash, answer_ids, answer_page = 1, more_answers = true, comment_page; function answersUrl(index) { return "https://api.stackexchange.com/2.2/questions/" + QUESTION_ID + "/answers?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + ANSWER_FILTER; } function commentUrl(index, answers) { return "https://api.stackexchange.com/2.2/answers/" + answers.join(';') + "/comments?page=" + index + "&pagesize=100&order=desc&sort=creation&site=codegolf&filter=" + COMMENT_FILTER; } function getAnswers() { jQuery.ajax({ url: answersUrl(answer_page++), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { answers.push.apply(answers, data.items); answers_hash = []; answer_ids = []; data.items.forEach(function(a) { a.comments = []; var id = +a.share_link.match(/\d+/); answer_ids.push(id); answers_hash[id] = a; }); if (!data.has_more) more_answers = false; comment_page = 1; getComments(); } }); } function getComments() { jQuery.ajax({ url: commentUrl(comment_page++, answer_ids), method: "get", dataType: "jsonp", crossDomain: true, success: function (data) { data.items.forEach(function(c) { if (c.owner.user_id === OVERRIDE_USER) answers_hash[c.post_id].comments.push(c); }); if (data.has_more) getComments(); else if (more_answers) getAnswers(); else process(); } }); } getAnswers(); var SCORE_REG = /<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/; var OVERRIDE_REG = /^Override\s*header:\s*/i; function getAuthorName(a) { return a.owner.display_name; } function process() { var valid = []; answers.forEach(function(a) { var body = a.body; a.comments.forEach(function(c) { if(OVERRIDE_REG.test(c.body)) body = '<h1>' + c.body.replace(OVERRIDE_REG, '') + '</h1>'; }); var match = body.match(SCORE_REG); if (match) valid.push({ user: getAuthorName(a), size: +match[2], language: match[1], link: a.share_link, }); else console.log(body); }); valid.sort(function (a, b) { var aB = a.size, bB = b.size; return aB - bB }); var languages = {}; var place = 1; var lastSize = null; var lastPlace = 1; valid.forEach(function (a) { if (a.size != lastSize) lastPlace = place; lastSize = a.size; ++place; var answer = jQuery("#answer-template").html(); answer = answer.replace("{{PLACE}}", lastPlace + ".") .replace("{{NAME}}", a.user) .replace("{{LANGUAGE}}", a.language) .replace("{{SIZE}}", a.size) .replace("{{LINK}}", a.link); answer = jQuery(answer); jQuery("#answers").append(answer); var lang = a.language; lang = jQuery('<a>'+lang+'</a>').text(); languages[lang] = languages[lang] || {lang: a.language, lang_raw: lang.toLowerCase(), user: a.user, size: a.size, link: a.link}; }); var langs = []; for (var lang in languages) if (languages.hasOwnProperty(lang)) langs.push(languages[lang]); langs.sort(function (a, b) { if (a.lang_raw > b.lang_raw) return 1; if (a.lang_raw < b.lang_raw) return -1; return 0; }); for (var i = 0; i < langs.length; ++i) { var language = jQuery("#language-template").html(); var lang = langs[i]; language = language.replace("{{LANGUAGE}}", lang.lang) .replace("{{NAME}}", lang.user) .replace("{{SIZE}}", lang.size) .replace("{{LINK}}", lang.link); language = jQuery(language); jQuery("#languages").append(language); } }</script>
(0, 35, 149)
,(255, 255, 255)
,(237, 41, 57)
.echo 🇫🇷
não é grande o suficienteRespostas:
CJam,
2322 bytesO 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.
Como funciona
Nos dois programas, usamos a seqüência de escape ANSI
\x9bXYm
- ondeX
é3
a cor do primeiro plano e a cor do plano4
de fundo eY
especifica a cor a ser usada - para alternar entre as três cores do sinalizador.O outro programa é semelhante.
Resultado
fonte
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.
A saída se parece com:
Alternativamente:
Bash com utilitários OSX, 56
A
dc
expressão:3^26-1
e imprime em ternário22222222222222222222222222
3^26
. Saída em nível ternário1111111111111111111111111100000000000000000000000000
tr
em seguida, traduz os 210 caracteres para 🔵⚪️🔴.yes
gera esta linha indefinidamente.sed 26q
interrompe a saída em 26 linhas.fonte
Desmos,
3012 bytesExperimente online.
Não tenho certeza se isso é válido. Entre em contato se houver algum problema.
fonte
Python 2, 47 bytes
Contém imprimíveis - aqui está um hexdump (reversível com
xxd -r
):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:
fonte
in [0]
->in[0]
\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.print("\x1b[3%s;1mF"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
.█
personagem parece um pouco melhor, por exemploprint("\x1b[3%s;1m█"*78+"\n")%((4,)*26+(7,)*26+(1,)*26)*30
HTML / SVG, 76 bytes
87 88 121 122 149Guardado 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
Usando muitos abusos de sintaxe em HTML, isso pode ser bem curto.
Captura de tela da saída:
Ou tente (verifique se o seu navegador suporta SVG):
fonte
<svg><rect width=78 height=52 fill="#ef4135"/><rect width=52 height=52 fill="#fff"/><rect width=26 height=52 fill=#0055a4>
fill=#0055a4 />
também funciona (não"
), economizando um byte inteiro.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.
Mostrar snippet de código
Brainfuck, 258 bytes
É basicamente a mesma coisa, mas apenas no velho e simples Brainfuck.
Ou, se você preferir este em oOo CODE (984 bytes):
fonte
Bash + ImageMagick,
607773 bytes(ugh, +17 caracteres devido a requisitos de cores que eu não havia notado antes ...)
Saídas para o arquivo
a
, no formato netpbm:Também pode gerar em PNG, se você alterar o nome do arquivo para
a.png
(+4 caracteres).Resultado:
fonte
convert -sample 78x52\! - a<<<"P3 3 1 255 0 85 164 255 255 255 239 65 53"
-scale
vez de-sample
; Além disso, a barra invertida não parece ser necessárioLaTeX, 139 bytes
Obrigado a @WChargin por salvar 21 bytes.
Isso imprime a seguinte imagem de 12 cm * 8 cm em uma página A4:
Observe que "Página 1" também é impressa na parte inferior da página
fonte
asymptote
solução ...s.\newcommand\z[1].\def\z#1
para 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\input color
\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}
Pitão, 27 bytes
Existem alguns caracteres não imprimíveis, então aqui está um hexdump:
Isso cria um arquivo
o.png
com exatamente 78 pixels de largura e 52 pixels de altura:Explicação:
fonte
save it as an image o.png
, mas não há ".png" em nenhum lugar?python3 pyth.py code.pyth
, poderá encontrá-lo no mesmo diretório.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).
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):
Verifique sua validade em: https://html5.validator.nu/
Tela de impressão do resultado:
fonte
>
?style="..."
isso que você procura no segundo exemplo.<html>
, não<head>
, não<body>
, não</tr>
, não</td>
e não fechamento de todas as tags ausentes.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.TI-Basic,
524442 bytes(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:
Se o sombreamento for inválido para o desafio, informe-me!
Sem as duas primeiras linhas, fica assim:
fonte
ffmpeg,
110113116117119108100 bytesExibir, usando ffplay, 100 bytes:
Salvo no arquivo, usando ffmpeg, 108 bytes:
A versão atual do comando será interrompida com um erro, mas exibirá uma única imagem ".png", igual à mostrada abaixo.
fonte
white
vez de#ffffff
: os valores devem ser os mesmos.CSS, 127
128144bytesNão há necessidade de outra tag, funciona apenas com o
body
elementoEditar% s
display:block;
e alguns;
.}
.fonte
JavaScript, 140
143147151153bytesEditar% s
2*i*26
pori*52
. Graças a Cᴏɴᴏʀ O'Bʀɪᴇɴ .for
loop. Graças a ETHproductions .with
declaração Graças ao Dendrobium .fillStyle=["#0055a4","#ef4135"][i]
pori?"#ef4135":"#0055a4"
.fonte
2*i*26
pode se tornar52*i
, não?with
instruçã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]
x=(d=document).body.appendChild(d.createElement
canvas).getContext
2d #;for(i=3;--i;x.fillRect(i*52,0,26,52))x.fillStyle=[,"#ef4135","#0055a4"][i]
R, 59 bytes
A saída é exibida:
Pode-se também fazer 49 bytes com
se você não se importa com os eixos e bordas:
fonte
Blitz 2D / 3D ,
154108 bytesIsso produz exatamente a mesma coisa que o exemplo dado na pergunta (exceto o anti-aliasing nas bordas onde as cores se encontram).
A saída é exibida e fica assim:
fonte
Mathematica,
6394103 bytesQuando 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!
(Obrigado a Martin Büttner por reduzir 5 bytes, mas adicionar 16)
Se parece com isso:
Se você adicionar
,Axes->None
, fica assim:Se você não se importa com a borda, pode usar o seguinte: (95 bytes)
Se parece com isso:
Sem eixos:
fonte
Axes->None
. Você também deve ser específicoAspectRatio->2/3
. RenomeaçãoRGBColor
é simples:r=RGBColor;...r["..."]
. Você também pode usar a notação de prefixo para salvar mais dois bytesr@"#0055a4"
.BarChart[{1, 1}, ChartStyle -> {RGBColor["#0055a4"], Red}, BarSpacing -> 1]
. O vermelho parece perto o suficiente.Javascript (ES6) 117 bytes
Desenha no console
fonte
'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çãoi=c=s=[]
em vez dei=0,c=[],s=''
depois de actualizar as cores que podem ajudar um pouco ...red
eblue
). É o segundo ponto, contando de baixo para cima. Isso está dentro das especificações.pb , 68 bytes
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:
fonte
C, 115 bytes
Contém imprimíveis:
Para que este programa funcione, algumas coisas precisam ser verdadeiras:
ESC [48;2;<r>;<g>;<b>m
sequência de escape "truecolor".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:
fonte
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 "MATLAB,
827978 bytesA saída se parece com:
fonte
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.Visual Basic + Excel,
618137 bytesApenas 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
fonte
Range("A1:C13").Interior.ColorIndex = 5
e oRange("G1:I13").Interior.ColorIndex = 3
que parece ser suficiente.ActiveWorkbook.Colors
para especificar os valores RGB exatos. O Excel 2007 tem opções adicionais de cores, mas não as conheço de imediato.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
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
CSS, 102
110111114bytesfonte
* *{background:linear-gradient(90deg,#0055a4,#0055a4 33%,#fff 33%,#fff 66%,#ef4135 66%) 0 0/78px 52px no-repeat}
- um byte mais curto}
.66%
com0
.Dyalog APL (
4744)Resultado:
fonte
2*8 11 10
?iKe , 43 bytes
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.
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:
Experimente no seu navegador .
Editar:
Salve um byte usando uma
#FFF
cor CSS curta para a faixa branca: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:
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:
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:
fonte
Oitava,
7776 bytesExibe a imagem:
fonte
Processando, 100 bytes
Exibe isso:
(A solução ingênua é mais curta que a minha primeira.)
fonte
size(78,52);noStroke();int[]p={0xFF0055A4,255,0xFFEF4135};for(int c:p){translate(26,0);fill(c);rect(0,0,-26,52);}
size(78,52);scale(26,52);fill(#EF4135);stroke(#0055A4);rect(0,-1,0,2);stroke(255);rect(1,-1,3,3);
Ruby,
564745 bytesASCII
fonte
PHP, 70 bytes
O acima é um hexdump que pode ser revertido com
xxd -r
. Como alternativa, também pode ser gerado com o seguinte script PHP:Eu assumo as configurações padrão, pois elas estão sem um .ini (você pode desativar o .ini local com a
-n
opçã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
Resultado
fonte
ShaderToy (GLSL), 147 bytes
Veja aqui
Não é particularmente emocionante. Tenho certeza de que existem maneiras de jogar mais; Vou dar um tempo quando chegar em casa.
fonte