ASCII केली ग्राफ


26

एक अलग चुनौती के लिए कुछ शोध करते हुए, मैं एक केली ग्राफ में आया , विशेष रूप से यह । चूँकि मैं शीर्ष चुनौती लेखकों में से एक हूँ , निश्चित रूप से मुझे इसके लिए ASCII कला चुनौती देनी थी।

आपकी चुनौती इस प्रकार है कि दो जनरेटर पर मुक्त समूह के केली ग्राफ के इस ASCII कला चित्रण का निर्माण किया जाए:

                                               +                                               
                                              +++                                              
                                             + | +                                             
                                            ++-+-++                                            
                                             + | +                                             
                                          +    |    +                                          
                                         +++   |   +++                                         
                                        + |    |    | +                                        
                                       ++-+----+----+-++                                       
                                        + |    |    | +                                        
                                         +++   |   +++                                         
                                          +    |    +                                          
                                   +           |           +                                   
                                  +++          |          +++                                  
                                 + | +         |         + | +                                 
                                ++-+-++        |        ++-+-++                                
                                 + | +         |         + | +                                 
                              +    |           |           |    +                              
                             +++   |           |           |   +++                             
                            + |    |           |           |    | +                            
                           ++-+----+-----------+-----------+----+-++                           
                            + |    |           |           |    | +                            
                             +++   |           |           |   +++                             
                              +    |           |           |    +                              
                                 + | +         |         + | +                                 
                                ++-+-++        |        ++-+-++                                
                                 + | +         |         + | +                                 
                    +             +++          |          +++             +                    
                   +++             +           |           +             +++                   
                  + | +                        |                        + | +                  
                 ++-+-++                       |                       ++-+-++                 
                  + | +                        |                        + | +                  
               +    |    +                     |                     +    |    +               
              +++   |   +++                    |                    +++   |   +++              
             + |    |    | +                   |                   + |    |    | +             
            ++-+----+----+-++                  |                  ++-+----+----+-++            
             + |    |    | +                   |                   + |    |    | +             
              +++   |   +++                    |                    +++   |   +++              
               +    |    +                     |                     +    |    +               
        +           |                          |                          |           +        
       +++          |                          |                          |          +++       
      + | +         |                          |                          |         + | +      
     ++-+-++        |                          |                          |        ++-+-++     
      + | +         |                          |                          |         + | +      
   +    |           |                          |                          |           |    +   
  +++   |           |                          |                          |           |   +++  
 + |    |           |                          |                          |           |    | + 
++-+----+-----------+--------------------------+--------------------------+-----------+----+-++
 + |    |           |                          |                          |           |    | + 
  +++   |           |                          |                          |           |   +++  
   +    |           |                          |                          |           |    +   
      + | +         |                          |                          |         + | +      
     ++-+-++        |                          |                          |        ++-+-++     
      + | +         |                          |                          |         + | +      
       +++          |                          |                          |          +++       
        +           |                          |                          |           +        
               +    |    +                     |                     +    |    +               
              +++   |   +++                    |                    +++   |   +++              
             + |    |    | +                   |                   + |    |    | +             
            ++-+----+----+-++                  |                  ++-+----+----+-++            
             + |    |    | +                   |                   + |    |    | +             
              +++   |   +++                    |                    +++   |   +++              
               +    |    +                     |                     +    |    +               
                  + | +                        |                        + | +                  
                 ++-+-++                       |                       ++-+-++                 
                  + | +                        |                        + | +                  
                   +++             +           |           +             +++                   
                    +             +++          |          +++             +                    
                                 + | +         |         + | +                                 
                                ++-+-++        |        ++-+-++                                
                                 + | +         |         + | +                                 
                              +    |           |           |    +                              
                             +++   |           |           |   +++                             
                            + |    |           |           |    | +                            
                           ++-+----+-----------+-----------+----+-++                           
                            + |    |           |           |    | +                            
                             +++   |           |           |   +++                             
                              +    |           |           |    +                              
                                 + | +         |         + | +                                 
                                ++-+-++        |        ++-+-++                                
                                 + | +         |         + | +                                 
                                  +++          |          +++                                  
                                   +           |           +                                   
                                          +    |    +                                          
                                         +++   |   +++                                         
                                        + |    |    | +                                        
                                       ++-+----+----+-++                                       
                                        + |    |    | +                                        
                                         +++   |   +++                                         
                                          +    |    +                                          
                                             + | +                                             
                                            ++-+-++                                            
                                             + | +                                             
                                              +++                                              
                                               +                                               

