Em 1º de novembro, a programação de quebra-cabeças e o Code Golf se formarão; portanto, nos próximos 11 meses, queremos salvar algumas lembranças de quando não estávamos classificados.
Escreva um programa que produz o favicon PPCG, visto abaixo.
- A imagem deve ter pelo menos 64 x 64 pixels.
- O azul deve ser da cor # 62B0DF. O fundo pode ser branco ou cinza claro.
- A imagem não precisa ser pixelizada como está aqui.
- Como alternativa, crie texto (com dimensões de pelo menos 64x64 caracteres não em branco) usando códigos de cores ANSI brilhantes padrão de ciano e branco.
- Imagens incorporadas e importação do logotipo PPCG não são permitidas.
Isso é código de golfe, então as regras padrão se aplicam. O menor código em bytes vence.
Respostas:
Bash (OSX),
33272318 bytesVocê ouviu o homem como quisermos.
Estou ciente de que este é um concurso de popularidade. Mas ei, quando você pode codificar golfe, por que não?Agora é um código de golfe. \ o / Isso era válido no momento da postagem.
Houve até uma exceção feita para mim em algum momento! Mas, como @AlexA. apontou ...
Eu concordo com isso e, como tal, não deseja que isso seja escolhido como resposta. Não significa que ainda não tentarei jogar mais. ;)
Agradecemos a @ ΚριτικσιΛίθος por remover 6 bytes com um URL curto e elegante!
Agradecemos ao @ ev3commander por remover OUTROS 5 bytes com um URL ainda mais sofisticado e mais curto!
Obrigado a @kennytm por apontar que posso reduzir o tamanho do protocolo e remover as aspas, poupando-me mais 4 bytes!
fonte
http://goo.gl/gviJDX
open http:goo.gl/gviJDX
http:yon.se/q
BitShift , 2795 bytes
Isso gera
Este é provavelmente o código mais curto com o qual você ainda pode reconhecer o logotipo ... Eu criei uma linguagem terrível :(
Experimente aqui
Nota
Isso foi enviado antes das regras serem alteradas. Pelas regras atuais, essa resposta é inválida. Vou deixar aqui para talvez inspirar as pessoas
fonte
Javascript
Nota: Essa resposta foi feita antes que as regras fossem alteradas significativamente, portanto, essa resposta não está competindo.
Isso é impresso no console do navegador, através de um processamento de strings louco e impressionante.
Eu fiz uma versão mais curta disso, mas não consigo encontrá-la em lugar nenhum.
Chrome / Firefox
Esta versão apenas dobra em cada pixel para parecer mais proporcional
Safári
O
long_string_here
é um ppm , escrevi esse script um tempo atrás para imprimir uma imagem arbitrária no console .Como é que isso funciona? Bem, o JavaScript tem um recurso no
console.log
qual você pode fornecer css para estilizar a mensagem.O caractere
█
e a cor unicode são a cor correta, recuperada do ppm.Para exibir qualquer outra imagem executada
convert my_img.png -resize 50x50 -trim -compress none -blur 1x2 -flatten -background white ppm:-
:, copie a saída para<long_string_here>
Código completo
Como isso é enorme, coloquei o código completo em pastebins para que você possa executá-los
Chrome / Firefox: pastebin
Safari: pastebin
Resultado
Resultado do Firefox
Resultado do Safari
fonte
Rubi com sapatos
Saída de amostra:
fonte
Javascript (ES2015), 199 bytes
(+72 bytes de CSS)
Meu código imprime o logotipo no
<body>
elemento de uma página através de algumas seqüências unicode. Sugestões para melhorar o código são bem-vindas (especialmente para a0
tarefa -pads)Javascript (novas linhas inseridas para facilitar a leitura)
CSS
Resultado
Ungolfed e Explained
Se considerarmos o ícone PCG 16x16 original originalmente publicado, poderíamos codificar as informações em um formato binário.
Por exemplo, a primeira linha seria codificada como para
1100 0000 0000 0011
onde[0, 1]
mapeia[blue, white]
. Todo número binário pode ser facilmente armazenado no formato decimal, assim1100 0000 0000 0011
é49155
. A matrizcontém todas as informações (em formato decimal) sobre cada cor de pixel. Cada elemento da matriz representa uma linha para desenhar. Observe que algumas linhas são
0
( linhas totalmente azuis) ou seu comprimento é menor que16
dígitos (uma linha começando com um pixel azul): então precisamos digitar corretamente esses números bináriosA
map
função adiciona 15 zeros à esquerda mais o número binário concatenado. Assim, o resultado é cortado em16
pixels à esquerda. Agora a matriz é realmenteDê uma olhada nos dígitos acima: quase podemos ver o logotipo do PCG. :)
Observe que, se armazenarmos essas informações na matriz, precisamos usar 16x18 bytes (288 bytes). Essa abordagem requer 135 bytes
O próximo passo é desenhar cada linha. A construção
loop sobre a matriz
values
(recurso ES6) e adicionamos ao corpoonde
[...l
] representa a cadeia binária como uma matriz. Por exemplo, a primeira linha seria lida comoentão, novamente, usamos
map()
para transformar cada valor:se o valor for
0
, torna-se umLEFT SEVEN EIGHTHS BLOCK (U+2589)
caso contrário, é um espaçoEM SPACE (U+2003)
. Em suma, esta tarefaconverte cada um
0
ou1
em um bloco quadrado ou em um espaço: então a matriz é unida e, junto com uma sequência de nova linha à direita, é anexada ao corpo.O CSS que usei corrige
line-height
eletter-spacing
(testei no Chrome, portanto, o resultado pode variar um pouco em outros navegadores)fonte
Brainfuck, 120148 bytes
Esta resposta agora não é competitiva. Isso foi antes das regras serem alteradas, e isso não tem absolutamente nenhuma esperança de ganhar como código-golfe.
Código Brainfuck para gerar o valor hexadecimal da imagem. Muito, muito, muito tempo.
Aqui está um link pastebin e as primeiras duas linhas. https://paste.ee/p/LtcCy
fonte
Snap , 16 blocos
Diga-me se isso é inválido.
fonte
Javascript ES6, 461 bytes
Eu preciso trabalhar mais na compressão.
fonte
Bubblegum , 175 bytes
Um dos raros momentos em que o Bubblegum é útil para produção gráfica !
Execute em um terminal que suporte códigos de escape ANSI.
Inverta o hexdump com
xxd -r
Aqui está uma captura de tela da saída:
Nota: Na minha máquina Windows com o terminal MinGW, o binário Windows Python não gera códigos ANSI corretamente, portanto, o que foi dito acima,
python <esolangs reference implementation>.py <infile> | cat
mas deve funcionar corretamente em máquinas Linux.fonte
Javascript (ES6), 192 bytes
Isso requer uma versão compactada de um caminho SVG D. Os espaços são removidos; portanto, todos os argumentos devem ter um único decimal; portanto, qualquer número é multiplicado por 20 antes de ser gravado no svg real.
Saída: Demonstração: https://jsfiddle.net/Luy6qj80/
fonte
LibreLogo ,
122116115 bytesCódigo:
Resultado:
Explicação:
Tentativas anteriores:
116 bytes:
122 bytes:
fonte
JavaScript, 680 bytes
Bem, eu já tinha terminado isso no concurso original, cujas regras foram alteradas drasticamente. Definitivamente, esse não é o código mais curto que você pode criar. Foi projetado para o concurso de popularidade e cria o pixel favicon original por pixel. Também tem mais alguns recursos. :)
Você pode chamar a função com até três parâmetros:
m
vai meta e muda a cor de acordo. E se você achar pequeno, useb
para aumentar o tamanho de 16x16px para 64x64px . Finalmentea
anima o logotipo, como se estivesse gravado em um quadro azul. O valor é a velocidade para cada etapa da animação.Ungolfed
Saída
Padrão
Animado
fonte
Python 3, 10.069 bytes
Grava o hexadecimal do logotipo original em um novo arquivo.
fonte
R, 189 bytes
Com recuos para maior clareza:
Estou roubando descaradamente o método de uma antiga resposta minha : pego a representação da base 2 de 16 números, transformando-a em uma matriz 16x16 de 1s e 0s e plotando-a como está.
fonte
Google Blockly , 140 blocos
Produz
Adicionará uma explicação, se solicitado. Experimente aqui
Sugestões para reduzir a enorme função à esquerda são bem-vindas!
fonte
Python 2, 211 bytes
fonte
05AB1E , 49 bytes
Experimente online!
fonte
Excel VBA,
252246245237 bytesEconomizou 6 bytes graças a Taylor Scott.
Economizou mais 8 bytes graças à inspiração de Taylor Scott
O código deve ser executado a partir da página de código de uma planilha e adicionará a forma a essa planilha. Não é nada chique, mas usa diretamente a chamada retangular arredondada na qual o ícone se baseia. (Para
AddShape
,106
corresponde amsoShapeRoundedRectangularCallout
.)A formatação não adiciona muito, mas facilita a leitura:
Há também uma solução de uma linha que deve ser executada na janela imediata com 1 byte de comprimento:
fonte
()
emp()
e convertendoWith ActiveSheet. ...
aWith[Sheet1]. ...
Sheet1
, no entanto. Suponho que possamos presumir que o usuário executa o código em um novo arquivo.Sheet1
objeto padrão provavelmente deve ser uma norma aceita, desde que você mencione que faz parte da condição de entrada / saída como parte da sua soluçãoSheet1
objeto - assim você pode soltar um byte, substituindoWith[Sheet1].
comWith Sheet1.
Sheet1
é apenas o nome de código padrão da primeira planilha. Essa é uma boa redução de 0,4% em bytes.MATLAB,
153 150140 bytesO código usa uma matriz de números de 16 bits (infelizmente não há como codificá-los que reduza a contagem de bytes, além da leitura de um arquivo binário preservado). Edição: Com um pouco de criatividade na forma como a matriz é feita, eu salvei 3 bytes, e com um pouco mais e uma variável extra, eu posso salvar outros 10 em cima disso.
Com essa matriz, ele é convertido em uma sequência binária em que um ascii '1' representa azul e um ascii '0' é branco. A matriz é 2D neste momento porque cada um dos 16 números se torna uma cadeia de 16 caracteres.
Subtraio 47 para converter isso em uma matriz de 1 e 2 (necessária para o próximo bit), em que cada elemento representa um pixel. Novamente, isso permanece como 2D e são nossos dados de imagem.
A imagem é então ampliada por um fator de 8 usando o vizinho mais próximo para produzir uma imagem que tenha pelo menos o tamanho mínimo necessário de 64x64px - na verdade, é 128x128 porque, de alguma forma, eu dividi 64 por 16 para obter 8> _ <(não pergunte!).
Finalmente, isso é exibido usando um mapa de cores em que qualquer 1 se torna branco e qualquer 2 se torna o tom de azul # 62B0DF necessário.
Esta é a saída:
fonte
Processando, 211 bytes
Armazenar os pixels dentro de números inteiros assinados (parece ser a maneira mais eficiente, talvez eu tente 2 ^ 64 números inteiros) e depois imprimi-los em um quadro.
fonte
Swift (Parque infantil), 599 bytes
Eu decidi tentar, já que desenhar Swift é bem direto, e geralmente não é jogado assim. Acabou perdendo bytes preciosos com o texto ... Maldito seja
NSDescriptiveVariableNames
!Veja como fica no playground:
Eu acho que poderia jogar mais com o apelido de coisas como
CGRectMake
, agrupando objetos na função a etc.fonte
PHP, 145 bytes, não competindo
Devo usar cores não em branco e cores, mas estou cansado demais.
Acho que adicionará mais ou menos 10 bytes à contagem, talvez mais.
fonte
Excel VBA, 178 bytes
Função de janela imediata VBE anônima que não recebe entrada e gera o PCG Favicon (exatamente como no prompt acima) para o intervalo
fonte
C (gcc) , 188 bytes
Experimente online!
Utiliza códigos de escape ANSI para imprimir 128 espaços coloridos horizontais e 64 verticais.
(Imagem redimensionada.)
fonte
C ++ com SFML , 607 bytes
Código que chama a função:
Requisitos:
Você precisa ter um arquivo ttf válido chamado
a.ttf
no diretório atual em que o executável está sendo executado, para que ele possa carregar as fontes para exibir o textoVocê precisa ter as DLLs SFML correspondentes no diretório atual em que o executável está sendo executado
Resultado:
Explicações:
fonte
tcl / tk, 113
Tcl / tk, 144
fonte