“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY
Essayez-le en ligne!
Comment ça marche
“×Ɗ¡‘
produisent les points de code des caractères entre les guillemets dans le SBCS de Jelly , qui sont 0x11 = 17 , 0x91 = 145 et 0x00 = 0 .
ŒP
construit l'ensemble de puissance du tableau de points de code, ce qui donne
[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]
Les deux dernières entrées correspondent à des combinaisons contenant à la fois 80 et FF , nous devons donc les éliminer.
»Ṫ¦209
se compose de trois parties:
Ṫ
(tail) supprime le dernier tableau de points de code, c'est-à-dire [17, 145, 0] .
»209
prend le maximum de chaque entier dans le reste du jeu de puissance et 0xD1 = 209 , en les remplaçant tous par 209 .
¦
(clairsemé) parcourt les éléments du reste du jeu de pouvoirs. Si l'index correspondant se trouve dans [17, 145, 0] , l'élément est remplacé par tous les 209 . Sinon, il reste intact.
¦
n'est pas modulaire, donc cela ne modifie que le dernier tableau (index 0 ) dans le reste du jeu de puissance. Les indices 17 et 145 sont trop grands et n'ont aucun effet.
Le résultat est le suivant.
[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]
ṗ€3
calcule la troisième puissance cartésienne de chaque tableau, c'est-à-dire le tableau de tous les 3-tuples d'éléments de chaque tableau.
Fd⁴
aplatit le résultat et calcule le quotient et le reste de chaque entier divisé par 16 .
ịØH
index (basés sur 1) dans "0123456789ABCDEF , donc 0x11 , 0x91 , 0x00 et 0xD1 sont mappés sur " 00 " , " 80 " , " FF " et " C0 " (resp.).
s3ṢQ
divise les paires de caractères en 3 tuples, trie les tuples et dédoublonne.
Enfin, Y
joint les tuples uniques, séparés par des sauts de ligne.
“0FC8”
, comme nous l' avons00
,FF
,C0
et80
.Python 3,
1341291251089190 octetsJe pense qu'il y a encore beaucoup de golf à faire ici. Suggestions de golf bienvenues!
Edit: -9 octets et merci beaucoup à Mego pour son aide dans le formatage des chaînes. -17 octets de trouver une meilleure façon d'imprimer la chaîne en premier lieu. -17 octets pour trouver une meilleure façon d'écrire la boucle for en premier lieu. -1 octet grâce à l'astuce de xnor à utiliser à la
i%3//2*"\n"
place de"\n"*(i%3<2)
.Ungolfing
la source
*
.i%3//2*"\n"
enregistre un octet.JavaScript (ES6),
109107 octetsEnregistré 2 octets, grâce à Neil
Cela représente
7 à9 octets de moins que le simple retour de la chaîne brute en guillemets.Tester
Afficher l'extrait de code
la source
.replace(/./g)
la même longueur que.map().join
, mais.map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)
enregistre deux octets.PowerShell,
113106 octetsOuais, je n'ai rien trouvé de plus court que d'imprimer la chaîne littérale ...Merci à @ Martin Smith d' avoir réduit 7 octets en utilisant un simple remplacement (que j'ai complètement ignoré). Donc, nous sommes au moins 7 octets plus courts que le simple codage en dur. Yay!Mais c'est ennuyeux!
Donc au lieu ...
PowerShell v4, 128 octets
L'
[system.consolecolor]
espace de noms définit (nativement) les couleurs de console disponibles pour la console PowerShell. Si nous les référençons via un tableau entier comme celui-ci, la valeur par défaut est le nom (par exemple,Black
ouWhite
similaire). Nous combinons cela avec une chaîne qui a été-split
placée sur des espaces, nous avons donc maintenant un tableau de chaînes de noms de couleurs.Nous les parcourons
|%{...}
et chaque itération extrait la[system.windows.media.colors]
valeur correspondante . La chaîne de caractères par défaut pour ces objets est la couleur au#AARRGGBB
format sous forme de valeur hexadécimale, nous utilisons donc cela en encapsulant cet appel dans une chaîne avec un bloc de script"$(...)"
. Mais, puisque nous ne voulons pas les valeurs alpha ou le hachage, nous prenons l'extrémité arrière[3..8]
de la chaîne et avons besoin de-join
cechar
tableau résultant en une chaîne. Ensuite, un simpleSort-Object
pour les mettre dans le bon ordre.la source
00
et.Replace(7,'00')
<21 caractères.-replace
for8
et80
est le même nombre d'octets (enregistre 12 zéros, ce qui correspond à la-replace8,80
longueur). Le faire pour leFF
est plus long de deux octets en raison des guillemets nécessaires autour de"FF"
dans l'-replace2,"FF"
instruction.Pyth -
644844 octetsCompression de base super simple.
Essayez-le en ligne ici .
la source
MATL , 39 octets
Essayez-le en ligne!
la source
05AB1E , 57 octets
Essayez-le en ligne!
Ce que nous devons produire est fondamentalement (inversé et divisé):
Ce qui, en décimal, est:
Ce qui dans Base-214 est:
C'est la solution la plus simple que j'ai pu trouver, car il n'y a aucun moyen de battre Dennis. J'ai passé une heure à essayer et rien n'a battu son idée.
la source
PHP, 92 octets
Essayez-le en ligne!
simplement remplacer à partir des chiffres comme clé dans le tableau avec les valeurs strtr
la source
Lot, 137 octets
Oui, c'est ennuyeux. Tentative précédente de 148 octets:
Malheureusement, vous ne pouvez pas diriger la sortie d'un
for
ou d'unecall:
commande, je dois donc m'invoquer récursivement.la source
Pyke, 42 octets
Essayez-le ici!
la source
Befunge,
8369 octetsEssayez-le en ligne!
Les couleurs sont codées dans la chaîne que vous voyez sur la première ligne, deux bits par composante de couleur, avec un bit élevé supplémentaire défini pour forcer chaque valeur dans la plage ASCII (sauf dans le cas de 63, qui serait hors de portée comme 127 ).
La liste des couleurs de la pile est ensuite traitée comme suit:
la source
C #, 195 octets
Malheureusement, cela bat, par une énorme marge, le plus intéressant bien qu'incroyablement alambiqué (j'ai eu beaucoup plus de plaisir à l'écrire) C #, 270 octets
la source
()=>@"string_here"
(ceci se transforme enAction<string>
). Je suggère également d'utiliser une chaîne textuelle (@
) afin que vous puissiez simplement mettre les nouvelles lignes directement dans la chaîne sans avoir besoin de les échapper.C (gcc) , 99 octets
Essayez-le en ligne!
Après avoir tenté de créer une liste de nombres et de les sortir lors du tri, j'ai comparé à la solution naïve, qui faisait réfléchir:
Celui-ci horloge à 140 octets par rapport à mon essai à 200 et changement.
La solution était de le considérer comme un texte comme les autres, bien qu'avec un petit alphabet. Chaque couleur peut être considérée comme un triplet d'indices 2 bits dans l'alphabet {0xff, 0xc0, 0x80, 00}. Le processus de couleur -> triplet -> nombre -> caractère (avec un décalage +35 pour les rendre tous imprimables et éviter tout besoin d'évasion) peut être illustré comme tel:
Il suffit ensuite d'itérer sur la chaîne résultante et de découper les parties appropriées de la chaîne alphabétique.
la source