A missão é simples. Basta imprimir o número 2015 como código QR e gravá-lo no arquivo nomeado newyear.png
no formato PNG. O código deve ser válido a qualquer dia, portanto, talvez você não deva usar o ano atual.
O código QR como texto fica assim:
# # # # # # # # # # # # # # # # # #
# # # # #
# # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # #
# # # #
# # # # # # # # # # # # # # # # #
# # #
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # #
# # # # # # # # # # # # # #
# # # # # # #
# # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # # #
# # # # # # # # # #
# # # # # # # # # # # #
O resultado escrito newyear.png
deve conter esse código QR com bordas brancas de 5 pixels e pontos com tamanho de um pixel. Não deve conter nada além de código QR.
code-golf
graphical-output
kolmogorov-complexity
new-years
Hannes Karppila
fonte
fonte
Respostas:
Arquivo bruto, 184 bytes = arquivo de 173 bytes + nome de arquivo de 11 bytes
Espero que isso não rompa nenhuma brecha padrão. Mas o resultado "tem uma alta complexidade kolmogorov e a maneira mais curta de produzi-lo (provavelmente) seria imprimi-lo literalmente ...".
Base 64 do arquivo:
Em vez de jogar golfe em um programa, joguei a imagem PNG resultante. O código QR é um formato muito flexível, existem muitos parâmetros que podem ser alterados: a codificação da entrada, o nível de correção de erros e a imagem de máscara. Todos eles irão gerar símbolos diferentes e, assim, compactados em arquivos de tamanhos diferentes.
Então, eu escrevi um programa para gerar todas essas combinações (arquivos 6720 resultantes) e, em seguida, use o PNGOUT para escolher o que compactou no menor arquivo. Acontece que é um arquivo que:
Isso é chamado
test-3-1-H-Diamonds.bmp
se você usou o programa abaixo. Esta imagem tem 175 bytes de comprimento após a execução do PNGOUT. Com o nível "alto" de correção de erros no código QR "versão 1", podemos modificar até 8 pixels na parte dos dados sem danificá-los. Com um pouco de tentativa e erro manual, posso reduzi-lo ainda mais para 173 bytes apresentados acima. Provavelmente pode ser menor, mas esgotar todas as combinações requer 208 C 8 ~ 7,5 × 10 13 verificações que eu não vou fazer;)O programa Rust (0.13.0-nightly (5ba610265)) que gera todas as combinações:
fonte
Mathematica,
217177176166 bytesAqui está um começo:
Menos golfe:
O código QR é codificado em um número base 36. É claro que eu poderia codificá-lo em ASCII estendido (base 256), mas isso só reduziria a string em 30 bytes, e não tenho certeza de que posso fazer a conversão ao custo de muito menos do que isso.
Claro, este é o Mathematica, então há também os 63 bytes
mas acho que é uma brecha padrão. ;) (Isso produz um código QR diferente do código do desafio, então acho que o código QR não é único?)
fonte
36^^fl6ibg25c8z00uef53p4657dgd6hjzg41e5joead1qgz0l2xchqgso5r1a51v5no4zkw9v22okklg0cymmy2
lugar.ToCharacterCode
eFromDigits
, em seguida,.)Matlab 545 Bytes
Codificado no trabalho manual meticuloso e sem nenhuma compactação / conversa sofisticada de cordas incorporadas . Eu sei que ainda não é tão bom quanto as outras respostas, mas ainda estou feliz =)
Mais ilegível (a versão real 545):
Criamos uma matriz zero 31 x 31, mas a acessamos como vetor para definir todas as células com os índices de
b
para1
. Os truques que usei foram a notação de números inteiros consecutivos (como[1,2,3,4] = 1:4
) e a remoção de um com 100 dígitos, adicionando um escalar a todos os valores do vetor.Vamos ver se alguém consegue superar isso =)
fonte
unreadable
corretamente ... definitivamente lireadable
. vi isso logo após sugeri-lo e esperava que quem lesse a minha edição o rejeitasse, mas eles aparentemente não entenderam. desculpe a má editar ...Bash,
206252257bytesO uso do
convert
comando incluídoimagemagick
economiza mais 46 bytes.Converte a
pbm
imagem codificada em base64 em umapng
imagem comimagemagick
'sconvert
.Salva 5 bytes usando<<<
/ here-string .Versão antiga (257 bytes):
echo iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeAQMAAAAB/jzhAAAABlBMVEX///8AAABVwtN+AAAAX0lEQVQI12PACdi/7G9gYJFUaGBgvaIHJG6CiMvrgGJyCxoY2H/tBxJ3rgIVekxnYGCU9WtgYDokBWSFezcwMPA/ARrwZwMDA4vwUwYG1nuTYMRdP6CYjDRQ9q8fbrsBLRkaYOOP83wAAAAASUVORK5CYII=|base64 -d > newyear.png
Apenas uma cadeia de comandos shell simples que grava o
png
arquivo codificado em base64 no stdin ebase64
o decodifica por causa do-d
sinalizador e grava seu stdout em newyear.png.fonte
base64 -d>newyear.png<<<[the long string]
, mas eu não estou em um rn máquina linux e eu não sei qual o espaço em branco é obrigatóriabase64 -d>newyear.png<<<[base64 string]
Ubuntu 14.04.Python 2 + PIL,
216215Basicamente, uma porta da solução Mathematica.
fonte
Ferramentas comuns do Shell + Imagemagick, 215
Um pouco complicado
, mas mais curto que a outra resposta do shell.P1\n21 21
o formato PBM P1fonte