इनपुट

कोई इनपुट नहीं, जब तक कि आपकी भाषा को स्पष्ट रूप से चलाने के लिए इनपुट की आवश्यकता न हो।

उत्पादन

ASCII कला प्रतिनिधित्व ऊपर दिखाया गया है।

एमडी 5 हैशिंग

चूंकि यह एक बहुत बड़ा आउटपुट है, अपने काम को जांचने के लिए यहां आउटपुट के कुछ एमडी 5 हैश हैं (सभी यूटीएफ -8 बिना बीओएम के हैं):

  • स्क्वायर स्पेस पैडिंग, CR/LFलाइनफीड, और अनुगामी न्यूलाइन - 954B93871DAAE7A9C05CCDF79B00BF3C- यह उपर्युक्त प्रयोग है।
  • स्क्वायर स्पेस पैडिंग, CR/LFलाइनफीड, कोई अनुगामी न्यूलाइन -28405EF91DA305C406BD03F9275A175C
  • स्क्वायर स्पेस पैडिंग, LFलाइनफीड, और अनुगामी न्यूलाइन -8CA65FB455DA7EE5A4C10F25CBD49D7E
  • स्क्वायर स्पेस पैडिंग, LFलाइनफीड, कोई अनुगामी न्यूलाइन -FDB1547D68023281BB60DBEC82C8D281
  • कोई अनुगामी स्थान, CR/LFलाइनफीड, और अनुगामी न्यूलाइन -77FDE8CE5D7BD1BDD47610BA23264A19
  • कोई अनुगामी स्थान, CR/LFलाइनफीड, कोई अनुगामी न्यूलाइन -EAD390C3EFD37F0FCACE55A84B793AB5
  • कोई अनुगामी स्थान, LFलाइनफीड, और अनुगामी न्यूलाइन -1F6CAB740F87881EB2E65BED65D08C36
  • कोई अनुगामी स्थान, LFलाइनफीड, कोई अनुगामी न्यूलाइन -7D41CE1E637619FEA9515D090BFA2E9C
  • यदि कोई अतिरिक्त MD5 है जो आप तुलना के लिए चाहते हैं, तो कृपया मुझे बताएं और मैं इसे बनाऊंगा और चुनौती को अपडेट करूंगा।

नियम

  • लीडिंग या अनुगामी newlines या व्हाट्सएप सभी वैकल्पिक हैं, जब तक कि वर्ण खुद को सही ढंग से पंक्तिबद्ध करते हैं।
  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं। यदि कोई फ़ंक्शन है, तो आप इसे प्रिंट करने के बजाय आउटपुट वापस कर सकते हैं।
  • यदि संभव हो, तो कृपया ऑनलाइन परीक्षण वातावरण का लिंक शामिल करें ताकि अन्य लोग आपके कोड को आज़मा सकें!
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।

मुझे थोड़ा आश्चर्य है कि यह किसी भी तरह से पैरामीट्राइज़ नहीं है - ऐसा लगता है जैसे यह एक क्रम में छठा होना चाहिए।
नील

यह अराजकता गोल्फ चुनौती बहुत समान है।
DJMcMayhem

@ नील मैंने ऐसा करने पर विचार किया था, लेकिन इस डर के खिलाफ फैसला किया कि यह थोड़ा लाभ पाने के लिए कठिनाई को बहुत बढ़ा देगा।
AdmBorkBork

की रन की तरह दिखता है -/ |एस सूत्र का पालन (2<<n)-n-2करने के बजाय (1<<n)-1है जो क्या अपने मूल अनुमान हो गया होता।
नील

@ नील वे वास्तव में ईयूलियन नंबर हैं , क्योंकि यह सबसे अच्छा सौंदर्य प्रदान करता है।
AdBBorkBork

जवाबों:


9

