Le défi est extrêmement simple. Choisissez 5 lettres distinctes (vous pouvez simplement choisir les 5 qui vous permettent le code le plus court si vous le souhaitez) et envoyez-les à la console. Cependant, le problème est qu’ils doivent appartenir à la liste suivante:
AAA BBBB CCCC DDDD EEEEE FFFFF GGG H H
A A B B C D D E F G H H
AAAAA BBBB C D D EEEE FFFF G GG HHHHH
A A B B C D D E F G G H H
A A BBBB CCCC DDDD EEEEE F GGG H H
IIIII J K K L M M N N OOO
I J K K L MM MM NN N O O
I J KKK L M M M N N N O O
I J J K K L M M N NN O O
IIIII JJJ K K LLLLL M M N N OOO
PPPP QQQ RRRR SSSS TTTTT U U V V W W
P P Q Q R R S T U U V V W W
PPPP Q Q RRRR SSS T U U V V W W
P Q QQ R R S T U U V V W W W
P QQQQ R R SSSS T UUU V W W
X X Y Y ZZZZZ
X X Y Y Z
X Y Z
X X Y Z
X X Y ZZZZZ
Règles supplémentaires:
- 5 lettres identiques ne sont pas autorisées, pas de choix répété.
- Chaque lettre doit utiliser sa capitale comme caractère ascii pour la dessiner.
- Chaque lettre doit être sur la "même ligne" et avoir 5 espaces entre chaque lettre.
- Vous pouvez choisir les 5 lettres de votre choix , cela vous permettra de réutiliser du code et de réduire le nombre d'octets. Déterminer quelles lettres vous permettront de le faire plus efficacement fait partie du défi.
- Les espaces de fuite sont acceptables.
- Une nouvelle ligne de fuite est acceptable, mais pas plus d’une nouvelle ligne.
- C'est le code-golf, le nombre d'octets le plus faible gagne.
Exemples:
ABCDE
AAA BBBB CCCC DDDD EEEEE
A A B B C D D E
AAAAA BBBB C D D EEEE
A A B B C D D E
A A BBBB CCCC DDDD EEEEE
EFLIP
EEEEE FFFFF L IIIII PPPP
E F L I P P
EEEE FFFF L I PPPP
E F L I P
EEEEE F LLLLL IIIII P
FOU
CCCC RRRR AAA ZZZZZ Y Y
C R R A A Z Y Y
C RRRR AAAAA Z Y
C R R A A Z Y
CCCC R R A A ZZZZZ Y
N'ayez pas peur de soumettre plus d'une réponse avec des lettres différentes ou des stratégies différentes à chaque fois, vous pouvez le faire de différentes manières.
code-golf
ascii-art
kolmogorov-complexity
Urne Magique De Pieuvre
la source
la source
J
s.\n
, je l'autoriserai.Réponses:
Gelée , 41 octets
LICTE
TryItOnline!
Idée
Utilisez un décodage de longueur de cycle avec des lettres ayant le milieu le plus similaire possible avec seulement une longueur de cycle de chaque "valeur de pixel" par ligne et par lettre.
Mettez un début plat comme "L" pour éviter différentes valeurs de décodage de longueur d'exécution pour les lignes.
Placez la lettre différente (impossible à trouver 5) des trois rangées du milieu à la fin pour que la plus petite différence puisse être ajoutée arithmétiquement.
Sortie souhaitée; les longueurs de parcours; et ceux convertis de la base 11:
Les trois valeurs
399633415
,431646160
et1179122455
dans la base250
sous forme d' indices page de code Jelly sont alorsðƁ ƥ
,ȷɓSɠ
etJrŀṘ
qui peuvent être utilisées pour encapsuler les informations de longueur d'exécution.Le code
la source
Charbon de bois ,
5149 octets (ECXKI)Les sorties
Essayez-le en ligne!
En utilisant des caractères symétriques verticalement, dessine les moitiés supérieures puis se reflète. La plupart d'entre elles utilisent Polygon (
G
) et PolygonHollow (GH
) pour dessiner une série de segments de ligne connectés avec un caractère particulier.I
peut plus facilement être fait avec MultiPrint (P
), en utilisantT
comme direction.Remarque: PolygonHollow dessine simplement les segments spécifiés, sans terminer le polygone ni le remplir. Le polygone sera complété et rempli (pas ce que nous voulons) si le polygone peut être complété par une simple ligne dans l’une des huit directions cardinales ou intercardinales. Sinon, il se comporte comme PolygonHollow, pour une économie d'un octet.
L'ordre des caractères a été choisi pour ne nécessiter que des déplacements horizontaux du point d'extrémité au début du point suivant. Voici comment le curseur procède:
la source
GH
à la documentation]PowerShell v2 +,
138128114 114112106105 octets (LICTD)L'idée est de maximiser les espaces entre les lettres afin que nous puissions obtenir des compressions répétées.
Emprunte l'astuce de déduplication de la ligne du milieu à la réponse de Florent . Sauvegardé 6 octets grâce à Ben Owen en utilisant la multiplication de chaînes pour les trois rangées du milieu, et un octet supplémentaire grâce à Matt .
La sortie est comme suit avec 227 octets, soit une réduction de 53,7% -
la source
$("L11 I1 C11 T1 D D`n"*3)
au lieu des 3 lignes du milieuJavaScript,
110109 octets (CLOUD)Afficher l'extrait de code
La sortie est 227 octets:
la source
ES6 (Javascript),
194, 181 octets (IGOLF / ANY)Celui-ci est long et n'est pas vraiment optimisé (pas encore du moins), mais peut être modifié pour imprimer un message particulier, en modifiant uniquement les données bitmap.
EDIT: remplacement de la réduction interne par la carte , utilisation du décalage de bits pour le remplissage
Golfé
Démo
Théorie
Prenez une lettre:
convertissez-le en matrice binaire (bitmap)
faire la même chose pour les 4 autres lettres, balayer une ligne, en enlevant les "premiers" 5 bits
11111 01110 01110 10000 11111
convertir en une chaîne hexadécimale (devrait utiliser ici base36 ou même imprimer ASCII)
0x1f73a1f
appliquer le même algorithme à 4 autres lignes, pour obtenir le bitmap.
Rendu dans l'ordre inverse.
la source
[32979487,4736528,4834846,4769296,32979952]
est plus courte que sa représentation hexadécimale/(1|0)/g
par/\d/g
pour sauvegarder quelques octets. Aussi\n
pourrait être remplacé par une nouvelle ligne réelle.PHP,
1071041029486 octetsOk, je suis convaincu que j'ai maintenant la plus petite source possible avec cette méthode. J'ai écrit un script pour générer puis gzip toutes les combinaisons possibles de cinq lettres. Il existe deux solutions qui correspondent au plus court compressé - LODIC et LDOIC. Je vais avec l'ancien parce que c'est plus amusant à dire.
La source:
Sortie:
la source
'
s: la chaîne sera traitée comme une constante avec une valeur propre.05AB1E , 44 octets
C'était amusant.
Je me sens obligé de revenir et d’essayer de jouer au golf quand j’ai le temps.
Utilise le codage CP-1252 .
Inspiré par la réponse de carusocomputing .
ECOIH
Essayez-le en ligne!
Explication
‘ÓÑOIHH‘
pousse la ficelle"ECOOIHH"
.SðýJ3×S
joint la chaîne par des espaces, la répète trois fois et la convertit en liste.La liste résultante est
['E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H', 'E', ' ', 'C', ' ', 'O', ' ', 'O', ' ', 'I', ' ', 'H', ' ', 'H']
.•Td<UÕ‘áÓ?¢tWvkÔÚ•
pousse le nombre564631055513119191317171314619131717500
.S)ø
compresse la liste et le numéro ensemble.ü×J
fait la répétition de chaîne par paire et les assemble.Le résultat est la chaîne
EEEEE CCCC OOO IIIII H HE C O O I H HEEEE C O O I HHHHH
.3äû»
scinde cela en 3 morceaux, ajoute les premier et deuxième morceaux dans l'ordre inverse et se joint par des nouvelles lignes.la source
•Td<UÕ‘áÓ?¢tWvkÔÚ•
pousse le nombre564631055513119191317171314619131717500
", car pourquoi ne serait-il pas ...JavaScript (ES6), 96 octets (DIOCL)
L'idée ici est non seulement de rendre les trois lignes du milieu identiques, mais également de rendre la première ligne presque identique à la dernière. Comme il n’ya que 4 lettres qui correspondent parfaitement à cette description
CDIO
,L
c’est la deuxième meilleure option, car elle ne nécessite que 4 caractères ajoutés à la fin de la chaîne.Comme pour la réponse de Florent , il s'agit d'un extrait qui renvoie le résultat. Ajoutez 3 octets si cela doit être une fonction.
Extrait de test
Afficher l'extrait de code
la source
D
premier.C
passé leI
etO
aussiI
texte immédiatement aprèsC
, bien que cela améliore de manière intéressante ma solution Batch, pour la même raison.Bash + coreutils with figlet, solutions 55440,
112106 octets chacunSortie:
Hé, nous avons déjà un programme pour l'art ASCII! La police de la bannière fait presque l'affaire, sauf qu'elle génère 7 lettres sur 7. Hmm, retirons simplement les 3ème et 5ème colonnes, et les 2ème et 5ème lignes, et voyons ce que cela donne ...
Il s’avère que de nombreuses lettres seront imprimées de la manière requise, à savoir BDEFHJLPTU Z.
Il suffit de remplacer les arguments de la première commande set par une combinaison de ces lettres pour obtenir un résultat correct! Par conséquent, cela nous donne 11 * 10 * 9 * 8 * 7 = 55440 solutions, chacune de celles-ci faisant 106 octets de long.
la source
05AB1E ,
102908969 octets (EOIXC)Essayez-le en ligne!
Sortie (230 octets):
Explication:
La théorie était de choisir des lettres à symétrie verticale, puis de coder les 3 premières lignes et de les palindromiser. Fondamentalement, j'ai codé comme {#} sur {Lettre} par paires de 2 octets. Je suis sûr qu'il existe un meilleur moyen de le faire.
-20 octets grâce à Emigna, je serai dans le chat pour poser quelques questions bientôt;).
la source
•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚîòvÅr葾)jM•34B2ð:
. Sautez dans le chat 05AB1E si vous avez des questions sur le codage.45ô
peut être3ä
.A
n’est pas à symétrie verticale, pas plusF
. Vous allez deviner qu'une fois que vous commencez à utiliserG
ou plus, cela ruine ce dont vous parlez, n'est-ce pas? De plus, avec ma méthode de compression, je voulais éviter les lettres comportant plus d'un événement par ligne. Si vous voulez jouer au golf avec cette solution et me battre, je serais ravi de l'exemple :).0
dans laO
(rangée du centre, côté droit)•Cv¶ÉH&9;´ß{ø‰¿šq3d$µ_©Û¶«K>Ò±sÒ9ÍÊC4ÊÚúNÏŒº9¨gÚSÞ•
corrige leO
même nombre d'octets.JavaScript ES6, 168 octets, CHAMP
Nous pouvons cesser de regarder les gars, nous avons un
CHAMP
icila source
Brainf ***
512411 octetsMieux refaire:
Celui-ci fait un meilleur travail pour optimiser la bande, en sacrifiant les caractères de configuration pour l'impression des caractères. La bande dans celle-ci ressemble
'C' 'E' ' ' 'F' 'I' 'L' '\n'
, améliorant l'efficacité. J'ai choisi ceux-ci parce qu'ils manquaient d'espaces internes, ce qui leur permettait de ne pas avoir à aller et venir plus que nécessaire entre le personnage et l'espace.Si vous voulez lire ce qu'il fait:
Sortie:
Ancienne soumission:
J’ai choisi ABCDE parce que cela facilite beaucoup le réglage de la bande pour la sortie, mais le temps et les caractères que j’ai perdus en allant de la lettre à "" pour tout l’espace négatif à l’intérieur des A, B et D et le placement de la ligne de fond à la fin de la bande m'a un peu tué, je pense.
Je me suis retrouvé avec une bande qui avait les valeurs
0 0 'A' 'B' 'C' 'D' 'E' ' ' \n
et ensuite sortie de làSortie:
la source
[<]>
à 3 reprises pour économiser 6 octets.Vim,
116 octets99 octetsELITC
Il a joué moins de 100 avec l’aide de @DrMcMoylex.
Celui-ci contient des caractères non imprimables, je les ai donc ajoutés ci-dessous (style Vim) pour que vous puissiez les voir.
TryItOnline!
Il utilise fondamentalement le même décodage de durée que la réponse de gelée. J'ai utilisé des lettres où je pourrais (espérons-le) répéter le haut en bas et les médiums seraient tous 3 identiques. Une fois que les sommets, les bas et les milieux sont créés, je modifie les caractères pour les corriger:
Je dois ajouter deux espaces au I, car je n’autorisais pas les nombres à deux chiffres (je n’aurais donc pas besoin de séparateur. Ceci conduit à une séquence de 9 espaces où il me faut 11.
la source
Y
lieu deVy
, auFI
lieu de?I<cr>
, au{
lieu degg
, auw
lieu defl
. 3) Si vous utilisezr
au lieu deR
, vous pouvez supprimer le fichier<esc>
.MATL , 49 octets
Essayez-le en ligne!
Cela produit les lettres
TIHZN
:Explication
T
est relativement facile à construire à partir de zéro.I
peut être obtenu essentiellement enT
plus de sa réflexion verticale.H
estI
transposé.N
estZ
transposé et réfléchi verticalement.la source
V ,
62, 53 octetsEssayez-le en ligne!
Cela génère
C I D O Z
:la source
Perl, 109 octets (ABCDE)
Remarque : ceci contient des caractères non imprimables, échappés pour faciliter les tests ici, image
xxd
ci-dessous.Stocke la représentation binaire des positions des lettres sous forme de nombre, puis décompresse en binaire, en remplaçant
0
s par des espaces et1
s par la lettre correspondante, à l'aide d'une recherche. Stocker les représentations de lettre est assez facile, mais les remplacer s'est avéré plus compliqué que je ne l'aurais espéré. Je suis sûr qu'il existe de meilleures façons de le faire, donc je pourrais bien continuer à jouer avec cela.Pour recréer le fichier, lancez
xxd -r > favourite-letter.pl
, collez le ci-dessous et appuyez sur Ctrl+ D:Usage
la source
Python 2, 124 octets
Semblable à mon autre réponse , mais avec de meilleurs choix de lettres. Sortie ceci:
la source
Befunge, 120 octets (CKYTF)
La source
Sortie
Essayez-le en ligne!
Au cas où cela serait important, je dois signaler que ma sortie comporte un espace de début sur chaque ligne. Les règles ne l'interdisaient pas explicitement, alors j'espère que ça ira. Si ce n'est pas le cas, considérez simplement qu'il s'agit d'une entrée non concurrente.
Explication
Les lettres du mot sont codées comme une simple séquence de 25 entiers, chaque entier étant une représentation binaire de 5 pixels. Étant donné que Befunge vous oblige à effectuer un calcul pour instancier tout entier supérieur à 9, les lettres ont été choisies de manière à minimiser le nombre de calculs nécessaires, et ordonnées afin que les valeurs répétées potentielles puissent être dupliquées plutôt que recalculées.
Nous devons également stocker la valeur ASCII de chaque lettre, décalée de 32, dans un tableau indexé par le modulo 5 d'un index de décrémentation (donc 0 4 3 2 1 ...). La raison de la compensation par 32 est que la valeur peut être multipliée par un bit de pixel (1 ou 0) puis ajoutée à 32 pour produire un espace ou le caractère requis.
Ce tableau de valeurs de lettre est stocké dans les 5 premiers octets du code, ce qui facilite son accès. Cela a également influencé le choix des lettres, car ces valeurs devaient être significatives lorsqu'elles étaient interprétées comme une séquence de code. Ceci est la séquence
#&49+
. Le#
saute par-dessus le&
et le49+
juste pousse 13 sur la pile, qui est par la suite ignorée.la source
&
, mais votre programme ne prend pas réellement l'entrée ... que se passe-t-il?Ruby,
110107102 octets (DOCIL)Impressions
EDIT: sauvé des caractères en évitant
join
et en déplaçant des chosesla source
Befunge-98 ,
10998 octets (FUNGE / ANY)Essayez-le en ligne!
Entrée (115 caractères):
L'entrée est la version entière d'un nombre binaire au format
aaaaabbbbbb
oùaaaaa
est une carte inversée du caractère à imprimer (par exemple, la deuxième ligne du N estNN N
, donc le masque est10011
), etbbbbbb
correspond au caractère ascii à imprimer, moins 32 .J'ai également créé un programme befunge-98 pour créer mes entrées:
Essayez-le en ligne!
Sortie (255 caractères):
Explication:
C'est probablement assez golfable; J'ai passé très peu de temps à réfléchir aux réductions potentielles.
Théoriquement, cela permet d’imprimer n’importe quelle séquence d’art 5x5 en format ASCII.
Merci à James Holderness de m'aider à sortir du triple chiffre!
la source
48*
on peut remplacer par'
(puisque c’est tout de même 98) et88*
par'@
. Merci de m'aider à sortir du triple chiffre!C #,
290279267265 octetsEdit: 12 octets sauvés grâce à @milk! Et 2 autres grâce à @TheLethalCoder
Golfé:
Ungolfed:
Les sorties:
la source
Func<string,string>j=a=>a.Replace("|",g)+"\r\n";
Stax , 33 octets "BCDEO"
Exécuter et déboguer
J'ai pris des lettres qui
Ces propriétés signifient que chaque lettre peut être représentée par une grille 3x3. Voici les 9 régions, représentées par des chiffres.
Considérons la lettre "B". Il peut être représenté par 3 chiffres octaux:
656
. Chaque chiffre contient trois bits, qui contrôlent les régions activées pour cette lettre. Cette technique fonctionne également pour "CDEO".Décompressé, non golfé et commenté, le programme ressemble à ceci.
Exécuter celui-ci
la source
Python 3,
234228227166 octets (CLOUD):Impressions:
la source
Python 3, 178 octets
Ne gagnera pas, mais n'utilisera aucune compression. Cela fait ceci:
Toute aide est la bienvenue, j'ai probablement manqué quelque chose. Je n'ai pas utilisé Python 2 car vous ne pouvez pas le faire
p=print
, ce qui économise 17 octets. Essayez-le sur repl.it.la source
p=print
, vous pouvez utiliser une seuleprint
instruction avec l'argument kwsep='\n'
.Ruby, 101 octets (TIFLE)
J'ai choisi des lettres nécessitant un seul bloc de lettres (1, 4 ou 5 lettres) sur chaque ligne. F, L et E sont justifiés à gauche, mais T et I requièrent des espaces de début où une seule lettre (partie verticale) est imprimée. Le code permettant d'ajouter ces espaces semble pouvoir être amélioré.
non-golfé
la source
C 176 octets
Si les droits implicites sont autorisés, il est possible de couper 8 octets supplémentaires.
Sortie: EDCBA
Comment ça marche: La macro R ne fait que répéter 5 fois un morceau de code. Étant donné la fréquence à laquelle cinq dans ce problème apparaissent, ce qui est très utile. Maintenant: voici ce que fait T (int). T prend un entier et l'utilise comme champ de bits pour déterminer où imprimer des lettres et où imprimer des espaces. Par exemple, si on leur donne
T(0b11111111100111111110011100)
, il affichera:EEEEE DDDD CCCC BBBB AAA
. Il décompte progressivement la lettre imprimée. D'abord, il affiche E, puis D, puis C, puis B, puis A. Si vous appelez f (), tout sera imprimé.la source
Lot, 135 octets (DOCILe)
Remarque: la première ligne se termine par 5 espaces.
la source
FRAPPER,
95, 111 octets (EBASH)Golfé
Explication
Base64 sur un flux d'octets LZMA brut
Démo
Avertissement
Oui, je sais bien que ce n'est pas vraiment portable, c'est pourquoi j'ai payé un octet pour supprimer les avertissements xz avec -q dans le premier cas> :)
la source
Python 2,
208194193 octetsC'est mon tout premier golf de code;) Fun à faire
Sortie:
L'utilisation d'un dictionnaire détruit l'ordre de tri des lettres, mais ce n'était pas une obligation
la source
perl 94 octets.
Les 4 premières lettres (
D
,O
,I
,C
) sont spécifiquement choisis pour avoir des lignes supérieures et inférieures semblables, et celles du milieu similaire. Comme il n'y a pas d'autre lettre similaire, j'ai choisi le "L" pour pouvoir appliquer le même algorithme et ajouter le 4L manquant.J'ai économisé quelques octets supplémentaires en remplaçant
\n
le code par une nouvelle ligne.Résultat:
la source