TeX को Sierpinski Triangle Fractal टाइप करने के लिए जनरेट करें


30

चुनौती

कोड लिखिए जो TeX (LaTeX) गणित-समीकरण कोड (नीचे दिए गए) को आउटपुट करता है जो 5 स्तरों के Sierpinski Triangle Fractal टाइप करेगा। सबसे छोटा कोड जीतता है

विवरण

TeX (और दोस्तों जैसे LaTeX, आदि) एक परिष्कृत टाइपसेटिंग प्रणाली है। यह गणितीय सूत्रों के लिए मनमाने ढंग से नेस्टेड जटिल अभिव्यक्तियों को प्रस्तुत कर सकता है। संयोग से यह "नेस्टेड कॉम्प्लेक्स" भी भग्न का वर्णनात्मक है। निम्नलिखित MathJaX के साथ प्रस्तुत किया गया है

एक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्सएक्स

नेस्टेड सुपर और उप-स्क्रिप्ट से मिलकर निम्नलिखित सादे-पाठ गणित-समीकरण कोड द्वारा:

{{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}^{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}_{{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}^{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}_{{{x^x_x}^{x^x_x}_{x^x_x}}^{{x^x_x}^{x^x_x}_{x^x_x}}_{{x^x_x}^{x^x_x}_{x^x_x}}}}}

ध्यान दें कि यह केवल 5-स्तरीय नेस्टिंग है। आपको TeX & Co. में एक गणित समीकरण को शुरू / समाप्त करने के लिए उत्पन्न $...$या $$...$$अन्य मार्कअप की आवश्यकता नहीं है। आप उदाहरण के लिए, कई ऑनलाइन संपादकों में TeX उत्पन्न का पूर्वावलोकन कर सकते हैं : http://www.hostmath.com लेकिन आप कई पा सकते हैं दूसरों को भी। यह सवाल दोस्तों के साथ एक चर्चा से प्रेरित था ।

अद्यतन करें

एक समान प्रश्न है, लेकिन यह बहुत अधिक सामान्य है और विभिन्न समाधानों का उत्पादन करेगा। मैं एक बहुत ही सरल कोड के लिए वास्तव में kolmogorov-complexity देखना चाहता था कि एक सिस्टम में (TeX) पूरी तरह से स्पष्ट है जबकि दूसरे में संपीड़ित। यह भी n5 स्तरों टिप्पणी के बजाय संबोधित करते हैं ।


2
नमस्ते; मैंने आपके प्रश्न को एक डुप्लिकेट के रूप में बंद कर दिया क्योंकि मेरा मानना ​​है कि इस प्रश्न का उत्तर देने के लिए अन्य प्रश्न से उत्तर बहुत ही मामूली रूप से संशोधित किए जा सकते हैं। हालांकि, मुझे यह विचार पसंद है और मुझे लगता है कि यह बहुत अच्छा लग रहा है! :)
HyperNeutrino

2
For what it's worth, I reopened this question as I do not see the code as being trivially modifiable to translate from one to the other.
AdmBorkBork

4
That's far too quick to be accepting a solution!
Shaggy


2
When I saw this challenge, this answer came to my mind... codegolf.stackexchange.com/a/6830/67961 and... it was yours
J42161217

जवाबों:




14

plain TeX, 29 bytes

\def~#1x{{#1x_#1x^#1x}}~~~~~x

That outputs what others have output. But if we need the code to be compilable it would be 6 bytes more

\def~#1x{{#1x_#1x^#1x}}$~~~~~x$\bye

Explanation

~ is an active character in TeX, so we can give it a (new) definition.