जावास्क्रिप्ट (ईएस 6), 204 195 188 180 बाइट्स

f=
_=>[...Array(9119)].map((_,i)=>~i%96?g(48+~(i/96),47-i%96,5):`
`,g=(x,y,z,n=(1<<z)-z)=>x|y?(x=x<0?-x:x)+(y=y<0?-y:y)<n?` |-+`[2*!x+!y]:z--?x>y?g(x-n,y,z):g(x,y-n,z):` `:`+`).join``
;document.write(`<pre>`+f())

स्क्वायर स्पेस पैडिंग, LF लाइनफीड, और कोई अनुगामी न्यूलाइन नहीं है, हालाँकि मैंने MD5 की जाँच नहीं की है।

f=
m=>[...Array((w=(4<<m)-m*-~m-2)*~-w)].map((_,i)=>~i%w?g(w/2+~(i/w),w/2-i%w-1,m):`
`,g=(x,y,z,n=(1<<z)-z)=>x|y?(x=x<0?-x:x)+(y=y<0?-y:y)<n?` |-+`[2*!x+!y]:z--?x>y?g(x-n,y,z):g(x,y-n,z):` `:`+`).join``
<input type=number min=0 oninput=o.textContent=f(this.value)><pre id=o>+

222 216 207 199 बाइट्स के लिए पैरामीटर संस्करण । स्पष्टीकरण: आउटपुट आकार 9119 ASCII वर्ण हैं, जिसमें 46 newlines शामिल हैं। (पैरामीट्रिज्ड संस्करण के लिए, आउटपुट आकार की गणना अनुगामी न्यूलाइन सहित की जाती है।) प्रत्येक वर्ण को व्यक्तिगत रूप से निर्धारित किया जाता है, सबसे पहले यह जाँच कर कि क्या कोई नई लाइन है, अन्यथा फाइनल के मध्य में मूल के सापेक्ष निर्देशांक पर एक फ़ंक्शन को कॉल करके। आरेख। फ़ंक्शन पुनरावर्ती रूप से प्रत्येक आकार के निकटतम क्रॉस के बिंदु पर बिंदु की जांच करता है, और इस बिंदु के आधार पर उपयुक्त चरित्र लौटाता है कि बिंदु को क्रॉस के केंद्र या अक्ष पर झूठ की खोज की जाती है या नहीं।


7

रोड़ा , 284 280 238 234 बाइट्स

{a=[1,-1]t=[]seq 1,95|t+=[" "]*95,_
f={|x,y,i,d|{s=[27,12,5,2,1][i]i++
a|{|j|{seq y,y+s*j|t[_][x]="|"f x,y+s*j,i,2-j}if[d!=2+j]}_
a|{|j|{seq x,x+s*j|t[y][_]="-"f x+s*j,y,i,3-j}if[d!=3+j]}_}if[i<5]
t[y][x]="+"}f 47,47,0,0
t|print _&""}

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

यह एक अनाम फ़ंक्शन है। मैंने सेमीकॉलन के बजाय नईलाइनों का उपयोग किया है इसलिए यह बहुत अच्छी तरह से स्वरूपित है!

पुनरावर्ती फ़ंक्शन fग्राफ़ को दो-आयामी सरणी में बनाता है t, जो तब अंतिम पंक्ति में मुद्रित होता है।

मुझे 27,12,5,2,1कुछ बाइट्स में गणना करने का तरीका नहीं मिला , इसलिए वे हार्ड-कोडेड हैं।


क्या 2 की शक्तियों की गणना करने का कोई तरीका नहीं है?
नील

@ Neil A b_shiftlऑपरेटर मौजूद है, लेकिन इस कार्यक्रम में इसका उपयोग करना बहुत लंबा है, मुझे लगता है।
fergusq

केवल एक चीज जो मैं सोच सकता हूं वह है शायद आधार -3? Dunno कितना अच्छा बेस रूपांतरण पर है, हालांकि ... 10000110001200020001-> 1168671727संदेह है कि आप परिवर्तित कर सकते हैं और 2 बाइट्स से कम के साथ विभाजित कर सकते हैं, हालांकि ...
मैजिक ऑक्टोपस Urn

3

