Acontece que existem alguns alienígenas distantes que sabem inglês (e coincidiram por padrão em arquiteturas de computadores de 8 bits) . No entanto, eles nunca ouviram falar de ASCII, nem mesmo de ordem alfabética.
Acredita-se que esses alienígenas estão coletando informações da Terra. No entanto, eles estão fazendo isso com equipamentos digitais que lêem informações sem sentido quando nenhuma transmissão está sendo enviada ... portanto, o sinal deve estar contido de maneira a se destacar do ruído circundante.
Um novo padrão foi criado, modelado após o uso do comprimento de sinal semiprime da mensagem de Arecibo:
Codificação Semiótica Universal para Intercâmbio de Informações (USCII)
(Veja: http://uscii.hostilefork.com )
No USCII, cada código é derivado de um bitmap que representa o caractere, que possui uma largura e uma altura principais. Por exemplo, essa representação 5x7 de uma letra A:
01110
10001
10001
10001
11111
10001
10001
Isso produz 35 bits. No entanto, para fazer com que as mensagens de um único caractere se destacem do ruído e pareçam coerentes, as seqüências de caracteres são incorporadas em um formato de contêiner que ajuda a reforçar os principais fatores. O contêiner foi escolhido para facilitar a manipulação das seqüências de caracteres em arquiteturas que operam em múltiplos de 8 bits.
Com seu contêiner, o "A" acima seria semelhante a:
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
0000000000000000000000000000000000000000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
0111010001100011000111111100011000100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111100000
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
1111111111111111111111111111111111111111
Os caracteres da mensagem são prefixados primeiro com cinco bitmaps 5x7 sólidos e sete bitmaps 5x7 sólidos adicionados ao final. (O "medidor" .) Em seguida, cada um deles tem cinco bits 0 pregados no final para fazer 40 bits iguais.
Finalmente, existem 7 execuções de 40 bits totalmente zero adicionadas ao início e 5 execuções de 40 bits totalmente adicionadas ao final. (O "silêncio" .)
Sua missão
Você deve escrever um codificador. Input é uma string ASCII convencional digitada no teclado. Os bitmaps que você usará são da fonte da CPU 5x7 PIC .
(Observação: é fácil extrair a fonte da página para todos os talentosos jogadores de código aqui, mas se você quiser esses bytes todos juntos, aqui estão eles .)
A saída deve ser uma sequência impressa em hexadecimal.
Exemplos
Entrada :
ABCDEFG
Saída :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074631FC620F463E8C7C074610845C0E4A318CB80FC21E843E0FC21E84200746178C5E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Entrada :
Dear aliens: Please get me off of this planet!!!
Saída :
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0E4A318CB80001D1FC1E0001C17C5E0002D9842000000000000001C17C5E061084211C00100421080001D1FC1E0002D98C620001F0707C003180630000000000000F463E8420061084211C0001D1FC1E0001C17C5E0001F0707C0001D1FC1E00000000000001F1787C0001D1FC1E0213E421440000000000000375AD620001D1FC1E00000000000001D18C5C01148E210801148E210800000000000001D18C5C01148E210800000000000213E4214408421E8C6200100421080001F0707C00000000000003D1F420061084211C0001C17C5E0002D98C620001D1FC1E0213E421440210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Esclarecimentos
- Não há necessidade de lidar com caracteres não imprimíveis para esta tarefa (embora seja bem-vindo o feedback sobre as idéias de como elas podem ser )
Condições vencedoras
0000000000000000000000000000000000000000000000000000000000000000000000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE074610845C0001D18C5C00842F8C5E0001D1FC1E00000000000746178C5E0001D18C5C061084211C01148E21080210840008021084000802108400080FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Respostas:
Python 2,
671669663 bytesPHP com zlib,
738716715 bytesPrimeiro, seu PHP precisa ser configurado com
--with-zlib
. E execute este script a partir da linha de comando, comophp 26972.php
. Este programa recebe informações do STDIN.(Se
short_open_tag=On
eu puder salvar mais 3 bytes.)Ungolfed
fonte
C
Na verdade, isso imprime hexadecimal legível por humanos (vs binário para facilitar a leitura). Tudo é representado em um longo comprimento não assinado e apenas 9 a 10 dígitos hexadecimais são usados devido (dependendo de você incluir o preenchimento 00000) o infeliz formato 6x5 (uma fonte 8x4 seria muito fácil)
bater
fonte
0x##number##ULL
(consulte a versão do bash para a alternativa char), mas o ideone.com achou que era uma chamada de função, então eu a anulei (gcc estava bom) ... Eu poderia remover o (vazio) do main também, mas algumas coisas parecem erradas.PHP, 874 bytes
Você precisará executar esse script a partir da linha de comando (
php uscii.php
), pois recebe a entrada do stdin.Ungolfed:
fonte
JavaScript ES6 (838 bytes)
Não esmagado :
fonte