La distribution Debian Linux (et les distributions basées sur Debian, comme Ubuntu, Kali et autres) utilise un gestionnaire de paquets appelé APT. Pour installer le programme, foo
vous devez taper dans un terminal
sudo apt-get install foo
Un petit œuf de Pâques d'APT est le suivant
apt-get moo
Qui, après avoir tapé, produira la sortie suivante
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~
..."Have you mooed today?"...
Vous devez écrire un programme qui produit cette sortie EXACT en aussi peu d'octets que possible. (y compris les espaces de fin et une nouvelle ligne)
Voici la même sortie avec \n
ajouté pour représenter les caractères de nouvelle ligne et a *
pour représenter les espaces de fin
(__)*\n
(oo)*\n
/------\/*\n
/ | ||***\n
* /\---/\*\n
~~ ~~***\n
..."Have you mooed today?"...\n
Comme demandé dans les commentaires, voici le md5sum du mooing.
35aa920972944a9cc26899ba50024115 -
apt-get moo|md5sum
?apt-get moo
PRéponses:
Bash, 95 octets
Ce qui précède est un hexdump réversible. Pour créer le fichier, exécutez
collez le hexdump et appuyez sur Enter, puis sur Ctrl+ D.
Pour exécuter le fichier créé, exécutez
Tout autre nom de fichier fera l'affaire.
J'ai choisi zopfli comme compresseur car il est compatible avec le programme Coreutils zcat et permet une meilleure compression que gzip, bzip2 et xz.
zcat<<''
lira les lignes suivantes (jusqu'à EOF) et les alimentera en entréezcat
.Notez que zcat affichera un avertissement (puisque j'ai supprimé la somme de contrôle du fichier compressé), tout comme bash (puisque le HEREDOC n'est pas terminé par une ligne vide). Ces avertissements sont imprimés dans STDERR (supprimé par
2>&-
), ce qui est autorisé par défaut par consensus sur Meta .la source
CJam, 96
Cela utilise beaucoup d'octets désagréables, alors voici un vidage hexadécimal:
Vous pouvez exécuter le fichier avec l'interpréteur java; il peut être nécessaire d'utiliser le codage ISO-8859-1, tel que:
java -Dfile.encoding=ISO-8859-1 …
Essayez-le en ligne
Version ASCII équivalente (et beaucoup plus longue):
Essayez-le en ligne
Explication:
Il y a 7 caractères qui ont des répétitions:
_o-|~.
. Chacun d'eux peut être encodé sous la forme d'un nombre n compris entre 0 et 6. Pour chaque séquence répétée, j'encode à la fois l'index du caractère (n) et le nombre de répétitions (k) dans un seul octet:,2 * (k * 7 + n)
écrit comme un caractère avec celui code. Et j'encode des caractères simples comme2 * c + 1
, où c est le code ASCII. Tout se passe dans la chaîne initiale, et le reste du programme la décode:Ancienne version (109):
Essayez-le en ligne
la source
Pyth, 100
Essayez-le en ligne: Démonstration
r"string"9
run-length-decodes la chaîne.Éditer:
Voici une solution de 97 caractères: Démonstration . Très probablement, cela représente également 97 octets (en iso-8859-1). Mais trop fatigué pour écrire les octets et faire une explication. Demain soir, je suppose.
la source
GolfScript (107 octets)
Il s'agit d'un encodage très simple: les sauts de ligne sont remplacés par
^
et les espaces sont encodés en longueur. Le résultat contient des caractères non imprimables, je le présente donc ici enxxd
sortie:Démo en ligne
Notez qu'il s'agit d'un caractère plus court que le code CJam correspondant. Le compromis utilise
'
comme délimiteur pour la chaîne principale (en enregistrant deux\
s pour échapper à"
), en enregistrant uni
pour convertir les valeurs de caractères en entiers dans la boucle de décodage et en obtenant une nouvelle ligne de fin libre; vs avoir des littéraux de caractères pour remplacer les littéraux de chaîne à un seul caractère.Puisque cette question a été brièvement marquée printable-ascii , j'ai également fait une version avec seulement (108) caractères imprimables:
Au lieu de coder les longueurs des espaces sous forme de caractères
^A
à^R
(et codant pour^J
que^
des collisions d'éviter), il laisse intacte et newlines code pour les longueurs de passe commeI
àY
.Soit dit en passant, mon programme GolfScript Kolmogorov à usage général produit un programme de 120 octets.
la source
Lua,
186178 octets8 octets économisés grâce à une suggestion de @DJ McMayhem
Non golfé:
la source
a=repeat(" ",17)
> <> , 217 octets
Malheureusement, c'est une réponse assez ennuyeuse. Il commence par lire une chaîne qui dessine la vache entière, avec des nouvelles lignes faites en ajoutant une valeur de 10 à la pile (a). Il entre ensuite dans une boucle qui tire simplement la vache.
J'ai initialement fait une boucle pour ajouter un ensemble d'espaces, mais c'était en fait plus cher en octets que de simplement mettre des espaces.
EDIT: J'ai oublié que le poisson est écrit "> <>"
la source
PowerShell, 144 octets
Le code ci-dessus fonctionnera correctement dans les environnements qui impriment des sauts de ligne de style Unix (
\n
). Il produit la sortie correcte avec, par exemple, Pash sur Linux.Mathématiquement, pour PowerShell, avoir 8 espaces pour la
$a
variable est optimal, car moins signifie trop d'espaces supplémentaires entre la variable et la vache pour que cela en$b
vaille la peine, et plus signifie que nous ne pouvons pas doubler sur les deux premières lignes pour le tête.la source
\r
est un retour chariot,\n
est un saut de ligne. Ensemble,\r\n
forme une nouvelle ligne sur Windows. 2. PowerShell n'est pas uniquement Windows. J'ai testé votre code avec Pash (une implémentation open-source de Windows PowerShell pour Mono) et la sortie a le hachage MD5 approprié. 3. En raison de ce qui précède, j'ai pris la liberté de décompresser votre message. Si vous n'êtes pas d'accord avec cela, veuillez le re-wiki.\r\n
et\n
, mais comme je l'ai dit, je ne pouvais pas obtenir le MD5 correct sous Windows sans quelque chose de flagrant. Merci pour cette modification, cependant. J'ai d'abord entendu parler de Pash aussi, alors merci aussi. Je me demande à quel point ce serait compliqué de construire sous Cygwin ... ;-)Molécule , 145 octets
Ma première fois en essayant de compresser l'art ASCII: P
la source