A chamada cósmica é uma mensagem enviada ao espaço em 1999 e 2003. É composta por 23 imagens bitmap monocromáticas de 127 * 127px, conforme detalhado aqui .
Sua missão é escrever um programa que exiba toda a mensagem 127 * 2921px, como um texto (feito de zeros, uns e quebras de linha) ou como uma imagem (desenhada na tela ou salva no disco). Haverá duas categorias de vencedores: uma para saída de texto e outra para saída de imagem.
Todos os truques são permitidos, exceto brechas comuns.
É permitido imprimir as 23 páginas separadamente.
É permitido escrever até 23 programas (como um para cada página) e somar seu tamanho para determinar sua pontuação.
É permitido usar até 23 arquivos binários junto com o (s) seu (s) programa (s). O peso deles é contado na sua pontuação.
O código mais curto (em bytes) vence.
Em 1 bit por pixel, a imagem contém 127 * 127 * 23/8 = 46370 bytes + 7 bits de dados. (aviso: não é permitido gerar um zero extra se você armazenar valores de pixel em 46371 bytes)
Nova linha / espaço à direita é permitida para a saída de texto.
A saída visual não pode conter nenhum pixel preto além dos pixels pretos da chamada cósmica. Ele pode ser desenhado em uma coluna (ordenada corretamente) ou dividido em 23 imagens, ou animado (como um gif), também ordenado corretamente.
Anexo: a saída de texto e a saída da imagem para reproduzir:
0
, o programa Snails vazio é impresso1
e o programa GolfScript vazio imprime uma nova linha . Alguém pode encaminhar uma resposta, 0-byte, 373.888-programa :)Respostas:
GIF, 27386 bytes
Aqui estão as páginas da transmissão original divididas em quadros GIF individuais, que acabaram não sendo tão pequenos quanto 1 PNG de todos eles :(
fonte
HTML, 16012b
Eu comprimi a imagem no PNG8, abri-a em um editor de texto, anexei
<svg onload="document.body.innerHTML='<img src=#>'">
no final, e voilà:
Demonstração: http://xem.github.io/miniCosmicCall/
NB: anexar
<img src=#>
também funciona, mas deixa muito lixo visível, então prefiro não.PS: por diversão, também coloquei a mensagem inteira em um único tweet executável (você pode copiá-lo e colá-lo em um console do navegador e a imagem aparece):
https://twitter.com/MaximeEuziere/status/742440423994580992
fonte
Python 2.7 -
109718077 bytesatualizar:
LZMA, na verdade, por algum motivo, não funciona para mim, então voltei para Deflate.
Encontrei uma ferramenta on - line para compactar ainda mais o PNG (eles dizem que usam compressão com perda, mas a matriz permanece inalterada)
__main__.py
roteiro um pouco mais ...A maioria dos algoritmos de compactação considera os dados como uma matriz unidimensional e, portanto, não pode capturar os caracteres bidimensionais repetidos exibidos na chamada cósmica (o IMO também dificulta a compreensão dos alienígenas: P).
Primeiro, selecionei cada caractere como uma matriz 7 * 5 e fiz uma lista de todos os caracteres únicos (101 se bem me lembro). Então eu iterava sobre a imagem e, quando um caractere era encontrado, a posição e o índice desse caractere (na lista de caracteres) eram registrados.
Essas posições podem ser representadas com um único int, no entanto, com mais de 2 K caracteres encontrados, e as posições que variam de 0-370966 (formato divmod) requerem até 3 bytes cada. No entanto, coletei as posições dos caracteres em ordem, então converti a posição absoluta em posição de deslocamento, tornando a maioria dos números menor que 1 byte. Codifiquei esta lista no utf-8 para explicar os poucos números maiores que 1 byte
Após gravar e remover todos os caracteres correspondentes, salvei o png com a compactação máxima. Em seguida, empacotei o script de reconstrução python (reverter o mesmo processo), o png, o modelo do chatacter e a lista de posições dos caracteres em um arquivo zip para aproveitar o fato de que o python pode usar uma pasta ou arquivo zip como argumento e começará a execução em qualquer arquivo no nível superior nomeado
__main__.py
. Eu brinquei um pouco com 7z para obter a melhor compactação, que acabou sendo LZMA com um ditado de 1M e palavras de 32 bits.aqui está o script do decodificador (golfe, mas com comentários ainda)
link para fazer o download do arquivo zip ...fonte
Gzipbzip2
no shell,2091418965 bytesCrie o arquivo de dados de saída com a saída de texto fornecida na pergunta
bzip2
e renomeie o arquivo paras
. Isso permite:para fazer o trabalho. Portanto, ele adiciona até 18958 bytes de dados e um comando de 7 bytes.
fonte
Pitão, 46381 bytes
Por razões óbvias, não pode ser publicado aqui.
Amostra.
Colar pasta do hexdump do programa.
fonte
jc.BC""127"
).Bash + binário WebP, 11 + 15330 = 15341 bytes
Como as regras afirmam isso:
e
… Não pude resistir a postar algo estupidamente simples.
O programa está no bash e gera a imagem salvando-a no disco.
Ele usa 1 arquivo binário, que também é um arquivo de imagem (sim, WebP é um formato de imagem); portanto, o programa pode fazer apenas ... fazer uma cópia desse arquivo.
Então, o código (11 bytes):
Supondo que o binário complementar seja nomeado "b", o código grava o arquivo de imagem no disco com a extensão correta ("a.webp").
Vejo poucas razões para carregar o binário, porque ele é criado trivialmente executando
produz o arquivo com 15330 bytes. Se alguém quiser, posso carregá-lo em algum lugar.
NB:
-z
opção emcwebp
ativa o modo de compactação sem perdas.9
é a força de compressão (máx).fonte
Python 3, 64513 bytes
Use apenas ASCII!
http://pastebin.com/PMLb4Xti
Versão antiga, 64529 bytes: http://pastebin.com/nteYkUtM
fonte
import lzma,base64,os