चारकोल , 50 43 बाइट्स

F³²⁴«P++↷AE…¹¦⁵∧¬﹪ιX³κ⁻X²⁺κ¹⁺κ²εF⁺ε⮌ε¿κ«+κ↶

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। मैंने मूल रूप से विभिन्न प्रतिबिंबों और रोटेशन की कोशिश की, लेकिन वे या तो वह नहीं करते जो मैं चाहता हूं या कुछ मामलों में छोटी गाड़ी थी। मैंने तब एक नेस्टेड लूप अप्रोच की कोशिश की थी, लेकिन मैंने अब इस पुनरावृत्ति विधि पर स्विच कर दिया है, जो कि प्रत्येक इनर क्रॉस के बीच कई लाइनों को खींचकर काम करता है, जो इस बात पर निर्भर करता है कि चरण संख्या 3 की कितनी शक्तियाँ विभाज्य हैं। यह केवल 4 बाइट्स की लागत पर एक आकार पैरामीटर को स्वीकार करने के लिए आसानी से संशोधित किया जा सकता है:

NβF×⁴X³β«P++↷AE…·¹β∧¬﹪ιX³κ⁻X²⁺κ¹⁺κ²εF⁺ε⮌ε¿κ«+κ↶

संपादित करें: मैंने तब से काम किया है कि RotateShutterOverlapइस कार्य को प्राप्त करने के लिए कैसे उपयोग किया जाए, लेकिन नाराज होकर मुझे 44 बाइट्स लेने पड़ते हैं:

A⁰ηF⁶«AηγA⁻⁺X²ιηιηJη⁰P-γ+¿γ⟲SO²⁶⁻×²γ¹»‖⟲SO⁹⁵

यदि RotateShutterOverlapएक चर घूर्णन पूर्णांक को स्वीकार किया जाता है, जो इसे 40 बाइट्स तक कम करेगा:

A⁰ηF⁶«A∨η¹γA⁻⁺X²ιηιηJη⁰P+γ+⟲SO⎇‹ι⁵Lβ²⁴⁶γ

जैसा कि यह है, एक रोटेशन सूची पैरामीटर का उपयोग करने में 45 बाइट्स लगते हैं:

A⁰ηF⁶«A∨η¹γA⁻⁺X²ιηιηJη⁰P+γ+⟲SO⟦⁶ײ⁺¹⁼⁵ι⟧⁻ײγ¹

यह मुझे धोखा देने जैसा लगता है। : पी
हाइपरनेत्रिनो

@ HyperNeutrino थोड़ा कम हार्डकोड संस्करण: इसे ऑनलाइन आज़माएं! या यह है कि आप क्या मतलब नहीं था?
नील

: PI का मतलब है कि यह रास्ता बहुत छोटा है और चारकोल के लिए बहुत आसान है: P
HyperNeutrino

@ नील: ओ यह अद्भुत है! मैं सोच रहा था कि क्या आप एक छोटी गाड़ी प्रतिबिंब / रोटेशन का उदाहरण दे सकते हैं ताकि मैं इसे ठीक कर
ASCII-only

@ ASCII- केवल छोटी गाड़ी प्रतिबिंब के मामले में, मुझे लगता है कि केवल एक विकर्ण प्रतिबिंब काम कर रहा था, लेकिन मुझे याद नहीं है कि कौन सा। मुझे लगता है कि त्रुटि एक अपरिभाषित चर थी (शायद बहुत अधिक कोपिस्टा)।
नील

2

05AB1E , 620 बाइट्स

