Tout en faisant des recherches pour un défi différent que je formule, je suis tombé sur un graphique de Cayley , en particulier celui-ci . Étant donné que je suis l' un des meilleurs auteurs de défis en art ascii , j'ai bien sûr dû faire un défi artistique ASCII pour cela.
Votre défi est de produire cette représentation artistique ASCII d'un graphique de Cayley du groupe libre sur deux générateurs comme suit:
+
+++
+ | +
++-+-++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ +++ | +++ +
+++ + | + +++
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+ | | | | | +
+++ | | | | | +++
+ | | | | | | | +
++-+----+-----------+--------------------------+--------------------------+-----------+----+-++
+ | | | | | | | +
+++ | | | | | +++
+ | | | | | +
+ | + | | | + | +
++-+-++ | | | ++-+-++
+ | + | | | + | +
+++ | | | +++
+ | | | +
+ | + | + | +
+++ | +++ | +++ | +++
+ | | | + | + | | | +
++-+----+----+-++ | ++-+----+----+-++
+ | | | + | + | | | +
+++ | +++ | +++ | +++
+ | + | + | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ + | + +++
+ +++ | +++ +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+ | | | +
+++ | | | +++
+ | | | | | +
++-+----+-----------+-----------+----+-++
+ | | | | | +
+++ | | | +++
+ | | | +
+ | + | + | +
++-+-++ | ++-+-++
+ | + | + | +
+++ | +++
+ | +
+ | +
+++ | +++
+ | | | +
++-+----+----+-++
+ | | | +
+++ | +++
+ | +
+ | +
++-+-++
+ | +
+++
+
Contribution
Aucune entrée, sauf si votre langue nécessite explicitement une entrée pour s'exécuter.
Sortie
La représentation artistique ASCII montrée ci-dessus.
Hash MD5
Comme il s'agit d'une sortie assez importante, pour vérifier votre travail, voici quelques hachages MD5 d'exemples de formes de sortie (tous sont UTF-8 sans BOM):
- Remplissage d'espace carré,
CR/LF
sauts de ligne et saut de ligne -954B93871DAAE7A9C05CCDF79B00BF3C
- c'est la représentation utilisée ci-dessus. - Remplissage d'espace carré,
CR/LF
sauts de ligne, pas de nouvelle ligne arrière -28405EF91DA305C406BD03F9275A175C
- Remplissage d'espace carré,
LF
sauts de ligne et saut de ligne -8CA65FB455DA7EE5A4C10F25CBD49D7E
- Remplissage d'espace carré,
LF
sauts de ligne, pas de nouvelle ligne arrière -FDB1547D68023281BB60DBEC82C8D281
- Pas d'espaces de fin, de
CR/LF
sauts de ligne et de retour à la ligne de fin -77FDE8CE5D7BD1BDD47610BA23264A19
- Pas d'espaces de fin, de
CR/LF
sauts de ligne, pas de retour à la ligne de fin -EAD390C3EFD37F0FCACE55A84B793AB5
- Pas d'espaces de fin, de
LF
sauts de ligne et de retour à la ligne de fin -1F6CAB740F87881EB2E65BED65D08C36
- Pas d'espaces de fin, de
LF
sauts de ligne, pas de retour à la ligne de fin -7D41CE1E637619FEA9515D090BFA2E9C
- S'il y a un MD5 supplémentaire que vous souhaitez comparer, faites-le moi savoir et je le créerai et mettrai à jour le défi.
Règles
- Les sauts de ligne ou les espaces de début ou de fin sont tous facultatifs, tant que les caractères eux-mêmes s'alignent correctement.
- Un programme complet ou une fonction sont acceptables. S'il s'agit d'une fonction, vous pouvez renvoyer la sortie plutôt que de l'imprimer.
- Si possible, veuillez inclure un lien vers un environnement de test en ligne afin que d'autres personnes puissent essayer votre code!
- Les failles standard sont interdites.
- Il s'agit de code-golf, donc toutes les règles de golf habituelles s'appliquent et le code le plus court (en octets) l'emporte.
code-golf
ascii-art
kolmogorov-complexity
fractal
AdmBorkBork
la source
la source
-
/|
s suivent la formule(2<<n)-n-2
plutôt que(1<<n)-1
ce qui aurait été ma supposition d'origine.Réponses:
JavaScript (ES6),
204195188180 octetsRemplissage d'espace carré, sauts de ligne LF
etaucun retour à la ligne de fin, même si je n'ai pas vérifié le MD5.Version paramétrée pour
222216207199 octets. Explication: La taille de sortie est de 9119 caractères ASCII, dont 46 sauts de ligne. (Pour la version paramétrée, la taille de sortie est calculée en incluant la nouvelle ligne de fin.) Chaque caractère est déterminé individuellement, d'abord en vérifiant si une nouvelle ligne est due, sinon en appelant une fonction sur les coordonnées par rapport à l'origine au milieu de la finale diagramme. La fonction vérifie récursivement le point par rapport aux croix les plus proches de chaque taille vers le point et renvoie le caractère approprié selon que le point se trouve au centre ou sur l'axe d'une croix.la source
Röda ,
284280238234 octetsEssayez-le en ligne!
Il s'agit d'une fonction anonyme. J'ai utilisé des sauts de ligne au lieu des points-virgules donc c'est très bien formaté!
La fonction récursive
f
crée le graphique dans un tableau à deux dimensionst
, qui est ensuite imprimé à la dernière ligne.Je n'ai pas trouvé de moyen de calculer
27,12,5,2,1
en quelques octets, ils sont donc codés en dur.la source
b_shiftl
opérateur existe, mais il est trop long pour être utilisé dans ce programme, je pense.10000110001200020001
->1168671727
doute que vous pouvez convertir et fractionner avec moins de 2 octets bien que ...Fusain ,
5043 octetsEssayez-le en ligne! Le lien est vers la version détaillée du code. À l'origine, j'ai essayé diverses réflexions et rotations, mais elles ne faisaient pas ce que je voulais ou, dans certains cas, étaient buggées. J'ai ensuite essayé une approche en boucle imbriquée, mais je suis maintenant passé à cette méthode itérative qui fonctionne en dessinant un certain nombre de lignes entre chaque croix intérieure en fonction du nombre de puissances de 3 sur lesquelles le numéro de pas est divisible. Il peut même être facilement modifié pour accepter un paramètre de taille au prix de seulement 4 octets:
Edit: J'ai depuis travaillé sur la façon d'utiliser
RotateShutterOverlap
pour accomplir cette tâche, mais ennuyeusement, cela me prend 44 octets:Si
RotateShutterOverlap
accepté un nombre entier de rotations variables, cela le réduirait à 40 octets:En l'état, l'utilisation d'un paramètre de liste de rotations prend 45 octets:
la source
05AB1E , 620 octets
Essayez-le en ligne!
Tout ce que j'ai fait, c'est couper le motif en quart, convertir les symboles en base-4, compresser 1/4 du motif en base-214, puis le retourner sur les lignes de symétrie. Je travaille sur quelque chose de plus intelligent en utilisant l'algorithme réel, mais jusqu'à ce que je termine, c'est ce qui sera là pour moi.
la source
05AB1E
réponse que j'ai vue. xD Habituellement, il est proche de 6,20 au lieu de 620 avec des réponses dans cette langue. ;)Python 3, 264 octets
Utilise une paire de fonctions mutuellement récursives. F trace les lignes et P insère les «+». Peut être joué plus, mais hors du temps pour l'instant.
la source
C, 236 octets
Il suffit de construire la table des caractères de manière récursive avant de l'afficher.
Essayez-le en ligne!
Merci @Neil de m'avoir fait réaliser que la longueur des branches suit une vraie règle.
la source