\def~#1x{{#1x_#1x^#1x}} defines ~ as a macro, so that when TeX sees ~, it does the following:

  • Read everything up to the next x, and call that #1 (pattern-matching).
  • Replace the whole thing with {#1x_#1x^#1x}

For example, ~ABCx would get replaced with {ABCx_ABCx^ABCx}.

When ~~~~~x is used, #1 is ~~~~, so the whole thing gets replaced with {~~~~x_~~~~x^~~~~x}. And so on.

एक बार हमारे पास लंबी स्ट्रिंग है, हम इसे टर्मिनल के साथ प्रिंट कर सकते हैं \message (और एक \byeटीईएक्स स्टॉप के साथ समाप्त होता है ), इसलिए \message{~~~~~x}\bye। या परिणामस्वरूप अभिव्यक्ति (एक गणितीय सूत्र के रूप में) टाइप करें, इसे $एस में आसपास से $~~~~~x$\bye


क्षमा करें, अगर कुछ गलत है, तो पहले यहाँ उत्तर दें।
मैनुअल

एक बड़े n(बल्कि 5) के लिए यह एक मैक्रो बनाने के लिए अधिक कुशल हो सकता है जो लेखन के बजाय nटिल्ड की एक सूची का उत्पादन करता है । साथ ही यह बेहतर होगा कि यदि पूरी अभिव्यक्ति अंडरसेट हो । ~~~~~~\scriptscriptstyle
मैनुअल

अच्छी चाल ... अगर आप एक जोड़ते हैं, तो आप एक स्पष्टीकरण, या मन जोड़ सकते हैं? यह TeX मैक्रोज़ में पैटर्न-मिलान की एक अच्छी विशेषता को दर्शाता है, जो कि कई भाषाओं (जो मुझे पता है) के लिए सामान्य नहीं है।
श्रीवत्सआर

मैं इसे जोड़ूंगा, लेकिन बेझिझक संपादित कर सकता हूं।
मैनुअल

उफ़, आपकी टिप्पणी नहीं देखी ... एक बहुत ही समान स्पष्टीकरण जोड़ा; बेझिझक अस्वीकार करें। अच्छा जवाब के लिए +1!
श्रीवत्सआर

4

05AB1E , 17 बाइट्स

'x5F'x¡"{x^x_x}"ý

इसे ऑनलाइन आज़माएं!

व्याख्या

'x                  # push "x"
  5F                # 5 times do
    'x¡             # split on "x"
       "{x^x_x}"ý   # join on "{x^x_x}"

एक ही बाइट-गिनती में अन्य कार्यक्रमों में शामिल हैं

"{x^x_x}"©4F'x¡®ý
'x5F'x"{x^x_x}".:

मुझे लगता है कि "{x^x_x}"कम किया जा सकता है ।_
मैजिक ऑक्टोपस उर्फ़

4

पॉवरशेल ,  44  35 बाइट्स

"'x'"+"-replace'x','{x^x_x}'"*5|iex

इसे ऑनलाइन आज़माएं!

बार-बार -replace xउप और सुपर-स्क्रिप्ट के साथ स्ट्रिंग गुणा का उपयोग करता है , फिर आउटपुट।

जॉय की बदौलत 9 बाइट्स बचाए।


"'x'"+"-replace'x','{x^x_x}'"*5|iexथोड़ा आसान है, नहीं?
जॉय

@ जोये ओह, यह करने का एक चतुर तरीका है। धन्यवाद!
AdmBorkBork


2

जावास्क्रिप्ट (ईएस 6), 45 42 37 बाइट्स

f=n=>n>4?'x':[...'{^_}'].join(f(-~n))

संपादित करें: @Arnauld के लिए 3 3 बाइट्स सहेजे गए। 5 को निर्दिष्ट करना अभी भी मुझे 2 बाइट्स की लागत देता है; यह 41 40 35-बाइट संस्करण इसके बजाय एक पैरामीटर लेता है:

f=n=>n?[...'{^_}'].join(f(n-1)):'x'



2

जाप , 21 20 18 बाइट्स

5Æ="\{^_}"¬qUª'xÃÌ

झसे आज़माओ


व्याख्या

5Æ             Ã

लंबाई 5 की एक सरणी उत्पन्न करें और उस पर मैप करें।

"\{^_}"¬

एक स्ट्रिंग को वर्णों की एक सरणी में विभाजित करें

qUª'x

पुन: शामिल ( q) एक स्ट्रिंग के वर्तमान मूल्य का उपयोग करने Uया ( ª) "x"

=

के परिणाम को निरुपित करें U

Ì

सरणी में अंतिम तत्व प्राप्त करें।


विकल्प, 18 बाइट्स

ऊपर जैसा है, लेकिन इसे बनाए जाने के बाद सरणी को कम करना।

5o r@"\{^_}"¬qX}'x

झसे आज़माओ

पुनरावर्ती विकल्प।

>4©'xª"\{^_}"¬qßUÄ

झसे आज़माओ


1

जावा (ओपनजेडके 8) , 179 167 बाइट्स

@ नील पोर्ट

interface Y{static void main(String[]a){System.out.println(t.apply(1));}java.util.function.Function<Integer,String>t=N->N>0?Y.t.apply(N-1).replace("x","{x^x_x}"):"x";}

इसे ऑनलाइन आज़माएं!


मुझे लगता है कि आपको tएक मेमने के बजाय एक वास्तविक फंक्शियो के रूप में लिखना कम है
रोमन ग्रैफ़

यदि आप एक संपूर्ण कार्यक्रम का उपयोग करते हैं, t.apply(1)तो t.apply(new Integer(a[0]))इसके बजाय होना चाहिए । लेकिन सिर्फ एक विधि क्यों नहीं? String t(int n){return n>0?t(n-1).replace("x","{x^x_x}"):"x";}और अगर चुनौती की आवश्यकता एक पूर्ण कार्यक्रम होगा (जो नहीं है), जावा 7 पुनरावर्ती विधि का उपयोग करना 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";}}
लंबोदर

0

वोल्फ्राम भाषा ( गणितज्ञ ) - 40 वर्ण

संक्षेप में 3 सबसे अच्छे उत्तर यहां दिए गए हैं :

40 बाइट्स:

Nest["{"<>#<>"_"<>#<>"^"<>#<>"}"&,"x",5]

41 बाइट्स:

Nest[StringReplace["x"->"{x^x_x}"],"x",5]

44 बाइट्स:

Last@SubstitutionSystem["x"->"{x^x_x}","x",5]

3
अपनी खुद की चुनौती का जवाब देने की अनुशंसा नहीं की जाती है, दूसरों को कुछ दिन पहले छोड़ने के बिना।
श्री एक्सकोडर

1
क्या आपके पहले कोड स्निपेट को 41 बाइट्स की आवश्यकता नहीं है?
जोनाथन फ्रेच

@ Mr.Xcoder माफी, संपादक के रूप में अपना जवाब पोस्ट करने के लिए एक विकल्प के रूप में सुझाव दिया। क्या मुझे अपना उत्तर हटा देना चाहिए?
विटालि कौरोव

@VitaliyKaurov मुझे लगता है कि आपको चाहिए, अन्य उपयोगकर्ताओं को यह बुरी तरह से प्राप्त होगा।
श्री एक्सकोडर


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.