O Winter Bash 2014 está no auge e todos nós amamos os chapéus? Especialmente os chapéus secretos!
Então, por que não desenhar um dos chapéus secretos?
O desafio
Sua tarefa é desenhar o Chapéu de Boas Vindas em proporção, no idioma de sua escolha e com uma construção exata, como aparece nesta página .
Como sempre , você pode renderizar o chapéu em um arquivo ou tela usando gráficos vetoriais ou raster. Se sua saída for rasterizada, sua imagem deverá ter dimensões de 400x400 pixels ou mais.
Além disso, o conteúdo real do chapéu (a área do retângulo delimitador das partes coloridas da imagem) deve cobrir mais de 40% da imagem de saída.
Especificações
A imagem abaixo lista várias dimensões do chapéu. Todas as dimensões estão na unidade, por exemplo, pixels. Todo o raio da borda na imagem deve ser desenhado com um raio de 13
unidades.
Cores :
- Vermelho na estrela e anel circular - rgb (255, 28, 34)
- Amarelo no círculo - rgb (255, 202, 87)
- Cinza mais claro - rgb (88, 88, 92)
- Cinza mais escuro - rgb (31, 26, 26)
- Cinza médio - rgb (64, 64, 64)
Pontuação
Isso é código de golfe, então a resposta mais curta (em bytes) vence.
Como uma palavra de aviso, o uso da compactação existente (como incorporar um GIF compactado) cai em várias brechas padrão .
fonte
Respostas:
GolfScript (
376 373 364350 ou645 610607 bytes)Seguindo a especificação original , que pedia a construção exata do SVG, um SVG com golfe é gerado em 607 bytes.
O código contém muitos caracteres não imprimíveis, então aqui está a saída xxd:
É uma variante do mecanismo construtivo de gramática com o qual os seguidores da complexidade kolmogorov estarão familiarizados:
Acabou sendo um pouco melhor aplicar em maiúsculas o SVG golfado, compactá-lo e depois em minúsculas após a descompressão.
Quando executado, produz um SVG de 840 bytes:
Ajustei a posição em alguns milipixels e corrigi uma pequena assimetria na parte cinza mais escura.
Mas as alterações na pergunta e discussão no chat indicam que é realmente permitido criar uma boa aproximação ao SVG, o que pode ser feito em 364 bytes. A cadeia de descompressão é semelhante, portanto a saída xxd do arquivo GolfScript é:
e gera um arquivo SVG de 547 bytes:
Agradecemos a Paul LeBeau por apontar uma economia de 7 bytes no SVG, que foi traduzida para 9 bytes no GolfScript, e por sua resposta que demonstrou que a estrela pode ser desenhada com apenas os 5 pontos. (Usando a resposta dele, eu poderia chegar a 329 bytes, ou 323 com alguns ajustes na resposta dele, mas não me sinto confortável com isso).
Exportado a 50% com o Inkscape:
Para ver a estrutura, aqui está o SVG renderizado com
fill="none"
tudo e algumas cores de preenchimento alteradas para cores de traçado:fonte
SVG (
462 460 454 429 384365 bytes)Eu sei que não é uma linguagem de programação, mas achei que isso seria pelo menos útil para qualquer um que gerasse saída SVG ...
Isso é baseado no SVG de Peter Taylor.
Usando as cordas originais e otimizando um pouco os caminhos, consegui diminuir o SVG. Eu também consertei as cores.
Atualização: falha corrigida apontada por Peter Taylor e posição das rects e salvou mais 2 bytes.
Atualização 2: Incorporada outra correção e sugestões de Peter (-6 bytes)
Atualização 3: observei que as instruções agora especificam que todos os raios são 13, aproveitando isso e otimizando os caminhos um pouco mais, salvei outros 25 bytes. Violino mais legível aqui.
Atualização 4: Como eu já estou assumindo que o SVG está incorporado no HTML (os SVGs independentes precisam da declaração do namespace), posso realmente apertar mais isso. (a) Não preciso dos atributos width e height porque o tamanho do SVG é menor que o tamanho padrão que os navegadores atribuem a objetos cujo tamanho é indeteminado (300 x 150); e (b) o analisador HTML perdoa os atributos que não tem aspas, então algumas delas podem ser removidas (idéia do Squeamish Ossifrage ). Salva outros 45 bytes.
Atualização 5: Usando os truques do hsl para remover aspas das cores e soltar as tags finais finais. Nós salvamos outros 19 bytes. Este último me pareceu um pouco mais barato, mas como ele funciona em todos os navegadores, mudei de idéia. :) Obrigado hsl!
fonte
fill="none"
ao grupo ou ajustando a curva.<rect>
deve ter altura74
e não78
. E I tornam uma poupança 5-char para substituí-la com um<path>
com ambosfill
estroke
,stroke-width="18"
, em seguida, transferidos para dentro do<g>
e o comumstroke-width="18"
movido a partir de dois caminhos para a<g>
. Ter outro em<path>
vez de um<rect>
também deve ajudar a compressibilidade um pouquinho.Mathematica
787 612 600 514506 bytesQuantidade surpreendente de código necessária. Certamente será derrotado.
Forma não destruída
Golfe
fonte
HTML + ES6, 533
Snippet (modificado):
fonte
serif
, o que não é ainda uma fonte específica ...HTML + CSS,
676636625bytesIsso pode ser muito jogado, se livrando delesAgora, use transformações para centralizar tudo em vez deleft:XXXpx
e usando algum tipo de centralização.left:XXXpx
.Nota: Isso funciona melhor / conforme o esperado no Firefox no Windows
O resultado final se parece com:
fonte
ActionScript 3.0, 491 bytes
Forma de golfe:
Saída: http://megaswf.com/file/2708781.swf
fonte
var ww=new WarmWelcome(); stage.addChild(ww);
e desenhe-o no Flash com ligação AS3:)
MATLAB R2013a,
551541Este é o meu primeiro Code Golf. Portanto, se algo não estiver de acordo com as regras, por favor , ensine / me diga :)
Forma de golfe:
Saída (rasterizada):
fonte
LaTeX / TikZ (613 bytes)
O resultado
pdflatex
é um arquivo PDF com o chapéu como gráficos vetoriais e uma caixa delimitadora.Ungolfed
Os valores são obtidos do arquivo SVG, eles eram mais precisos (mas também contêm erros de arredondamento). A parte mais complicada foram as linhas escuras e inclinadas ao fundo. Eles são desenhados como linhas muito grossas, com tampas de linhas arredondadas e uniões.
fonte
Perl + TK: 555
As novas linhas são apenas para facilitar a leitura, embora eu tenha me perdido de tantas variáveis.
Aqui está uma foto:
Eu não acho que é perto de pixel perfeito, mas é perto o suficiente :)
fonte