Herausforderung
Schreiben Sie Code, der TeX (LaTeX) -Mathematik-Gleichungscode (siehe unten) ausgibt, der Sierpinski Triangle Fractal mit 5 Ebenen setzt. Kürzester Code gewinnt .
Einzelheiten
TeX (und Freunde wie LaTeX usw.) ist ein ausgeklügeltes Schriftsatzsystem. Es kann beliebige verschachtelte komplexe Ausdrücke für mathematische Formeln rendern. Zufälligerweise beschreibt dieser "verschachtelte Komplex" auch Fraktale. Folgendes wird mit MathJaX gerendert
durch den folgenden Klartext-Mathe-Gleichungscode, der aus verschachtelten Über- und Unterskripten besteht:
{{{{{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}}}}}
Beachten Sie, dass dies nur eine 5-stufige Verschachtelung ist. Sie müssen nicht generieren müssen $...$
oder $$...$$
können eine mathematische Gleichung in TeX & Co. Sie erzeugt TeX zum Beispiel in vielen Online - Redakteure, eine Vorschau oder andere Markup erforderlich , um Start / Ende: http://www.hostmath.com aber man kann viele finden auch andere. Diese Frage wurde durch eine Diskussion mit Freunden inspiriert .
Aktualisieren
Es gibt eine ähnliche Frage, die jedoch viel allgemeiner ist und unterschiedliche Lösungen hervorbringt. Ich wollte wirklich Kolmogorov-Komplexität für einen sehr festen einfachen Code sehen, der in einem System (TeX) vollständig explizit ist, während in einem anderen komprimiert. Dies betrifft auch den n
Kommentar mit statt 5 Ebenen.
quelle
Antworten:
SOGL V0.12 ,
1612 BytesProbieren Sie es hier aus!
Hafen von Erik The Outgolfer's Python 2 Antwort
quelle
Python 2 , 32 Bytes
Probieren Sie es online!
quelle
normaler TeX, 29 Bytes
Das gibt aus, was andere ausgegeben haben. Aber wenn wir den Code brauchen, um kompilierbar zu sein, wären es 6 Bytes mehr
Erläuterung
~
ist ein aktiver Charakter in TeX, daher können wir ihm eine (neue) Definition geben.\def~#1x{{#1x_#1x^#1x}}
Wird~
als Makro definiert , sodass TeX beim Anzeigen~
Folgendes ausführt:x
und nennen Sie das#1
(Mustervergleich).{#1x_#1x^#1x}
~ABCx
Würde zum Beispiel durch ersetzt werden{ABCx_ABCx^ABCx}
.Wenn
~~~~~x
verwendet wird,#1
wird~~~~
das Ganze durch ersetzt{~~~~x_~~~~x^~~~~x}
. Und so weiter.Sobald wir den langen String haben, können wir ihn zum Terminal mit ausdrucken
\message
(und mit\bye
so TeX aufhören), also\message{~~~~~x}\bye
. Oder setzen Sie den resultierenden Ausdruck (als mathematische Formel), indem Sie ihn in$
s: so umgeben$~~~~~x$\bye
.quelle
n
(anstatt5
) könnte es effizienter sein, ein Makro zu erstellen, das eine Liste vonn
Tilden ausgibt,~
anstatt zu schreiben~~~~~
. Außerdem würde es besser aussehen, wenn der gesamte Ausdruck unter gesetzt ist\scriptscriptstyle
.05AB1E , 17 Bytes
Probieren Sie es online!
Erläuterung
Andere Programme mit derselben Byteanzahl umfassen
quelle
"{x^x_x}"
kann reduziert werden.PowerShell ,
44-35ByteProbieren Sie es online!
Verwendet die String-Multiplikation, um sie
-replace
x
mit den Unter- und Über-Skripten zu wiederholen und dann auszugeben.9 Bytes gespart dank Joey.
quelle
"'x'"+"-replace'x','{x^x_x}'"*5|iex
ist ein bisschen einfacher, nein?MATL ,
2120 Bytes-1 Byte danke an Giuseppe
Probieren Sie es online!
quelle
'x'XJ5:"J'{x^x_x}'Zt
oder sogar5pc5:"5pc'{x^x_x}'Zt
JavaScript (ES6),
454237 ByteBearbeiten:
32 Bytes dank @Arnauld gespeichert. Die Angabe von 5 kostet mich immer noch 2 Byte. diese414035-Bit - Version benötigt einen Parameter statt:quelle
05AB1E , 13 Bytes
Probieren Sie es online!
Port meiner Python 2 Antwort.
quelle
Gelee , 12 Bytes
Probieren Sie es online!
Port meiner Python 2 Antwort.
quelle
Japt ,
212018 BytesProbier es aus
Erläuterung
Generieren Sie ein Array der Länge 5 und ordnen Sie es zu.
Teilen Sie eine Zeichenfolge in ein Array von Zeichen
Verbinden Sie (
q
) mit dem aktuellen Wert vonU
oder (ª
) wieder mit einer Zeichenfolge"x"
.Weisen Sie das Ergebnis davon zu
U
.Holen Sie sich das letzte Element im Array.
Alternativen, 18 Bytes
Wie oben, aber das Array nach der Erstellung verkleinern.
Probier es aus
Die rekursive Option.
Probier es aus
quelle
Java (OpenJDK 8) ,
179167 Bytes@ Neil Port
Probieren Sie es online!
quelle
t
als echte Funktion statt als Lambda zu schreibent.apply(1)
sollte diest.apply(new Integer(a[0]))
stattdessen sein. Aber warum nicht einfach eine Methode posten?String t(int n){return n>0?t(n-1).replace("x","{x^x_x}"):"x";}
Und wenn die Anforderung für die Herausforderung ein vollständiges Programm wäre (was nicht der Fall ist), wäre die Verwendung einer rekursiven Java 7-Methode kürzer als ein 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 Zeichen
Zusammenfassend 3 besten Antworten hier :
40 Bytes:
41 Bytes:
44 Bytes:
quelle
C (gcc) , 82 Bytes
Probieren Sie es online!
quelle
Pyth,
171613 BytesProbieren Sie es online!
Python 3 Übersetzung:quelle