Votre tâche consiste à imprimer l'art ASCII suivant:
_ _ _______ _
| | | | (_______) _ | |
| |__ | | ____ ____ ____ _ _ _____ ____ ___| |_ ____ ____| |
| __)| |/ _ | _ \| _ \| | | | | ___) / _ |/___) _)/ _ )/ ___)_|
| | | ( ( | | | | | | | | |_| | | |____( ( | |___ | |_( (/ /| | _
|_| |_|\_||_| ||_/| ||_/ \__ | |_______)_||_(___/ \___)____)_| |_|
|_| |_| (____/
N'oubliez pas qu'il s'agit de code-golf , donc le code avec le plus petit nombre d'octets gagne. Bonne chance.
code-golf
string
kolmogorov-complexity
Oliver Ni
la source
la source
|()/\_
ce qui conduit à des formes de compression complètement différentes. Nous avons déjà eu des défis similaires en ASCII, mais j'aimerais que cette question soit lancée pour voir si quelqu'un profite de la géométrie. D'un autre côté, ce n'est pas extrêmement remarquable, et vous avez raison, nous n'avons pas besoin d'une étiquette de Pâques.Réponses:
Bubblegum, 130 octets
Essayez-le en ligne.
Compressé à l'aide
zopfli --deflate --i10000
.la source
JavaScript (ES6),
377373360359345 octetsMerci à @Neil pour une économie d'un octet et à @ edc65 pour 14 autres!
Je pensais que je lui donnerais un coup. Compresse les motifs récurrents courants dans le texte.
_____
(5 traits de soulignement) est stocké sous la forme_5
5
| | | | |
(5 du|
motif) est stocké sous~5
la source
=>
._
s._
avec un_
suivi de combien il y en a~1
ou_2
semble à peine en vaut la peine. (Pourquoi ne pas utiliser|2
par exemple?)BinaryFuck ,
565378 octetsCela stocke essentiellement les caractères utilisés dans le tableau, puis navigue dans le tableau, les imprimant en conséquence. Actuellement assez long, le raccourcira.
Voici le code non golfé:
EDIT: en réorganisant l'ordre des caractères dans les cellules, j'ai économisé 186 octets!
la source
1
. Veuillez fournir un lien vers un interpréteur et le vidage hexadécimal du code source afin que vos résultats puissent être reproduits.JavaScript (ES6), 380 octets
Pour être complet, c'est mon effort pour utiliser une méthode de compression différente, bien qu'il s'avère que ce n'est pas aussi efficace que l'encodage de la longueur d'exécution. Chaque chiffre spécifie que les N derniers caractères déjà générés sont répétés. Les chiffres suivants peuvent répéter des caractères déjà répétés, par exemple
| 23
se transforme en| | |
. Je souhaite seulement pouvoir compresser une série de trois caractères.la source
C,
517427407 octetsUngolfed Try Online
la source
JavaScript, 297 octets
Encodage simple des dix sous-chaînes les plus courantes (pour autant que je sache). Ils ne sont pas en règle en raison de chevauchements; mon encodeur (ci-dessous) doit voir par exemple
'_ '
et' _'
avant' '
.Cela prend une chaîne et un tableau de sous-chaînes à coder et renvoie a) la chaîne codée b) la liste des prochaines économies potentielles c) le nombre d'octets enregistrés jusqu'à présent.
la source
𝔼𝕊𝕄𝕚𝕟, 72 caractères / 209 octets
Try it here (Firefox only).
Eh bien, au moins le nombre de caractères est excellent, mais nous ne pouvons pas utiliser la page de codes personnalisée. C'est juste une décompression LZString. Je travaille également sur une autre solution - plus à ce sujet plus tard.
la source
Perl 5, 286 octets
perl -M5.01 happy.pl
, oùhappy.pl
est:Merci à Dom Hastings (dans un commentaire ci-dessous) pour une idée qui m'a sauvé deux octets et a conduit à une autre idée à moi qui en a sauvé quatre de plus.
la source
L
comme raccourci pour|_
;-)Python 2,
343328316 octetsCette solution n'utilise aucune fonction de décompression ou autre importation.
Version lisible:
Utilise une version d'encodage de longueur d'exécution avec 3 bits pour un symbole de l'ensemble "\ n _ | () /". Le reste de l'octet est la longueur, mais j'ai limité la longueur à 10 et l'ai manipulée pour que les résultats soient des caractères imprimables qui sont valides dans une chaîne python sans aucun échappement.
Le remplacement de la chaîne correspondant à "|" par un seul caractère dans les données codées économise quelques octets supplémentaires.
J'ai supprimé les espaces de fin sur les lignes 1 et 5, ce qui peut plier un peu les règles, mais semble pratique.
Ce programme génère les données compressées:
la source
Python 2, 159 octets
Cette source contient des caractères non imprimables, elle est donc présentée comme un hexdump qui peut être décodé avec
xxd -r
.la source
Raquette,
367364 octetsNon golfé
Sur la base d'un défi similaire, j'ai répondu .
la source
/// ,
282279 octetsAmélioration: j'ai remarqué qu'il y en avait trop
//
dans les commandes de remplacement, j'ai donc décidé de les compresser également (àm
), ce qui m'a fait économiser 3 octets.Compressez à plusieurs reprises la sous-chaîne la plus fréquente.
Treizième génération, 282 octets
Essayez-le en ligne!
Première génération, 486 octets
Pas de compression. Échappé au
/
et au\
.Essayez-le en ligne!
Deuxième génération, 402 octets
Comprimé deux espaces pour
a
. Le/a/ /
moyen "remplace toutes les occurrences dea
à deux espaces".Essayez-le en ligne!
Troisième génération, 369 octets
Compressé
__
àb
. Le/b/__/
au moyen commençant par « remplacer toutes les occurrencesb
à__
».Essayez-le en ligne!
Quatrième génération, 339 octets
Compressé
|
àc
. Le/c/ |/
au moyen commençant par « remplacer toutes les occurrencesc
à|
».Essayez-le en ligne!
Le reste des règles de compression
Ainsi, la liste des règles de compression:
a
.__
enb
.|
versc
.aa
versd
.bb
verse
.cc
versf
.dd
versg
.|c
versh
.\/
versi
. Le\
et le/
dans les règles sont encore échappés.b_
versj
.|a
versk
._
versl
.//
versm
.Comme vous pouvez le voir, il existe des règles de compression qui se chevauchent. Par exemple,
g
encodedd
qui encodeaaaa
qui encode 8 espaces.la source
Ta maman (sans compétition), 331 octets
Décodez la chaîne et décompressez-la à l'aide du compresseur Jelly
la source
Python 3, 377 octets
similaire à la réponse javascript, utilisé RLE plus un tas de remplacements pour les sous-chaînes courantes.
Je pense que je suis allé un peu trop haut avec les trucs de remplacement, cela n'a probablement pas beaucoup aidé, mais bon.
la source
JavaScript (ES6), 354 octets
Une autre tentative. Pas aussi efficace que la longueur de course, malheureusement.
Stocke un groupe de nombres en base 36 dans la première chaîne, délimitée par un
et
!
séparateur. Remplace ensuite les nombres (avec le!
) par les représentations en base 4 des nombres. Remplace toutes les 0., 1'S, 2'S et de la base 4 avec un nombre_
,|
respectivement, et toutes les 3 années sont remplacés par les éléments de la seconde chaîne de manière séquentielle.la source
Python 3, 263 octets
Passe initiale à l'aide de fonctions intégrées.
quelques guillemets et sauts de ligne supplémentaires ajoutés pour éviter le défilement horizontal à des fins d'affichage uniquement (non compté dans le score)
la source
repr()
de la chaîne brute était beaucoup plus long que ascii85CJam, 229
Pas de personnages géniaux et pas de compression intégrée :)
Essayez-le en ligne
la source
Lua, 353 octets
Programme:
Merci à @jrich pour la compression.
la source
Rubis,
271262248 octetsEssayez-le ici
la source
Vim ,
374365326319313311 frappes9 frappes grâce à @Dr Green Eggs et Ham DJ .
Peut-être peut-être encore jouer au golf en utilisant
:nn
?la source
<number>a <esc>
beaucoup. Si vous le faitesyl
sur un espace, vous pouvez le remplacer par<number>p
. Cela devrait économiser environ 8. 2. Vous pouvez remplacerea
parA
. Vous pourriez probablement en prendre encore plus si vous changez d'approche, mais ce sont les conseils rapides que je vois._
et|
etc.?:s
ne remplace que sur une seule ligne. Tu veux:% s
. Vous pouvez également enregistrer certaines séquences de touches en faisant:im
(imap) au lieu de rechercher et remplacer. (Bien que vous deviez peut-être utiliser ctrl-v ou ctrl-q pour mapper à un espace):im
ne peut jouer au golf que quelques octets de plus, je suppose.Javascript (ES6)
464352 octetsEssayez-le ici!
la source
HTML,
482481475 octetsla source
05AB1E , 171 octets
Essayez-le en ligne.
Explication:
Consultez cette astuce 05AB1E (section Comment compresser des entiers volumineux? Et Comment compresser des listes d'entiers? ) Pour comprendre comment fonctionnent les entiers compressés et la liste Base-8.
la source
C (gcc) ,
280279 octetsEssayez-le en ligne!
Fatigué
Nous définissons un alphabet de 8 symboles
" _|/\\()\n"
et compressons les données en compressant deux symboles par octet en fonction de son index dans l'alphabet, avec le premier symbole dans les bits 0..2 et le second dans 3..5. Le bit 6 est défini pour amener l'octet résultant dans le territoire ASCII imprimable. Un RLE simple est ensuite exécuté sur la chaîne compressée. Si un symbole dans la chaîne se produit plus de deux fois de suite, il est stocké sous la forme d'une paire de caractères, le premier contenant la longueur d'exécution plus 32 (bit 5 défini) et le second le symbole lui-même.Essayez-le en ligne!
la source
Javascript ES6, 314 octets
Contient des octets non imprimables. Utilise de la magie JS noire pour fonctionner. Si cela
console.log()
est nécessaire pour que cette réponse soit valide, le nombre d'octets sera 327.Ce fut une énorme douleur pour bien faire les choses, et je n'ai pas réussi à me débarrasser du
.slice(0,-2)
:(éditera une explication demain quand je serai moins fatigué.
Remplacement de chaque octet par la valeur hexadécimale correspondante pour que l'extrait de code puisse s'exécuter
la source
JavaScript,
294292 octetsC'est ... c'est juste un encodage de l'art ... avec ça ...
Si
console.log()
nécessaire, le nombre d'octets est de307305 octets.294-> 292, -2B pour le codage
\n
en7
.la source