•1dOœ˜‘Av–Qs†ƒFã&äuÌʹÝ2býádÙI’´Ëœ¼)Y»+™ß›[Vg“Ò¢Jù1no<V<*Ét*-¢&â-ßBÆ×090`11-øsµ–¶1VÛ==ü:¼÷ØûÍZ„æ¹=#ùÞV«¡fä&Έ'ëˆÝ=ä^‰¤?Êçù!ØèØr-3îÛ+êò‚û¢½°BéG¦U”Ü1žˆr6S‹“ŽKRK°A¹ª¿â9]}×u¬]ž„Îï›V¦Â¶4Ãï¢v£×é´Ü2Äžiqô>§17F*ÎañníÆ4]s8mÏ›HSÏ771í´‰d3´Þ|À]Uà{þñýqø’e„XÿF4–:Yl&uqžÍÒÿ¾u9¤jóHP‰çêoÒNŠX-°xpÒÿ*ejÏD0Ë+GnÊ-/§3ÜJÙˆƒÌ=ŒÒOX‰|O%wæ[n‹ã4)ôF+~´Ö{aÄ$(Þí¼”÷u–qÿBòfÂíÜìTó–xÝwû¾])<§O«\‚e°‡¾‹K…ZDPô;µ!ò&Ô¼¨1gŠ—Ÿ¦©zW¢¾×4K±ÔÄ_ìûÄ‚3¶Ñ>‚bùn±œ×)ÙCâRö裶”ˆ1ßÑֱͮ[ZéRïyÓxÓE¨cW˜{Ã’ùoE›¥ÚvA¨‹êÆýÑY½RÎ5´‘Ê™uåÄr"ãYð÷I!0¤)å‡ëž”>úèWò}é€@.ØñÈQ€ñ{Á„‘Ü’‰~Çñ=…|“ڃĬcóÇkþÛÇ–š;{¡¦½ÕrÎé–àTz€Kì2à^|¢èˆÎxž“å$œ2ô»EidœþFrSS¥ÝÜ—X¡á~îþQ˜NÜGñ¥Q)aè•4B"1230"" +-|"‡48ôû€û»

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

मैंने जो भी किया वह पैटर्न को चौथे में काट दिया गया, प्रतीकों को बेस -4 में बदल दिया, पैटर्न के 1/4 को बेस -214 में संकुचित कर दिया और फिर इसे समरूपता की तर्ज पर फ़्लिप कर दिया। मैं वास्तविक एल्गोरिथ्म का उपयोग करते हुए कुछ होशियार काम कर रहा हूं, लेकिन जब तक मैं खत्म नहीं करता कि यह वही है जो मेरे लिए यहां होगा।


4
अब तक का सबसे बड़ा 05AB1Eजवाब मैंने देखा है। एक्सडी आमतौर पर इस भाषा में उत्तरों के साथ 620 के बजाय 6.20 के करीब है। ;)
केविन क्रूज़सेन

@KevinCruijssen अगर यह 4 पुनरावृत्ति के लिए पूछ रहा था, तो यह बहुत छोटा है। अभी भी 05AB1E में वास्तविक एल्गोरिथ्म पर काम कर रहा हूं ... जितना मैंने सोचा था उससे कहीं अधिक कठिन।
मैजिक ऑक्टोपस Urn

2

पायथन 3, 264 बाइट्स

def F(g,p,d,k):
 for c in'-|'[d.real!=0]*(2**k-k-1):g[p]=c;p+=d
 P(g,p,k-1)
def P(g,p,k):
 if'+'==g.setdefault(p,'+')and k:
  for d in[1,1j,-1,-1j]:F(g,p+d,d,k)
g={}
P(g,0j,5)
print('\n'.join(''.join(g.get(r+c*1j,' ')for c in range(-47,48))for r in range(-47,48)))

पारस्परिक रूप से पुनरावर्ती कार्यों की एक जोड़ी का उपयोग करता है। F रेखाएँ खींचता है और P '+' को सम्मिलित करता है। अधिक गोल्फ हो सकता है, लेकिन अभी के लिए समय से बाहर।


1

सी, 236 बाइट्स

char t[95][95],i=95;f(x,y,s,n,m){if(t[y][x]<33){m=~s+(1<<s);for(n=~m;n++<m;)t[y][x+n]='-',t[y+n][x]=n==0?'+':'|';if(s--)f(x+n,y,s),f(x-n,y,s),f(x,y+n,s),f(x,y-n,s);}}main(){memset(t,32,9025);f(47,47,5);while(i--)printf("%.95s\n",t[i]);}

बस चरित्र तालिका बनाने से पहले इसे प्रदर्शित करने से पहले।

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

धन्यवाद @ मुझे यह एहसास दिलाने के लिए कि शाखाओं की लंबाई एक वास्तविक नियम का पालन करती है।

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