A distribuição Debian Linux (e distribuições baseadas no Debian, como Ubuntu, Kali e outros) usa um gerenciador de pacotes chamado APT. Para instalar o programa foo
, digite um terminal
sudo apt-get install foo
Um pequeno Ovo de Páscoa da APT é o seguinte
apt-get moo
Que após a digitação produzirá a seguinte saída
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Você deve escrever um programa que produz essa saída EXATA no menor número de bytes possível. (incluindo espaços à direita e uma nova linha)
Aqui está a mesma saída com \n
added para representar caracteres de nova linha e a *
para representar espaços à direita
(__)*\n
(oo)*\n
/------\/*\n
/ | ||***\n
* /\---/\*\n
~~ ~~***\n
..."Have you mooed today?"...\n
Conforme solicitado nos comentários, aqui está o md5sum do mooing.
35aa920972944a9cc26899ba50024115 -
apt-get moo|md5sum
?apt-get moo
PRespostas:
Bash, 95 bytes
O acima é um hexdump reversível. Para criar o arquivo, execute
cole o hexdump e pressione Enter, depois Ctrl+ D.
Para executar o arquivo criado, execute
Qualquer outro nome de arquivo serve.
Eu escolhi o zopfli como o compressor, pois é compatível com o programa Coreutils zcat e obtém uma melhor compactação que o gzip, bzip2 e xz.
zcat<<''
irá ler as seguintes linhas (até EOF) e alimentá-las como entrada parazcat
.Observe que o zcat imprimirá um aviso (desde que retirei a soma de verificação do arquivo compactado), assim como o bash (já que o HEREDOC não é finalizado por uma linha vazia). Esses avisos são impressos em STDERR (suprimido por
2>&-
), o que é permitido por padrão por consenso no Meta .fonte
CJam, 96
Isso usa muitos bytes desagradáveis, então aqui está um dump hexadecimal:
Você pode executar o arquivo com o interpretador java; pode ser necessário usar a codificação ISO-8859-1, como:
java -Dfile.encoding=ISO-8859-1 …
Experimente online
Versão ASCII equivalente (e muito mais longa):
Experimente online
Explicação:
Há 7 caracteres que possuem repetições:
_o-|~.
. Cada um deles pode ser codificado como um número n de 0 a 6. Para cada sequência repetida, estou codificando o índice do caractere (n) e o número de repetições (k) em um único byte:,2 * (k * 7 + n)
escrito como um caractere com esse código. E eu estou codificando qualquer caractere único como2 * c + 1
, onde c é o código ASCII. Tudo vai na string inicial, e o resto do programa está decodificando:Versão antiga (109):
Experimente online
fonte
Pyth, 100
Experimente online: Demonstração
r"string"9
run-length-decodifica a string.editar:
Aqui está uma solução de 97 caracteres: Demonstração . Muito provavelmente isso também é de 97 bytes (no iso-8859-1). Mas cansado demais para escrever os bytes e fazer uma explicação. Amanhã à noite, eu acho.
fonte
GolfScript (107 bytes)
Essa é uma codificação muito simples: as novas linhas são substituídas por
^
e os espaços são codificados no comprimento da execução. O resultado contém alguns caracteres não imprimíveis, então apresento aqui comoxxd
saída:Demonstração online
Observe que esse é um caractere menor que o código CJam correspondente. O tradeoff está usando
'
como delimitador para a cadeia principal (salvando dois\
s para escapar do"
), salvando umi
para converter valores de caracteres em números inteiros no loop de decodificação e obtendo uma nova linha à direita; vs ter literais de caracteres para substituir os literais de cadeia de caracteres únicos.Como esta pergunta foi brevemente identificada como printci-ascii , também fiz uma versão com apenas (108) caracteres imprimíveis:
Em vez de codificar as run-comprimentos dos espaços de caracteres
^A
para^R
(e que codifica^J
como^
a colisões evitar), deixa novas linhas intocada e codifica os run-comprimentos comoI
paraY
.Aliás, meu programa GolfScript Kolmogorov de uso geral produz um programa de 120 bytes.
fonte
Lua,
186178 bytes8 bytes salvos graças a uma sugestão de @DJ McMayhem
Ungolfed:
fonte
a=repeat(" ",17)
> <> , 217 bytes
Infelizmente, essa é uma resposta bastante chata. Começa lendo uma string que desenha toda a vaca, com novas linhas criadas adicionando um valor de 10 à pilha (a). Em seguida, entra em um loop que apenas desenha a vaca.
Originalmente, fiz um loop para adicionar um conjunto de espaços, mas na verdade era mais caro em bytes do que apenas colocar espaços.
EDIT: Esqueceu que o peixe é escrito como "> <>"
fonte
PowerShell, 144 bytes
O código acima funcionará corretamente em ambientes que imprimem novas linhas no estilo Unix (
\n
). Produz a saída correta com, por exemplo, Pash no Linux.Matematicamente, para o PowerShell, ter 8 espaços para a
$a
variável é o ideal, pois menos significa muitos espaços adicionais entre a variável e a vaca para$b
valer a pena, e mais significa que não podemos dobrar as duas primeiras linhas para o valor cabeça.fonte
\r
é um retorno de carro,\n
é um avanço de linha. Juntos,\r\n
formam uma nova linha no Windows. 2. O PowerShell não é apenas o Windows. Testei seu código com o Pash (uma implementação de código aberto do Windows PowerShell for Mono) e a saída possui o hash MD5 adequado. 3. Por causa do exposto, tomei a liberdade de desmarcar sua publicação. Se você não concorda com isso, por favor, volte a wiki.\r\n
e\n
, mas como eu disse, não consegui corrigir o MD5 no Windows sem algo flagrante. Obrigado por essa edição, no entanto. Primeiro, eu também ouvi falar de Pash, então obrigado por isso também. Eu me pergunto como complicado que seria a construção sob Cygwin ... ;-)Molécula , 145 bytes
Minha primeira vez tentando comprimir arte ASCII: P
fonte