var QUESTION_ID = 85141; // Obtain this from the url
// It will be like https://XYZ.stackexchange.com/questions/QUESTION_ID/... on any question page
var ANSWER_FILTER = "!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";
var COMMENT_FILTER = "!)Q2B_A2kjfAiU78X(md6BoYk";
var OVERRIDE_USER = 41859; // This should be the user ID of the challenge author.
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,]*[^\s,]),.*?(-?\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,});});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;if (! /<a/.test(lang)) lang = '<i>' + lang + '</i>';lang = jQuery(lang).text().toLowerCase();languages[lang] = languages[lang] || {lang: a.language, user: a.user, size: a.size, link: a.link, uniq: lang};});var langs = [];for (var lang in languages)if (languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function (a, b) {if (a.uniq > b.uniq) return 1;if (a.uniq < b.uniq) 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);}}
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;}
<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/Sites/codegolf/all.css?v=617d0685f6f3"><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><div id="language-list"><h2>Winners 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><table style="display: none"><tbody id="answer-template"><tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody></table><table style="display: none"><tbody id="language-template"><tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td><a href="{{LINK}}">{{SIZE}}</a></td></tr></tbody></table>
#0048e0
Respostas:
Python 3,
190172171169167160159147143 bytesUsando o PIL versão 1.1.7, que possui um método de deslocamento obsoleto, mas não removido.
Cria uma imagem de 25 * 18 pixels preenchida com vermelho e desenha um retângulo de 23 * 16 pixels preenchido com azul com contorno branco de um pixel. Em seguida, compensa a imagem (9,9), que envolve as bordas, redimensiona para 100 * 72 e a mostra em uma janela.
Sinalizar antes da compensação:
(redimensionado para 100 * 72)
Resultado:
Animado:
Edit1: Golpeou 18 bytes removendo o corte criando inicialmente uma imagem 25 * 18.
Edit2: Golf 1 byte usando em
#fff
vez dewhite
.Edit3: Golfed 2 bytes por aliasing importações.
Edit4: Golfou 2 bytes removendo o segundo argumento do método de deslocamento.
Edit5: Golfou 7 bytes mostrando a imagem em vez de salvar. (precisa do imagemagick instalado no Unix)
Edit6: Golf 1 byte reescrevendo importações.
Edit7: Golfou 12 bytes reescrevendo as importações novamente. (obrigado por @Dennis)
Edit8: Adicionado animação.
Edit9: Animação atualizada, pois estava faltando o último quadro.
Edit10: Golfed 4 bytes graças a Albert Renshaw!
fonte
from PIL.ImageDraw import*
,I
se tornaImage
eD.Draw
se tornaDraw
, economizando 11 bytes.código de máquina em modo real x86 para DOS COM,
69656362 bytesO código deve ser executado como um executável COM do DOS.
Agradecimentos especiais
Código da máquina (em bytes hexadecimais)
Fonte de montagem
A fonte é para NASM.
fonte
_loop: jcxz _loop
. Você também pode cortar 2 bytes do final do bloco de dados se alterar a ordem de carregamento decx
edi
mov bx, 320
e movi o 320 paraadd di, 320
(anteriormenteadd di, bx
).jcxz _cycle
logo apósxchg ax,cx
para que ele não iria carregar bytes além do fim dos dados. E há alguns comentários enganosos na fonte:;dx = row
.dx
não é usado em nenhum lugar do código.C,
194191183 Bytes-3 adicionando um
@
no#define A
-8 adicionando
[
sobre#define C
Uso
Resultado
válido com base neste comentário do OP
Saída de tamanho duplo, 204 bytes
fonte
Excel VBA,
254228153 bytesNão foi possível encontrar uma maneira de definir o tamanho da coluna / linha para pixels (tornando-os quadrados), devido à maneira como o Excel lida com isso, para torná-los agradáveis e quadrados primeiro.
Editar 1: RGB substituído com valores retornados para cores, -26 bytes
Edit 2: Tentei adicionar o máximo de sugestões possível, -75 bytes. Não pude usar
&48e0
como cor e não sei por que. Obrigado a todosCenário:
fonte
0.2cm
. Isso será mantido assim que você voltar, e não será necessário tentar calcular as proporções bizarras do Excel :-) A propósito, se você quiser mais truques interessantes do Excel, consulte o vídeo "You suck at Excel" de Joel Spolsky.MATL ,
5756524948 bytesIsso produz a seguinte figura (testada com o compilador em execução no Matlab e no Octave).
EDIT: Você pode experimentar experimentalmente o MATL Online! (pode ser necessário recarregar a página se ela não funcionar inicialmente).
Como funciona
fonte
CSS,
285284264 bytesGuardou 1 byte graças a @insertusernamehere.
Economizou 20 bytes graças a @ user2428118, removendo todos os
px
s. Observe que isso requer que a página seja renderizada no modo quirks, para que não funcione nos snippets de pilha.Eu poderia copiar a abordagem Python de agrupar uma imagem em um deslocamento, mas não seria interessante.
Ungolfed:
Isso usa os pseudoelementos (elementos que não são escritos em HTML)
::before
e::after
para criar as linhas no sinalizador. O motivo pelo qual ele funciona sem HTML é que, no HTML5, os elementos<html>
e<body>
são opcionais; portanto, os navegadores os criam automaticamente se não estiverem presentes.Mais divertido:
Mostrar snippet de código
fonte
white
por#fff
.px
qualquer lugar.<!doctype html>
!Bash + Imagemagick 7,
94908685 bytesmagick -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:
Economizou 8 bytes, graças a @manatwork, e 1 byte, graças a @ GlennRanders-Pehrson
fonte
x:
vez do nome do arquivo de saída,convert
exibirá o resultado em uma janela, o que também é aceitável. E é apenas o suficiente para escapar da afiada, não há necessidade de citar:\#d72828
.bash
lado você pode economizar mais 4 caracteres:convert -size 84x56 xc:#0048e0 ${s=-splice 8x8}+28+28 -background \#d72828 $s+32+32 x:
.${s=-splice 8x8}+56
?+56
é tratado como+56+0
, não+28+28
.ZX Spectrum BASIC,
21014192 bytesTamanho determinado como o tamanho do programa BASIC em fita via
SAVE
. Muito do crédito do golfe para alguns membros do grupo ZX Spectrum no Facebook , em particular @impomatic e Johan Koelman.fonte
PAPER
eBRIGHT
traz tantas lembranças boas :-)FOR
,NOT
etc para ocupar apenas 1 ou talvez 2 bytes cadaFOR
é precisamente um byte. No entanto, os números são "anti-tokenizados", pois são armazenados como texto e forma binária e ocupam 5 bytes a mais do que você esperaria, portanto, emNOT PI
vez de zero e similares.Conjunto ZX Spectrum Z80, 65 bytes
fonte
Minecraft 1.10.2, 734 caracteres
Pode ter 734 caracteres, mas é a única submissão feita até agora de lã real!
Vá para -5x -5z, cole em um bloco de comando Impulse, defina-o como "Sempre ativo" e pressione Concluído.
A extensão da bandeira varia de 0, 0 a 100, 72; e fica 3 quarteirões acima do bloco de comando, conforme colocado. Ele lança uma bastante grande sombra , e monstros desovar sob ele. Se isso é exato para o país da Islândia, no entanto, é uma incógnita.
Aviso justo - matará todos os
MinecartCommandBlock
s no mundo, com o objetivo de salvar quatro caracteres. Não execute isso em um mundo ao qual você esteja excessivamente apegado.Usado combinador de comando do MrGarretto e ajustados a saída um pouco (808 -> 734)
fonte
Logotipo,
216188 bytesUsando a implementação do Calormen.com . Para você, purista, a implementação usa alguns antialiasing que cobrem um pouco as bordas. Eu desperdicei 3 bytes escondendo a tartaruga, então isso deve compensar isso.
Isso pode ser bastante reduzido se a implementação do seu logotipo permitir definir o tamanho da janela. Então você poderia
wrap
e fazer a tartaruga passar para fazer a cruz em quatro tacadas, e pular a necessidade de apará-la com uma borda.fonte
Java 8,
449447 bytes:Uma resposta muito tardia, e também a mais longa aqui, aparentemente. Usa a
java.awt.Graphics
classe para criar e abrir uma janela com a bandeira, criada por 5 retângulos totais, consistindo em 1 para os blocos azuis, 2 para as listras brancas e 2 para as listras vermelhas. Usa 7 pixels: 1 unidade de proporção. Em outras palavras, para cada unidade, 7 pixels são usados. Aqui está uma imagem da saída em um Macintosh com OS X 10.11:Agora, para encontrar uma maneira de jogar isso um pouco mais ...
fonte
paint
vez depaintComponent
. Considere usar uma classe anônima para o JPanel. Considere apenas usar um BufferedImage e gerar um arquivo.Blue
um retângulo enorme para o fundo. Acabei de me misturar entre esta e outra versão que criei em Python. Independentemente disso, obrigado pelas outras dicas! :)JPanel
, apenas substitua aJFrame
. Se você fizer isso e simplesmente substituirpaint
, não precisará do Swing, apenas do AWT; portanto, altereJFrame
paraFrame
e remova a importação. Não liguesuper.paint
. Reorganize o método principal; mover osetSize
para opaint
método da nossaFrame
, remover a variávelJ
, e anexar.setVisible(true)
ao final da classe anónimo. Finalmente, mude.setVisible(true)
para sershow()
, sim, é um método obsoleto, mas é mais curto. Use uminterface
para remover opublic
do método principal.import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,119);G.setColor(new Color(0,72,224));G.fillRect(0,0,175,126);G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
setBackground(color)
(também o tamanho ainda estava errado). Agora, às 317:import java.awt.*;interface A{static void main(String[]a){new Frame(){public void paint(Graphics G){setSize(175,126);setBackground(new Color(0,72,224));G.setColor(Color.WHITE);G.fillRect(49,0,28,126);G.fillRect(0,49,175,28);G.setColor(new Color(215,40,40));G.fillRect(56,0,14,126);G.fillRect(0,56,175,14);}}.show();}}
R,
197195187 bytesRecuado, com novas linhas e explicações:
Editar : ao
frame()
contrário, ao contrário deplot()
ouplot.new()
não adiciona uma borda à plotagem, o significadobty="n"
era desnecessário aqui.fonte
Atari executável de 8 bits, 123 bytes
Outra entrada "just for fun", este programa deve ser executada em um computador ou emulador de 8 bits da Atari. Por exemplo, para carregar o programa no Atari800, basta executar:
Código da máquina (em bytes hexadecimais)
Código fonte do assembler (pode ser compilado com o MADS ):
Como funciona:
O programa usa uma lista de exibição personalizada baseada no modo ANTIC 8 (40 pixels por linha, 2 bpp). Linhas repetidas são carregadas a partir do mesmo local de memória. Após configurar o display, o programa entra em um loop infinito.
Captura de tela:
fonte
FFmpeg,
339184 bytesVou tentar jogar isso para baixo .. ainda mais.
fonte
Python,
119118114112 bytesNada de especial, direto:
Saída como PPM binário, uso
print
e as aspas\0
pode ser usado em vez de\x00
Se alguém souber usar diretamente o caractere ASCII não imprimível, informe-o.
fonte
b,w,r="\0Hà"*28,"ÿ"*12,"×(("*8
usar o Python 3, mas não funciona.JavaScript, 267 bytes
fonte
Java, 335 bytes
A função é
E grava a imagem desejada como
f.png
, com um tamanho de 100x72(Observe que este não é um concorrente direto da resposta de R. Kap , porque grava um arquivo e não exibe a imagem na tela)
Aqui está a versão não destruída que pode ser compilada e executada:
Uma observação lateral, sobre as questões relacionadas: Talvez alguém deva criar um desafio para pintar as bandeiras dos
ao mesmo tempo:
fonte
SVG + Javascript,
190165164 bytesNenhum especialista por lá,
repetir um caminho apenas para alterar a cor e a largura da linha parece bobojavascript ftw!Mais legível:
fonte
path d="m0,0h100v72H0"
vez do retângulo para salvar dois bytes. Da mesma forma, useM0 36H100M36 0V72
para os dados do outro caminho, que salva outros cinco bytes. E você pode descartar ostyle
atributo em favor da declaração de ambosstroke-width
estroke
como atributos para salvar outros cinco bytes.Processando , 136 bytes
Ungolfed
Resultado:
fonte
fill
e emrect
vez desize
ebackground
. 134 bytes:noStroke();fill(#0048e0);rect(0,0,100,72);fill(255);rect(0,28,100,16);rect(28,0,16,72);fill(#d72828);rect(0,32,100,8);rect(32,0,8,72);
fill(-1)
é um byte menor do quefill(255)
Mathematica
174157 bytesSem builtins:
157 bytes
ou alternativamente
232 bytes
fonte
u=Unitize;c=ConstantArray
etc ^ _ ^CountryData["Iceland", "Flag"]
JavaScript (ES6), 231
240Código dentro do snippet abaixo. Execute-o para testar.
fonte
Conjunto ZX Spectrum Z80, 51 bytes
https://github.com/ralphbecket/Z80/blob/master/IcelandFlag/IcelandFlag.asm
fonte
J,
868483 bytesA abordagem é a mesma de @ Gábor Fekete's com Python.
O argumento esquerdo
colors
paraviewmat
é uma matriz de valores RGB, no nosso caso:E o argumento certo é uma matriz de índices de
colors
.(_9 _9 |. matrix)
instrui a mudarmatrix
9 itens em cada dimensão.Construção assustadora
(border ([,~[,.~[,[,.]) matrix)
envolve omatrix
númeroborder
.E
(14 21 $ 1)
faz 14 × 21 matriz de uns.A saída é exibida em uma janela redimensionável separada, bastante grande por padrão.
obrigado
miles - economizou 2 bytes ao reordenar as cores, usou o recurso
,
que duplica os números (255) para o acordo de forma.fonte
14 21
(18 25 - 4 4
). corrigindo ... obrigado!(255,0 72 224,:215 40 40)viewmat _9 _9|.2(b=.[,~[,.~[,[,.])0 b 14 21$1
TI-BASIC (não concorrente), 323 bytes
O código foi escrito para a TI-84, 83 e variantes. Espero que não seja um problema que as dimensões variem por dispositivo e que o código não seja colorido.
Configuração:
Desenhando:
Golfe:
Sim, a falta de
)
é intencional.Tamanho:
Line(
e todos os comandos como esse ocupam 1 byte, cada número recebe um byte. Isso é 323 bytes.Isso foi absolutamente entediante. Espero que isso aconteça em um emulador (eu tenho que inserir tudo manualmente), mas literalmente são apenas linhas no formato da bandeira.
fonte
Line(
é 0x9C. Você pode ver uma tabela de tokens de um byte aqui: tibasicdev.wikidot.com/one-byte-tokens<
e>
) em vez de linhas para obter sombreamento em escala de cinza?C #,
384346317292291289 bytesSolução simples com Windows Forms e GDI
Uso
Inicie um novo projeto de console e coloque o código acima no método principal, adicione System.Drawing-Namespace.
Como funciona
O código cria uma nova imagem e desenha algumas linhas nela. Ele salva a imagem em disco. Alguns dos pontos finais das linhas estão fora da área visível.
fonte
b = new
=>b=new
,using ()
=>using()
, não use espaços após;
s. Se você quiser, pode ler nossas Dicas para jogar golfe em C # para encontrar alguns conselhos.Process.Start(f);
? Pelo que entendi, isso é semelhante acmd
start
. Como você pode optar por salvar ou exibir a imagem e já a salvou, essa etapa parece inútil. Nesse caso, talvez você também possa evitar declarar a variável f.using
s, bem como para uma declaração de método ou clichê do programa. Isso tudo faz parte do necessário (a tarefa oferece a opção de uma função ou um programa, mas não a escolha de apenas um monte de instruções).Python IDLE,
191172156 bytesIDLE é o IDE padrão do Python. A menos que tenha um tema personalizado,
STDOUT
seja azul,STDERR
vermelho e o fundo seja branco. Então, o seguinte código:Produz esta saída:
Como caracteres impressos e não quadrados, isso está um pouco desligado, mas se considerarmos 1 unidade com 2 caracteres e 1 caractere de altura, as proporções são exatas.
Isso pode ser jogado ao meio pela metade da dimensão da largura e usando um caractere ASCII para blocos como
'#'
, mas não tem exatamente o mesmo efeito.Explicação
O código em si parece bastante desleixado no momento e pode ser definitivamente jogado, mas a idéia básica é:
0
represente espaço em branco,1
represente um bloco azul e2
represente um bloco vermelho.STDERR
/ deSTDOUT
acordo. Imprima uma nova linha após cada linha.fonte
Tartaruga Python, 176 bytes
Outra implementação do Python Turtle, mas desta vez com base no carimbo em vez de no desenho :
Usar o carimbo e não torná-lo facilmente escalável, economiza cerca de 60 bytes de código.
A parte divertida é que você pode substituir a
"square"
opção de"turtle"
polígono pela opção de polígono nashape()
chamada e obter um logotipo ecogroovy:fonte
Perl, 134 bytes
Nota:
\x1b
é realmente o caractere de escape ASCII e conta como 1 byteUso
Salvar como
iceland-flag.pl
e executar por:Usa seqüências de escape ANSI e assume um terminal Linux para exibir o sinalizador. Parece um pouco estranho usando as medidas fornecidas.
Perl, 141 bytes
Esta versão parece um pouco mais próxima das dimensões genuínas ...
fonte
SpecaBAS - 150 bytes
Lê a cor da tinta, x, y, largura e altura e desenha um retângulo com essas coordenadas / dimensões.
fonte
:
? Ah, e tem 151 bytes.