Prefácio
Existem muitos desafios "empate x bandeira" e, ao buscá-lo, não há desafios para atrair o sindicato Jack! Eu sinto que isso seria uma bandeira mais difícil de desenhar, mas ainda deve ser possível.
Desafio
Desenhe o Union Jack. Ele pode ser enviado para um arquivo em qualquer formato de arquivo gráfico disponível gratuitamente ou desenhado na tela.
- Código Aplicam-se as regras de golfe, o código mais curto em bytes ganha.
- Aplicam-se brechas padrão.
- Não são permitidos recursos internos para desenho de bandeira.
As dimensões devem ser as seguintes. Tamanho mínimo 600x300 pixels (ou unidades, se o seu idioma suportar apenas gráficos escaláveis.) Erro máximo 1 pixel.
As cores serão vermelho, branco e azul, conforme definido pelo seu idioma ou sua documentação, ou # CC0000, #FFFFFF e # 003399 por página da Wikipedia.
code-golf
kolmogorov-complexity
graphical-output
Shaun Wild
fonte
fonte
Respostas:
BBC BASIC
Rev B, 234 bytes
Em vez de desenhar uma cruz branca e uma cruz vermelha, desenhamos 100 cruzamentos progressivamente mais estreitos, alternando de fundo branco para primeiro plano vermelho com uma coordenada de 60.
Faça o download do intérprete gratuitamente em http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
Totalmente jogado, 249 bytes
Códigos VDU de byte único, por exemplo,
25,0
combinados em little endian de byte duplo, por exemplo,25;
e uso máximo de constantes para valores comuns. Palavras-chave compactadas para a forma abreviada, por exemplo,FOR
=>F.
(o intérprete se expande automaticamente.)Semigolfe
Códigos VDU brutos. No BBC BASIC, os caracteres podem ser enviados para o controlador VDU como
VDU65
(imprime um A.) Existem certos caracteres especiais específicos da BBC para gráficos. Estes devem ser seguidos por vários outros bytes para especificar coordenadas, etc. Aqui usamosPLOT
=>VDU25
,GCOL
=>VDU18
,ORIGIN
=>VDU29
.Primeiro, desenhamos metade das partes diagonais: 2 triângulos azuis e 2 paralelogramos vermelhos. Em seguida, alteramos a escala de -1 para +1 e desenhamos a outra metade. Finalmente, desenhamos as partes horizontais e verticais na parte superior: 2 retângulos brancos para formar uma cruz branca, depois 2 retângulos vermelhos. A imagem após a primeira iteração do loop é mostrada abaixo, juntamente com a imagem final.
Código ungolfed
O BBC basic lembra os dois últimos locais do cursor gráfico. PLOT81 desenha um triângulo entre as novas coordenadas especificadas e esses dois últimos locais. PLOT113 e PLOT117 desenham um paralelogramo da mesma maneira: três cantos do paralelogramo devem ser dados na ordem em que são encontrados percorrendo o perímetro. Os últimos três bits do código PLOT definem se as coordenadas fornecidas são absolutas ou relativas e se a cor de primeiro plano ou de fundo é usada. Os bits mais significativos definem que tipo de forma é desenhada (ponto, linha, triângulo, paralelogramo, retângulo etc.)
fonte
SVG, 298 bytes
A pontuação exclui 3 novas linhas desnecessárias adicionadas para maior clareza.
Inspirado na resposta excluída da Siren (e, em particular, na economia de bytes por omitir
</svg>
no final do documento), criei um SVG que é dimensionalmente correto e um pouco mais curto.Consiste em um caminho azul e um caminho vermelho (preenchido, sem traços) para as partes diagonais e um caminho vermelho (preenchido, com borda branca de 20 unidades) para a cruz final. Devido à espessura da borda branca, as dimensões especificadas da cruz devem exceder em 10 as dimensões necessárias.
Isso funciona bem para mim no Microsoft IE e Edge. Às vezes, exibe um aviso de "conteúdo extra no final do documento" no Chrome.
Veja como aparece sem e com a cruz final. São necessários 8 pontos para descrever o caminho azul, 10 pontos para descrever o caminho vermelho e 12 pontos para a cruz final. As interseções de linhas retas nos dois primeiros caminhos não precisam ser fornecidas.
fonte
PS If anyone wants to argue that SVG isn't a programming language (and I'd be very inclined to agree), consider this a PHP program in the style of many PHP submissions to this site which just echo literal text.
Logotipo,
260239 bytes(Intérprete XLogo)
Eu usei o interpretador XLogo baseado em Java, pois era uma das poucas implementações de Logo que encontrei que suporta a configuração do tamanho da janela de saída.
O editor XLogo normalmente salva arquivos como procedimentos que devem ser chamados. Este programa foi escrito para ser colado na janela imediata. Isso economiza cerca de 9 bytes.
Como as cores exatas não eram necessárias, reconfigurei isso para usar números de cores internos que salvaram vários bytes. Se você quiser ver uma versão com cores RGB exatas, verifique as revisões. Também substituí um cálculo trigonométrico por um equivalente mais curto.
Ungolfed com comentários
O único truque real aqui é mudar as cores para a segunda passagem de um loop e aproveitar o
wrap
recurso que nos permite desenhar as listras horizontais com muito pouco esforço. Como a altura e a largura da bandeira são fatores de 600, podemos avançar 600 para listras verticais ou horizontais e voltar ao centro novamente. Isso evita casos separados para cada um, mesmo que desenhe a barra vertical duas vezes mais. Estamos economizando espaço para código, não para ciclos de relógio.fonte
Processando, 312 bytes
Este é o tipo de quebra-cabeça em que o processamento é bastante eficiente.
Resulta em:
fonte
Python 2, 265 bytes
Saída como PPM binário, uso:
L
representa uma fatia vertical das partes diagonais eF
usa a (tipo de) simetria para salvar o código e calcular os índices da parte superior e inferior.fonte
Postscript (166 bytes)
Versão não tokenizada:
Resultado:
fonte