Défi
Écrivez le code qui produit le code d'équation mathématique TeX (LaTeX) (donné ci-dessous) qui composera Sierpinski Triangle Fractal de 5 niveaux. Le code le plus court gagne .
Détails
TeX (et des amis comme LaTeX, etc.) est un système de composition sophistiqué. Il peut rendre des expressions complexes imbriquées arbitraires pour les formules mathématiques. Par coïncidence, ce «complexe imbriqué» est également descriptif des fractales. Ce qui suit est rendu avec MathJaX
par le code d'équation mathématique en texte clair composé de super et de sous-scripts imbriqués:
{{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}^{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}_{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}}
Notez qu'il s'agit simplement d'une imbrication à 5 niveaux. Vous n'avez pas besoin de générer $...$
ou $$...$$
ou un autre balisage requis pour démarrer / terminer une équation mathématique dans TeX & Co. Vous pouvez prévisualiser le TeX généré dans de nombreux éditeurs en ligne, par exemple: http://www.hostmath.com mais vous pouvez trouver de nombreux d'autres aussi. Cette question a été inspirée par une discussion avec des amis .
Mise à jour
Il y a une question similaire mais beaucoup plus générale et produira des solutions différentes. Je voulais vraiment voir la complexité de kolmogorov pour un code simple très fixe qui dans un système (TeX) est complètement explicite tandis que dans un autre compressé. Cela concerne également le n
commentaire au lieu de 5 niveaux.
la source
Réponses:
SOGL V0.12 ,
1612 octetsEssayez-le ici!
Port d'Erik La réponse Python 2 de l' Outgolfer
la source
Python 2 , 32 octets
Essayez-le en ligne!
la source
TeX simple, 29 octets
Cela produit ce que les autres ont produit. Mais si nous avons besoin que le code soit compilable, ce serait 6 octets de plus
Explication
~
est un personnage actif dans TeX, nous pouvons donc lui donner une (nouvelle) définition.\def~#1x{{#1x_#1x^#1x}}
définit~
comme une macro, de sorte que lorsque TeX voit~
, il fait ce qui suit:x
, et appelez cela#1
(correspondance de modèle).{#1x_#1x^#1x}
Par exemple,
~ABCx
serait remplacé par{ABCx_ABCx^ABCx}
.Quand
~~~~~x
est utilisé,#1
est~~~~
, donc le tout est remplacé par{~~~~x_~~~~x^~~~~x}
. Etc.Once we have the long string, we can print it out to terminal with
\message
(and ending with a\bye
so TeX stops), so\message{~~~~~x}\bye
. Or typeset the resulting expression (as a mathematical formula), by surrounding it in$
s : so$~~~~~x$\bye
.la source
n
(rather than5
) it could be more efficient to create a macro that outputs a list ofn
tildes~
rather than writing~~~~~
. Plus it would look better if the whole expression is typeset under\scriptscriptstyle
.05AB1E , 17 octets
Essayez-le en ligne!
Explication
D'autres programmes avec le même nombre d'octets incluent
la source
"{x^x_x}"
qu'on peut réduire ._.PowerShell ,
4435 octetsEssayez-le en ligne!
Utilise la multiplication de chaînes à plusieurs reprises
-replace
x
avec les sous-scripts et les super-scripts, puis sort.Enregistré 9 octets grâce à Joey.
la source
"'x'"+"-replace'x','{x^x_x}'"*5|iex
c'est un peu plus simple, non?MATL ,
2120 octets-1 octet grâce à Giuseppe
Essayez-le en ligne!
la source
'x'XJ5:"J'{x^x_x}'Zt
ou même5pc5:"5pc'{x^x_x}'Zt
JavaScript (ES6),
454237 octetsEdit: enregistré
32 octets grâce à @Arnauld. La spécification de 5 me coûte encore 2 octets; cette version414035 octets prend un paramètre à la place:la source
05AB1E , 13 octets
Essayez-le en ligne!
Port de ma réponse Python 2.
la source
Gelée , 12 octets
Essayez-le en ligne!
Port de ma réponse Python 2.
la source
Japt ,
212018 octetsEssaye-le
Explication
Générez un tableau de longueur 5 et mappez dessus.
Fractionner une chaîne en un tableau de caractères
Rejoin (
q
) à une chaîne en utilisant la valeur actuelle deU
ou (ª
)"x"
.Attribuez le résultat à
U
.Récupère le dernier élément du tableau.
Alternatives, 18 octets
Identique à ci-dessus mais en réduisant le tableau après sa création.
Essaye-le
L'option récursive.
Essaye-le
la source
Java (OpenJDK 8) ,
179167 octets@Neil port
Essayez-le en ligne!
la source
t
comme une vraie fonction au lieu d'une lambdat.apply(1)
devrait l'être à lat.apply(new Integer(a[0]))
place. Mais pourquoi ne pas simplement publier une méthode?String t(int n){return n>0?t(n-1).replace("x","{x^x_x}"):"x";}
Et si l'exigence du défi était un programme complet (ce qui n'est pas le cas), l'utilisation d'une méthode récursive Java 7 serait plus courte qu'un lambda:interface Y{static void main(String[]a){System.out.print(t(new Integer(a[0])));}static String t(int n){return n>0?t(n-1).replace("x","{x^x_x}"):"x";}}
Wolfram Language ( Mathematica ) - 40 caractères
Résumant les 3 meilleures réponses ici :
40 octets:
41 octets:
44 octets:
la source
C (gcc) , 82 octets
Essayez-le en ligne!
la source
Pyth,
171613 octetsEssayez-le en ligne!
Traduction Python 3:la source