ड्रा एक Sierpinski त्रिकोण


43

Sierpinsky त्रिभुज त्रिभुज को खींचकर बनाया गया एक भग्न है, जिसकी ऊँचाई और चौड़ाई 1/2 से कम हो जाती है, जिसके परिणामस्वरूप त्रिभुज की 3 प्रतियाँ बन जाती हैं, और उन्हें ऐसे प्रत्येक त्रिभुज को एक कोने पर अन्य दो को छूता है। यह प्रक्रिया बार-बार दोहराई जाती है, जिसके परिणामस्वरूप त्रिकोणों को सीरपिन्स्की त्रिकोण का उत्पादन किया जाता है, जैसा कि नीचे चित्रित किया गया है।

यहाँ छवि विवरण दर्ज करें

Sierpinski त्रिकोण उत्पन्न करने के लिए एक कार्यक्रम लिखें। आप किसी भी विधि का उपयोग कर सकते हैं जो आप पैटर्न उत्पन्न करना चाहते हैं, या तो वास्तविक त्रिकोण ड्राइंग करके, या चित्र बनाने के लिए एक यादृच्छिक एल्गोरिदम का उपयोग करके। आप पिक्सेल, आस्की कला, या जो भी आप चाहते हैं, में आकर्षित कर सकते हैं, जब तक कि आउटपुट ऊपर दिखाए गए अंतिम चित्र के समान दिखता है। सबसे कम पात्र जीतते हैं।


1
पुराने स्टैक ओवरफ्लो संस्करण को भी देखें: stackoverflow.com/questions/1726698/…
dmckee

3
पास्कल के त्रिकोण प्रश्न को देखने के बाद मुझे इसके लिए विचार मिला, और मेरे टीआई -86 मैनुअल में इसके लिए उदाहरण कार्यक्रम याद है। मैंने इसे QBasic में बदलने और फिर इसे गोल्फ को कोड करने का फैसला किया।
किब्बी

यहां एक चुनौती को चलाने में कोई समस्या नहीं है जो पहले से ही स्टैक ओवरफ्लो पर चलाया गया था, लेकिन कई लोग एक ही सामग्री को फिर से पेश नहीं करना चाहेंगे। इसलिए मैं उन्हें बाद के आगंतुकों के संपादन के लिए जोड़ता हूं।
dmckee

दोहराव से बचने के लिए, शायद आपको केवल चित्रमय कार्यान्वयन की अनुमति देने के लिए नियमों में बदलाव करना चाहिए।
प्रिमो

भेड़िया से विचारों के बहुत सारे: wolframscience.com/nksonline/page-931
luser droog

जवाबों:


41

HTML + जावास्क्रिप्ट, 150 वर्ण (126 वर्णों के लिए नोट देखें)

व्हॉट्सएप ने पठनीयता के लिए डाला और गिनती नहीं की।

<title></title><canvas></canvas><script>
for(x=k=128;x--;)for(y=k;y--;)
  x&y||document.body.firstChild.getContext("2d").fillRect(x-~y/2,k-y,1,1)
</script>

इसके मूल में रंग पिक्सेल के नियम को लागू करना है जिसके x & y == 0लिए सशर्त x&y||, जो "सिरिंपस्की सही त्रिकोण" पैदा करता है; और x-~y/2,k-yलगभग एकतरफा प्रदर्शन का उत्पादन करने के लिए एक समन्वय परिवर्तन कर रहे हैं।

यहाँ छवि विवरण दर्ज करें

एक कम सही (HTML- वार) संस्करण 126 वर्ण है:

<canvas><script>
for(x=k=128;x--;)for(y=k;y--;)
  x&y||document.body.firstChild.getContext("2d").fillRect(x-~y/2,k-y,1,1)
</script>

(जिस तरीके से यह कम सही है, वह titleतत्व को छोड़ता है और तत्व का अंतिम टैग canvas, दोनों को एक सही दस्तावेज़ के लिए आवश्यक है, भले ही उन्हें छोड़ने से दस्तावेज़ की व्याख्या में बदलाव न हो ।)

एक छोटे परिणाम की कीमत पर, kनिरंतर के पक्ष में समाप्त करके तीन पात्रों को बचाया जा सकता है 64; मैं 8विकल्प की गणना नहीं करूंगा क्योंकि इसमें अपर्याप्त विवरण है।

ध्यान दें कि <canvas>डिफ़ॉल्ट रूप से कैनवास के आकार को बढ़ाने के लिए 256 या उच्चतर आकार के लिए कैनवास पर विशेषताओं की आवश्यकता होती है ।


22
कोई भी परवाह नहीं करता है कि आपका HTML कोडगोल्फ :-) में सुधार करता है । कुछ सुधार: <canvas id=c>और फिर c.getContext। लघु छोरों:for(x=k=128;x--;)for(y=k;y--;)
प्रतिलिपि बनाएँ

4
आईडी को वैश्विक चर में बदल दिया जाना एक भयानक मिसफिट है जिसे मैं स्वीकार करने से मना करता हूं, और WebKit इसे मानक मोड में लागू नहीं करता है। पाश चाल के लिए धन्यवाद।
केविन रीड

1
मामूली सुधार: अन्यथा अच्छे समाधान के x&y?0:साथ प्रतिस्थापित किया जा सकता है x&y||
प्रिमो

5
ब्रावो, यह सिर्फ अद्भुत है।
बूथ

2
जैसा कि इसमें एक स्क्रिप्ट है, मैं इसे HTML + जावास्क्रिप्ट के रूप में शीर्षक देने की सलाह दूंगा । यह स्पष्ट करने के लिए किसी को स्पष्ट कर देगा कि यह किस प्रकार का उत्तर है।

30

गोल्फस्क्रिप्ट ( 43 42 चार्ट )

' /\ /__\ '4/){.+\.{[2$.]*}%\{.+}%+\}3*;n*

आउटपुट:

               /\               
              /__\              
             /\  /\             
            /__\/__\            
           /\      /\           
          /__\    /__\          
         /\  /\  /\  /\         
        /__\/__\/__\/__\        
       /\              /\       
      /__\            /__\      
     /\  /\          /\  /\     
    /__\/__\        /__\/__\    
   /\      /\      /\      /\   
  /__\    /__\    /__\    /__\  
 /\  /\  /\  /\  /\  /\  /\  /\ 
/__\/__\/__\/__\/__\/__\/__\/__\

एक बड़े त्रिकोण के लिए "3" को बड़ी संख्या में बदलें।


27

पायथन (234)

अधिकतम गोल्फ, छोटी छवि:

#!/usr/bin/env python3
from cairo import*
s=SVGSurface('_',97,84)
g=Context(s)
g.scale(97,84)
def f(w,x,y):
 v=w/2
 if w>.1:f(v,x,y);f(v,x+w/4,y-v);f(v,x+v,y)
 else:g.move_to(x,y);g.line_to(x+v,y-w);g.line_to(x+w,y);g.fill()
f(1,0,1)
s.write_to_png('s.png')

की आवश्यकता है python3-cairo

एक अच्छी बड़ी छवि पाने के लिए मुझे 239 पात्रों की आवश्यकता थी ।

सीरपिन्स्की ट्रायंगल


1
import cairo as c
व्होल

1
इस उत्तर को और अधिक
अपडेट की

26

गणितज्ञ - 32 वर्ण

Nest[Subsuperscript[#,#,#]&,0,5]

यहाँ छवि विवरण दर्ज करें

गणितज्ञ - 37 वर्ण

Grid@CellularAutomaton[90,{{1},0},31]

यह 0 और 1 की 2 डी तालिका का उत्पादन करेगा, जहां 1s Sierpinski त्रिभुज आरेखित कर रहे हैं।

यहाँ छवि विवरण दर्ज करें


2
5 अतिरिक्त वर्णों की कीमत पर, आपका दूसरा समाधान ArrayPlot@CellularAutomaton[90, {{1}, 0}, 31]या के साथ बेहतर प्रदर्शन करेगा MatrixPlot@CellularAutomaton[90, {{1}, 0}, 31]
डेविड जेएन

1
... या ReliefPlot@...
डेविड जेएन

मुझे यह मिलता है । सभी ब्रैकेट के बिना आपको आउटपुट कैसे मिला?
मि। छिपकली

@ Mr.Wizard हम्म ... दुनिया में कोष्ठक कहाँ से हैं? यह यहां भी काम करता है: mathics.net कोशिश करें और मुझे बताएं।
विटालि कौरोव

1
@Vitaliy Kaurov प्राथमिक (32 वर्ण) समाधान आश्चर्यजनक है। क्या आप "फ्रैक्टल ट्री" चुनौती (पीसीजी पर कहीं और) एक ही तकनीक का उपयोग कर सकते हैं?
माइकल स्टर्न

22

अजगर, 101 86

नियम 90 ऑटोमेटन का उपयोग करता है।

x=' '*31
x+='.'+x
exec"print x;x=''.join(' .'[x[i-1]!=x[i-62]]for i in range(63));"*32

यह लंबे समय तक है, लेकिन सुंदर है।

x=' '*31
x+=u'Δ'+x
exec u"print x;x=''.join(u' Δ'[x[i-1]!=x[i-62]]for i in range(63));"*32

संपादित करें: सीधे स्ट्रिंग्स के साथ खेलते हुए, अप्रिय रूप से लंबे स्लाइसिंग से छुटकारा पा लिया, आउटपुट प्रीटियर बनाया।

आउटपुट:

                               Δ                               
                              Δ Δ                              
                             Δ   Δ                             
                            Δ Δ Δ Δ                            
                           Δ       Δ                           
                          Δ Δ     Δ Δ                          
                         Δ   Δ   Δ   Δ                         
                        Δ Δ Δ Δ Δ Δ Δ Δ                        
                       Δ               Δ                       
                      Δ Δ             Δ Δ                      
                     Δ   Δ           Δ   Δ                     
                    Δ Δ Δ Δ         Δ Δ Δ Δ                    
                   Δ       Δ       Δ       Δ                   
                  Δ Δ     Δ Δ     Δ Δ     Δ Δ                  
                 Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ                 
                Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ                
               Δ                               Δ               
              Δ Δ                             Δ Δ              
             Δ   Δ                           Δ   Δ             
            Δ Δ Δ Δ                         Δ Δ Δ Δ            
           Δ       Δ                       Δ       Δ           
          Δ Δ     Δ Δ                     Δ Δ     Δ Δ          
         Δ   Δ   Δ   Δ                   Δ   Δ   Δ   Δ         
        Δ Δ Δ Δ Δ Δ Δ Δ                 Δ Δ Δ Δ Δ Δ Δ Δ        
       Δ               Δ               Δ               Δ       
      Δ Δ             Δ Δ             Δ Δ             Δ Δ      
     Δ   Δ           Δ   Δ           Δ   Δ           Δ   Δ     
    Δ Δ Δ Δ         Δ Δ Δ Δ         Δ Δ Δ Δ         Δ Δ Δ Δ    
   Δ       Δ       Δ       Δ       Δ       Δ       Δ       Δ   
  Δ Δ     Δ Δ     Δ Δ     Δ Δ     Δ Δ     Δ Δ     Δ Δ     Δ Δ  
 Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ   Δ 
Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ

यह वास्तव में अच्छा लग रहा है: D
beary605

उस U + 0394 कैपिटल डेल्टा का उपयोग करना वास्तव में एक अच्छा स्पर्श है।
डेविड कॉनरैड

16

जे

,/.(,~,.~)^:6,'o'

आदर्श नहीं है, चूँकि त्रिभुज लम्बा होता है और उसके बाद बहुत सारे व्हाट्सएप आते हैं - लेकिन फिर भी दिलचस्प है कि मैंने सोचा था।

आउटपुट:

o                                                               
oo                                                              
o o                                                             
oooo                                                            
o   o                                                           
oo  oo                                                          
o o o o                                                         
oooooooo                                                        
o       o                                                       
oo      oo                                                      
o o     o o                                                     
oooo    oooo                                                    
o   o   o   o                                                   
oo  oo  oo  oo                                                  
o o o o o o o o                                                 
oooooooooooooooo                                                
o               o                                               
oo              oo                                              
o o             o o                                             
oooo            oooo                                            
o   o           o   o                                           
oo  oo          oo  oo                                          
o o o o         o o o o                                         
oooooooo        oooooooo                                        
o       o       o       o                                       
oo      oo      oo      oo                                      
o o     o o     o o     o o                                     
oooo    oooo    oooo    oooo                                    
o   o   o   o   o   o   o   o                                   
oo  oo  oo  oo  oo  oo  oo  oo                                  
o o o o o o o o o o o o o o o o                                 
oooooooooooooooooooooooooooooooo                                
o                               o                               
oo                              oo                              
o o                             o o                             
oooo                            oooo                            
o   o                           o   o                           
oo  oo                          oo  oo                          
o o o o                         o o o o                         
oooooooo                        oooooooo                        
o       o                       o       o                       
oo      oo                      oo      oo                      
o o     o o                     o o     o o                     
oooo    oooo                    oooo    oooo                    
o   o   o   o                   o   o   o   o                   
oo  oo  oo  oo                  oo  oo  oo  oo                  
o o o o o o o o                 o o o o o o o o                 
oooooooooooooooo                oooooooooooooooo                
o               o               o               o               
oo              oo              oo              oo              
o o             o o             o o             o o             
oooo            oooo            oooo            oooo            
o   o           o   o           o   o           o   o           
oo  oo          oo  oo          oo  oo          oo  oo          
o o o o         o o o o         o o o o         o o o o         
oooooooo        oooooooo        oooooooo        oooooooo        
o       o       o       o       o       o       o       o       
oo      oo      oo      oo      oo      oo      oo      oo      
o o     o o     o o     o o     o o     o o     o o     o o     
oooo    oooo    oooo    oooo    oooo    oooo    oooo    oooo    
o   o   o   o   o   o   o   o   o   o   o   o   o   o   o   o   
oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  oo  
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o 
oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

एक त्वरित स्पष्टीकरण:

क्रिया (,~,.~)यहाँ क्या काम कर रही है। यह एक हुक है जो पहले ,.अपने आप को ( o-> oo) तर्क को रोकता है और फिर आउटपुट को मूल तर्क देता है:

oo

हो जाता है

oo
o

इस क्रिया को ^:6प्रत्येक पुनरावृत्ति के इनपुट बनने के साथ 6 बार दोहराया जाता है । इसलिए

oo
o

हो जाता है

oooo
o o
oo
o

जो बदले में बन जाता है

oooooooo
o o o o 
oo  oo
o   o
oooo
o o
oo
o

आदि तो मैं तिरछा ,/.सीधा (ish) त्रिकोण को पंक्तियों को पढ़ने के लिए append पर तिरछा क्रिया विशेषण का उपयोग किया है । मुझे ऐसा करने की आवश्यकता नहीं थी, क्योंकि रैंडम्रा बताते हैं। मैं सिर्फ |.एक ही परिणाम प्राप्त करने के लिए बहुत उलट सकता है । इससे भी बेहतर, मैं सिर्फ (,,.~)^:6,'o'रिवर्स स्टेप को पूरी तरह से बचाने के लिए इस्तेमाल कर सकता था।

आह ठीक है, तुम जीना और सीखना। :-)


1
क्या आप संक्षेप में बता सकते हैं कि यह कैसे काम करता है? मैं J
aditsu से

1
|.(,~,.~)^:6,'o'अतिरिक्त स्थानों के बिना छोटा है। और (,~,.~)^:6,1सिर्फ 12 अक्षरों में सभ्य इनपुट भी देता है!
यादृच्छिक

@aditsu मैंने एक स्पष्टीकरण जोड़ा है।
गारेथ

तो अगर मैं इसे प्राप्त करता हूं, तो वह ऑपरेटर दो 2d सरणियों को समाप्‍त कर देता है?
MaiaVictor

13

एपीएल (51)

      A←67⍴0⋄A[34]←1⋄' ○'[1+32 67⍴{~⊃⍵:⍵,∇(1⌽⍵)≠¯1⌽⍵⋄⍬}A]

स्पष्टीकरण:

  • A←67⍴0: A 67 जीरो का वेक्टर है
  • A[34]←1: 34 वाँ तत्व 1 है
  • {...}A: A से शुरू करते हैं:
  • ~⊃⍵:: यदि वर्तमान पंक्ति का पहला तत्व शून्य है
  • ⍵,∇: वर्तमान पंक्ति को उत्तर में जोड़ें, और उसके साथ पुनरावृत्ति करें:
  • (1⌽⍵)≠¯1⌽⍵: वेक्टर जहां प्रत्येक तत्व पिछली पीढ़ी में अपने पड़ोसियों का XOR है
  • ⋄⍬: अन्यथा, हम कर रहे हैं
  • 32 67⍴: इसे 67x32 मैट्रिक्स में प्रारूपित करें
  • 1+: चरित्र सरणी से सही मान का चयन करने के लिए एक जोड़ें
  • ' ○'[... ]: या तो एक स्पेस (त्रिकोण का हिस्सा नहीं) या एक सर्कल (जब यह त्रिकोण का हिस्सा है)

आउटपुट:

                                 ○                                 
                                ○ ○                                
                               ○ ○                               
                              ○ ○ ○ ○                              
                             ○ ○                             
                            ○ ○ ○ ○                            
                           ○ ○ ○ ○                           
                          ○ ○ ○ ○ ○ ○ ○ ○                          
                         ○ ○                         
                        ○ ○ ○ ○                        
                       ○ ○ ○ ○                       
                      ○ ○ ○ ○ ○ ○ ○ ○                      
                     ○ ○ ○ ○                     
                    ○ ○ ○ ○ ○ ○ ○ ○                    
                   ○ ○ ○ ○ ○ ○ ○ ○                   
                  ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○                  
                 ○ ○                 
                ○ ○ ○ ○                
               ○ ○ ○ ○               
              ○ ○ ○ ○ ○ ○ ○ ○              
             ○ ○ ○ ○             
            ○ ○ ○ ○ ○ ○ ○ ○            
           ○ ○ ○ ○ ○ ○ ○ ○           
          ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○          
         ○ ○ ○ ○         
        ○ ○ ○ ○ ○ ○ ○ ○        
       ○ ○ ○ ○ ○ ○ ○ ○       
      ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○      
     ○ ○ ○ ○ ○ ○ ○ ○     
    ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○    
   ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ ○   
  इस तरह के  

1
ओह। मुझे उम्मीद है कि यह 4 वर्णों का होगा, द्विपद मॉड 2 का उपयोग करना ... (ठीक है ... शायद उससे थोड़ा अधिक समय हो)
बूथबिन

13

हास्केल (291)

मैं गोल्फ कोडिंग में बहुत अच्छा नहीं हूँ।

solve n = tri (putStrLn "") [2^n] n
tri m xs 1 =
  do putStrLn (l1 1 xs "/\\" 0)
     putStrLn (l1 1 xs "/__\\" 1)
     m
tri m xs n=tri m' xs (n-1)
  where m'=tri m (concat[[x-o,x+o]|x<-xs]) (n-1)
        o=2^(n-1)
l1 o [] s t=""
l1 o (x:xs) s t=replicate (x-o-t) ' '++s++l1 (x+2+t) xs s t

का आउटपुट solve 4है:

               /\
              /__\
             /\  /\
            /__\/__\
           /\      /\
          /__\    /__\
         /\  /\  /\  /\
        /__\/__\/__\/__\
       /\              /\
      /__\            /__\
     /\  /\          /\  /\
    /__\/__\        /__\/__\
   /\      /\      /\      /\
  /__\    /__\    /__\    /__\
 /\  /\  /\  /\  /\  /\  /\  /\
/__\/__\/__\/__\/__\/__\/__\/__\

13

QBasic 151 वर्ण

एक उदाहरण के रूप में, यहां बताया गया है कि यह QBasic में कैसे किया जा सकता है।

SCREEN 9
H=.5
P=300
FOR I=1 TO 9^6
    N=RND
    IF N > 2/3 THEN
        X=H+X*H:Y=Y*H
    ELSEIF N > 1/3 THEN
        X=H^2+X*H:Y=H+Y*H    
    ELSE
        X=X*H:Y=Y*H
    END IF
    PSET(P-X*P,P-Y*P)
NEXT

यहाँ छवि विवरण दर्ज करें


क्या आप उस माप का वर्णन कर सकते हैं जिसके तहत यह कार्यक्रम 129 वर्णों का है? मैं 151 प्राप्त करता हूं अगर मैं सभी संभव-अनावश्यक व्हाट्सएप को बाहर निकालता हूं। (मैं QBasic से परिचित नहीं हूं।)
केविन रीड

मैंने अपनी गिनती के लिए सारे व्हाट्सएप छीन लिए। मुझे लगता है कि मैं केवल गैर-आवश्यक व्हाट्सएप की गिनती कर सकता हूं। मुझे यकीन नहीं है कि कोड गोल्फ के लिए "आधिकारिक" नियम क्या है।
किबी

4
आपको एक प्रोग्राम में व्हॉट्सएप सहित वास्तविक वर्णों की गणना करनी चाहिए, जो सही आउटपुट को चलाता और पैदा करता है । स्वाभाविक रूप से आप कोई अनावश्यक व्हाट्सएप नहीं रखना चाहेंगे।
केविन रीड

1
मेरा कैरेक्टर काउंट ठीक किया।
किब्बी

13

पायथन (42)

मैं मूल रूप से बूथबीज समाधान पर कुछ सुझाव पोस्ट करना चाहता था (जो वास्तव में नियम 18 का उपयोग करता है :), लेकिन मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं थी, इसलिए मैंने इसे दूसरे उत्तर में बनाया। चूंकि उसने अपना दृष्टिकोण बदल दिया, इसलिए मैंने कुछ स्पष्टीकरण जोड़ा। मेरे सुझाव हैं:

  1. '.join के बजाय'% d '* 64% tuple (x) का प्रयोग करें। (नक्शा (str, x))
  2. सूची को चारों ओर लपेटने के बजाय शून्य में शिफ्ट करें

जिसके कारण निम्नलिखित कोड (93 वर्ण) होंगे:

x=[0]*63
x[31]=1
exec"print'%d'*63%tuple(x);x=[a^b for a,b in zip(x[1:]+[0],[0]+x[:-1])];"*32

लेकिन मैंने एक और पूर्णांक सरणी के बजाय एक लॉन्गिंट का उपयोग करके और बाइनरी प्रतिनिधित्व (75 वर्ण) को मुद्रित करके पहले और अधिक आशा व्यक्त की:

x=2**31
exec"print'%d'*63%tuple(1&x>>i for i in range(63));x=x<<1^x>>1;"*32

और अंत में ऑक्टल प्रतिनिधित्व को प्रिंट करके, जो पहले से ही प्रिंटफ इंटरपोलेशन (42 अक्षर) द्वारा समर्थित है:

x=8**31
exec"print'%063o'%x;x=x*8^x/8;"*32

उन सभी को मुद्रित करेंगे:

000000000000000000000000000000010000000000000000000000000000000
000000000000000000000000000000101000000000000000000000000000000
000000000000000000000000000001000100000000000000000000000000000
000000000000000000000000000010101010000000000000000000000000000
000000000000000000000000000100000001000000000000000000000000000
000000000000000000000000001010000010100000000000000000000000000
000000000000000000000000010001000100010000000000000000000000000
000000000000000000000000101010101010101000000000000000000000000
000000000000000000000001000000000000000100000000000000000000000
000000000000000000000010100000000000001010000000000000000000000
000000000000000000000100010000000000010001000000000000000000000
000000000000000000001010101000000000101010100000000000000000000
000000000000000000010000000100000001000000010000000000000000000
000000000000000000101000001010000010100000101000000000000000000
000000000000000001000100010001000100010001000100000000000000000
000000000000000010101010101010101010101010101010000000000000000
000000000000000100000000000000000000000000000001000000000000000
000000000000001010000000000000000000000000000010100000000000000
000000000000010001000000000000000000000000000100010000000000000
000000000000101010100000000000000000000000001010101000000000000
000000000001000000010000000000000000000000010000000100000000000
000000000010100000101000000000000000000000101000001010000000000
000000000100010001000100000000000000000001000100010001000000000
000000001010101010101010000000000000000010101010101010100000000
000000010000000000000001000000000000000100000000000000010000000
000000101000000000000010100000000000001010000000000000101000000
000001000100000000000100010000000000010001000000000001000100000
000010101010000000001010101000000000101010100000000010101010000
000100000001000000010000000100000001000000010000000100000001000
001010000010100000101000001010000010100000101000001010000010100
010001000100010001000100010001000100010001000100010001000100010
101010101010101010101010101010101010101010101010101010101010101

बेशक एक चित्रमय समाधान (131 अक्षर) भी है:

from PIL.Image import*
from struct import*
a=''
x=2**31
exec"a+=pack('>Q',x);x=x*2^x/2;"*32
fromstring('1',(64,32),a).save('s.png')

बहुत छोटा sierpinsky त्रिकोण : डी


1
36:x=8**31;exec"print'%o'%x;x^=x/8;"*32
एडिट्स

13

8086 मशीन कोड - 30 बाइट्स।

नोट: यह मेरा कोड नहीं है और इसे उत्तर के रूप में स्वीकार नहीं किया जाना चाहिए । मैंने 8086 सीपीयू का अनुकरण करने के लिए एक अलग सीजी समस्या पर काम करते हुए यह पाया । शामिल टेक्स्ट फ़ाइल डेविड स्टैफ़ोर्ड को श्रेय देती है , लेकिन यह सबसे अच्छा है जो मैं साथ आ सकता हूं।

मैं इसे पोस्ट कर रहा हूं क्योंकि यह चालाक है, छोटा है, और मुझे लगा कि आप इसे देखना चाहते हैं।

यह एक छोटे स्थान में अधिक निर्देशों को पैक करने के लिए ओवरलैपिंग ऑपकोड का उपयोग करता है। आश्चर्यजनक रूप से चतुर। यहाँ मशीन कोड है:

B0 13 CD 10 B3 03 BE A0 A0 8E DE B9 8B 0C 32 28 88 AC C2 FE 4E 75 F5 CD 16 87 C3 CD 10 C3

एक सीधा अपघटन इस तरह दिखता है:

0100: B0 13              mov AL, 13h
0102: CD 10              int 10h
0104: B3 03              mov BL, 3h
0106: BE A0 A0           mov SI, A0A0h
0109: 8E DE              mov  DS, SI
010B: B9 8B 0C           mov CX, C8Bh
010E: 32 28              xor  CH, [BX+SI]
0110: 88 AC C2 FE        mov  [SI+FEC2h], CH
0114: 4E                 dec SI
0115: 75 F5              jne/jnz -11

दौड़ने के दौरान, जब 0x0115 पर जंप होता है, तो ध्यान दें कि यह 0x010C पर वापस छलांग लगाता है, जो कि पिछले वर्ष के मध्य में है:

0100: B0 13              mov AL, 13h
0102: CD 10              int 10h
0104: B3 03              mov BL, 3h
0106: BE A0 A0           mov SI, A0A0h
0109: 8E DE              mov  DS, SI
010B: B9 8B 0C           mov CX, C8Bh
010E: 32 28              xor  CH, [BX+SI]
0110: 88 AC C2 FE        mov  [SI+FEC2h], CH
0114: 4E                 dec SI
0115: 75 F5              jne/jnz -11
010C: 8B 0C              mov  CX, [SI]
010E: 32 28              xor  CH, [BX+SI]
0110: 88 AC C2 FE        mov  [SI+FEC2h], CH
0114: 4E                 dec SI
0115: 75 F5              jne/jnz -11
010C: 8B 0C              mov  CX, [SI]

प्रतिभाशाली! आशा है कि आप लोग मुझे इससे साझा करने से गुरेज नहीं करेंगे। मुझे पता है कि यह प्रति उत्तर नहीं है, लेकिन चुनौती के लिए यह रुचि है।

यहाँ यह कार्रवाई में है:

चल रहा है


11

सी 127 119 116 108 65

यह एक एचटीएमएल उत्तर देने की चाल का उपयोग करता है ^ i & jइसे सुंदर आउटपुट प्रिंट करने के लिए 1 अधिक चार्ट लगेगा (आप बलिदान करके वास्तव में बदसूरत आउटपुट प्राप्त कर सकते हैं a^)।

a=32,j;main(i){for(;++i<a;)putchar(a^i&j);++j<a&&main(puts(""));}

इसे करने के लिए बहुत बारी बारी (32^i&j)से (32|!(i&j))और इसे ++i<aकरने के लिए ++i<=a। हालांकि लगता है पर बर्बाद कर मुझे करने के लिए ungolfish लगता है।

बदसूरत उत्पादन:

 ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
""  ""  ""  ""  ""  ""  ""  ""
"# !"# !"# !"# !"# !"# !"# !"#
  $$$$    $$$$    $$$$    $$$$
 !$%$% ! !$%$% ! !$%$% ! !$%$%
""$$&&  ""$$&&  ""$$&&  ""$$&&
"#$%&' !"#$%&' !"#$%&' !"#$%&'
      ((((((((        ((((((((
 ! ! !()()()() ! ! ! !()()()()
""  ""((**((**  ""  ""((**((**
"# !"#()*+()*+ !"# !"#()*+()*+
  $$$$((((,,,,    $$$$((((,,,,
 !$%$%()(),-,- ! !$%$%()(),-,-
""$$&&((**,,..  ""$$&&((**,,..
"#$%&'()*+,-./ !"#$%&'()*+,-./
              0000000000000000
 ! ! ! ! ! ! !0101010101010101
""  ""  ""  ""0022002200220022
"# !"# !"# !"#0123012301230123
  $$$$    $$$$0000444400004444
 !$%$% ! !$%$%0101454501014545
""$$&&  ""$$&&0022446600224466
"#$%&' !"#$%&'0123456701234567
      ((((((((0000000088888888
 ! ! !()()()()0101010189898989
""  ""((**((**0022002288::88::
"# !"#()*+()*+0123012389:;89:;
  $$$$((((,,,,000044448888<<<<
 !$%$%()(),-,-010145458989<=<=
""$$&&((**,,..0022446688::<<>>
"#$%&'()*+,-./0123456789:;<=>?

मुझे वास्तव में यह पसंद है कि यह कैसा दिखता है। लेकिन अगर आप इस पर जोर देते हैं कि आप सुंदर हैं तो आप चार वर्णों को डॉक कर सकते हैं। सुंदर आउटपुट:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
  !!  !!  !!  !!  !!  !!  !!  !
  !   !   !   !   !   !   !   !
!!    !!!!    !!!!    !!!!    !
!     ! !     ! !     ! !     !
      !!      !!      !!      !
      !       !       !       !
!!!!!!        !!!!!!!!        !
! ! !         ! ! ! !         !
  !!          !!  !!          !
  !           !   !           !
!!            !!!!            !
!             ! !             !
              !!              !
              !               !
!!!!!!!!!!!!!!                !
! ! ! ! ! ! !                 !
  !!  !!  !!                  !
  !   !   !                   !
!!    !!!!                    !
!     ! !                     !
      !!                      !
      !                       !
!!!!!!                        !
! ! !                         !
  !!                          !
  !                           !
!!                            !
!                             !
                              !
                              !

पुराने 108 char, सेलुलर ऑटोमेटा संस्करण को छोड़ना।

j,d[99][99];main(i){d[0][31]=3;for(;i<64;)d[j+1][i]=putchar(32|d[j][i+2]^d[j][i++]);++j<32&&main(puts(""));}

इसलिए मुझे नहीं लगता कि मैं इसे इससे बहुत कम पाने जा रहा हूं इसलिए मैं कोड समझाऊंगा। मैं इस स्पष्टीकरण को छोड़ दूंगा, क्योंकि कुछ ट्रिक्स उपयोगी हो सकते हैं।

j,d[99][99]; // these init as 0
main(i){ //starts at 1 (argc)
  d[0][48]=3; //seed the automata (3 gives us # instead of !)
  for(;i<98;) // print a row
    d[j+1][i]=putchar(32|d[j][i+2]]^d[j][i++]);
    //relies on undefined behavoir. Works on ubuntu with gcc ix864
    //does the automata rule. 32 + (bitwise or can serve as + if you know
    //that (a|b)==(a^b)), putchar returns the char it prints
  ++j<32&&main(puts(""));
  // repeat 32 times
  // puts("") prints a newline and returns 1, which is nice
}

कुछ आउटपुट

                             # #                               
                            #   #                              
                           # # # #                             
                          #       #                            
                         # #     # #                           
                        #   #   #   #                          
                       # # # # # # # #                         
                      #               #                        
                     # #             # #                       
                    #   #           #   #                      
                   # # # #         # # # #                     
                  #       #       #       #                    
                 # #     # #     # #     # #                   
                #   #   #   #   #   #   #   #                  
               # # # # # # # # # # # # # # # #                 
              #                               #                
             # #                             # #               
            #   #                           #   #              
           # # # #                         # # # #             
          #       #                       #       #            
         # #     # #                     # #     # #           
        #   #   #   #                   #   #   #   #          
       # # # # # # # #                 # # # # # # # #         
      #               #               #               #        
     # #             # #             # #             # #       
    #   #           #   #           #   #           #   #      
   # # # #         # # # #         # # # #         # # # #     
  #       #       #       #       #       #       #       #    
 # #     # #     # #     # #     # #     # #     # #     # #   
#   #   #   #   #   #   #   #   #   #   #   #   #   #   #   #  
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

1
यह एक Sierpinski त्रिकोण प्रतीत नहीं होता है; यह दो के बजाय तीन उप-त्रिकोणों (नीचे की ओर बढ़ते हुए) में विभाजित होता है, और यह देखा जा सकता है कि यह कोई बड़ा खाली त्रिभुज नहीं बनाता है।
केविन रीड

1
ऐसा इसलिए है क्योंकि मैंने गलत नियम का इस्तेमाल किया: ओ। निश्चित, और मुंडा के कुछ जोड़े।
13

9

80x86 कोड / MsDos - 10 बाइट्स

MsDos पर बहुत छोटे इंट्रो के लिए विशेष रूप से एक सिज़कोडर के रूप में, मैं केवल 10 बाइट्स वाले एक प्रोग्राम के साथ आने में कामयाब रहा।

हेक्स में:

04 13 CD 10 20 E9 B4 0C E2 F6

यहाँ छवि विवरण दर्ज करें

असम में:

X: add al,0x13
int 0x10
and cl,ch
mov ah,0x0C
loop X

पहला संस्करण जिसे मैंने कोड किया था वह "कोलपिंस्की" था जो आकार में 16 बाइट्स है, और यहां तक ​​कि एक तरह से इंटरैक्टिव भी है कि आप कीबोर्ड और माउस के साथ रंग बदल सकते हैं। एक साथ "फ्रैग" - एक और सिज़कोडर - हम उस एक को 13 बाइट्स तक ले आए, जिससे 10 बाइट प्रोग्राम की अनुमति मिलती है जिसमें बस कोर दिनचर्या शामिल है।

यह थोड़ा और दिलचस्प हो जाता है जब चीजें एनिमेटेड होती हैं, इसलिए मैं एक और संस्करण का उल्लेख करूंगा , ज़ूमपिन्स्की 64 - 512 बाइट्स में "ज़ूमपिन्स्की सी 64" के सटीक व्यवहार की नकल करने की कोशिश कर रहा है - नाम से पता चलता है कि आकार के रूप में MsDos, 64 बाइट्स के लिए भी।

लालित्य, रंग और समरूपता (स्रोत और निष्पादन योग्य लिंक के पीछे उपलब्ध) को खोते हुए, इसे 31 बाइट्स तक अनुकूलित करना संभव है

मूल डाउनलोड करें और "Pouet" पर टिप्पणी करें


2
आपको अपने कोड का एक हेक्स डंप पोस्ट करना चाहिए, ताकि हम वास्तविक बाइट्स देख सकें।
mbomb007

8

पोस्टस्क्रिप्ट, 120 वर्ण

-7 -4 moveto
14 0 rlineto
7{true upath dup
2{120 rotate uappend}repeat[2 0 0 2 7 4]concat}repeat
matrix setmatrix
stroke

भूत उत्पादन:

रेंडरेड घोस्टस्क्रिप्ट आउटपुट

यह आवर्ती त्रिगुण द्वारा चित्र खींच रहा है जो पहले से ही खींचा हुआ है।

पहला कदम एक रेखा खींच रहा है। लाइन को एक उपयोगकर्तापथ के रूप में सहेजा जाता है, फिर प्रत्येक बार 120 डिग्री को घुमाने के बाद उपयोगकर्तापथ को दो बार जोड़ा जाता है। [2 0 0 2 7 4]concat"घुमाव बिंदु" को अगले बड़े सफेद "केंद्र त्रिकोण" के केंद्र में ले जाता है, जो कि पहले से ही त्रिकोण के प्रतिकृति द्वारा संलग्न किया जाना है। यहां, हम चरण 1 पर वापस आ गए हैं (एक अपथ बना रहे हैं जो रोटेशन से तीन गुना है)।

पुनरावृत्तियों की संख्या को लाइन 3 में पहले नंबर से नियंत्रित किया जाता है।


+1 बहुत अच्छा। मुझे नहीं पता था कि इस तरह इस्तेमाल किया जा सकता है।
लूज़र ने

अरे, अब आपको उस छवि को जोड़ने का प्रतिनिधि मिल गया है!
लूसर

@luserdroog: यह सही है (आंशिक रूप से धन्यवाद भी)!
थॉमस डब्ल्यू।

7

जे (9 अक्षर)

आसानी से बदसूरत, आप वास्तव में उत्पादन देखने के लिए भटकने की जरूरत है;)

2|!/~i.32

उत्पादन करता है

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

निश्चित रूप से आप इसे ग्राफिक रूप से प्रदर्शित कर सकते हैं:

load 'viewmat'
viewmat 2|!/~i.32

छवि


कैसे ... क्या?
अनुचर

4
कोड पास्कल के त्रिकोण की संपत्ति का शोषण करता है कि यदि आप सभी विषम (समान) संख्याओं को काला (सफेद) रंग देते हैं, तो आप Sierpinski त्रिकोण के साथ समाप्त होते हैं। ( यह छवि देखें )। i.32 सूची को उत्पन्न करता है 0 1 2 ... 31. फिर! / ~ अपने खिलाफ सूची में प्रत्येक तत्व के द्विपद गुणांक की गणना करता है, अर्थात एक 32 x 32 मैट्रिक्स का उत्पादन करता है जिसमें पास्कल का त्रिकोण अंतर्निहित है। फिर 2 | Sierpinski के त्रिकोण का निर्माण करते हुए, इस मैट्रिक्स मॉड 2 में प्रत्येक तत्व है।
मार्क एलन

4

एपीएल, 37 32 ( 28 23)

ईमानदार त्रिकोण ( 37 32-चार)

({((-1⌷⍴⍵)⌽⍵,∊⍵)⍪⍵,⍵}⍣⎕)1 2⍴'/\'

व्याख्या

  • 1 2⍴'/\': 1 × 2 वर्ण का मैट्रिक्स बनाएँ /\
  • {((-1⌷⍴⍵)⌽⍵,∊⍵)⍪⍵,⍵}: एक ऐसा फ़ंक्शन जो मैट्रिक्स को डबल बनाने के लिए ब्लैंक के साथ दोनों तरफ सही तर्क को चौड़ा करता है, फिर सही तर्क को नीचे की तरफ दोगुना कर देता है।
    जैसे /\बन जाएगा
 / \ 
/ \ / \
  • ⍣⎕: फ़ंक्शन (उपयोगकर्ता इनपुट) समय को फिर से जीवंत करें।

उदाहरण आउटपुट

               /\               
              /\/\              
             /\  /\             
            /\/\/\/\            
           /\      /\           
          /\/\    /\/\          
         /\  /\  /\  /\         
        /\/\/\/\/\/\/\/\        
       /\              /\       
      /\/\            /\/\      
     /\  /\          /\  /\     
    /\/\/\/\        /\/\/\/\    
   /\      /\      /\      /\   
  /\/\    /\/\    /\/\    /\/\  
 /\  /\  /\  /\  /\  /\  /\  /\ 
/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\

तिरछा त्रिभुज ( 28 23-चार)

({(⍵,∊⍵)⍪⍵,⍵}⍣⎕)1 1⍴'○'

explaination

  • 1 1⍴'○': 1 × 1 वर्ण मैट्रिक्स बनाएँ
  • {(⍵,∊⍵)⍪⍵,⍵}: एक ऐसा फ़ंक्शन जो एक मैट्रिक्स डबल बनाने के लिए ब्लॉक्स के साथ दाईं ओर सही तर्क को चौड़ा करता है, फिर सही तर्क को नीचे की तरफ दोगुना कर देता है।
    जैसे बन जाएगा
○ 
○○
  • ⍣⎕: फ़ंक्शन (उपयोगकर्ता इनपुट) समय को फिर से जीवंत करें।

उदाहरण आउटपुट

○               
○○              
○ ○             
○○○○            
○   ○           
○○  ○○          
○ ○ ○ ○         
○○○○○○○○        
○       ○       
○○      ○○      
○ ○     ○ ○     
○○○○    ○○○○    
○   ○   ○   ○   
○○  ○○  ○○  ○○  
○ ○ ○ ○ ○ ○ ○ ○ 
○○○○○○○○○○○○○○○○

4

पायथन (75)

मुझे पार्टी में दो साल हो गए हैं, लेकिन मुझे आश्चर्य है कि किसी ने भी इस दृष्टिकोण को नहीं लिया है

from pylab import*
x=[[1,1],[1,0]]
for i in'123':x=kron(x,x)
imsave('a',x)

level7

स्वयं की कई प्रतियों द्वारा मैट्रिक्स को बदलने के लिए क्रोनकर उत्पाद का उपयोग करता है।

मैं x=kron(x,x);x=kron(x,x)तीन दृश्य स्तरों के साथ एक 16x16 पिक्सेल छवि प्राप्त करने के लिए लाइन थ्री में उपयोग करके दो चार्ट को बचा सकता हूं या पुनरावृत्तक में एक और चार जोड़ सकता हूं और 2 ^ 16 x 2 ^ 16 = 4.3 गीगापिक्सल छवि और 15 त्रिकोण स्तरों के साथ समाप्त हो सकता हूं।


3

लोगो, 75 अक्षर

केवल पहले फ़ंक्शन के लिए 59 वर्ण, दूसरा आकार और पुनरावृत्तियों की गहराई / संख्या के साथ पहला कॉल करता है। तो आप केवल कमांड के साथ दुभाषिया से पहला फ़ंक्शन कह सकते हैं: ई 99 5, या जो भी आकार आप आउटपुट करना चाहते हैं

to e :s :l
if :l>0[repeat 3[e :s/2 :l-1 fd :s rt 120]]
end
to f
e 99 5
end

+1 मैंने लोगो के बारे में पढ़ा है। आप किस दुभाषिया का उपयोग कर रहे हैं? ... लोगो मेरे एल-सिस्टम चुनौती के लिए एक प्राकृतिक फिट हो सकता है ।
लूज़र ने

यदि आप अभी to fऔर इसके endआसपास हटाते हैं e 99 5, तो आपके पास कम पात्रों में एक पूर्ण चलने योग्य कार्यक्रम है। इसके अलावा, UCBLogo में (हालांकि अन्य संस्करण नहीं) आप अधिक वर्णों को बचाने के लिए चर पर कॉलोन खो सकते हैं।
मार्क रीड


3

जे (18 अक्षर)

' *'{~(,,.~)^:9 ,1

नतीजा

*                               
**                              
* *                             
****                            
*   *                           
**  **                          
* * * *                         
********                        
*       *                       
**      **                      
* *     * *                     
****    ****                    
*   *   *   *                   
**  **  **  **                  
* * * * * * * *                 
****************                
*               *               
**              **              
* *             * *             
****            ****            
*   *           *   *           
**  **          **  **          
* * * *         * * * *         
********        ********        
*       *       *       *       
**      **      **      **      
* *     * *     * *     * *     
****    ****    ****    ****    
*   *   *   *   *   *   *   *   
**  **  **  **  **  **  **  **  
* * * * * * * * * * * * * * * * 
********************************

3

अजगर (90 वर्ण)

from turtle import*
def l():left(60)
def r():right(60)
def f():forward(1)
def L(n):
 if n:n-=1;R(n);l();L(n);l();R(n)
 else:f()
def R(n):
 if n:n-=1;L(n);r();R(n);r();L(n)
 else:f()
l();L(8)

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

Sierpinsky त्रिभुज को भरने वाली भग्न रेखा खींचें


दौड़ने से पहले, मैं ht();speed(0);up();goto(20-window_width()/2, 20-window_height()/2);down()आयात के बाद डालने की सलाह देता हूं । यह इसे बहुत तेज़ी से चलाएगा और यह सुनिश्चित करेगा कि आउटपुट कैनवास पर फिट बैठता है।
mbomb007

3

गणितज्ञ 67

ListPlot@NestList[(#+RandomChoice@{{0,0},{2,0},{1,2}})/2&,{0,0},8!]

यहाँ छवि विवरण दर्ज करें

गणितज्ञ 92

Graphics@Polygon@Nest[Join@@(Mean/@#&/@#~Tuples~2~Partition~3&/@#)&,{{{0,0},{2,0},{1,1}}},3]

यहाँ छवि विवरण दर्ज करें


3

गणितज्ञ , 29 बाइट्स

Image@Array[BitAnd,{2,2}^9,0]

छवि @ सरणी [BitAnd, {2,2} ^ 9.0]

Sierpinski tetrahedron को एक समान तरीके से तैयार किया जा सकता है:

Image3D[1-Array[BitXor,{2,2,2}^7,0]]

Image3D [1-सरणी [BITXOR, {2,2,2} ^ 7.0]]


3

जे , 37 35 बाइट्स

-2 बाइट्स FrownyFrog की बदौलत

(,.~,~' '&,.^:#)@[&0' /\',:'/__\'"_

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

यह पीटर टेलर का एससी कला संस्करण है जिसे जे में परिवर्तित किया गया है और कम सुंदर संस्करण के साथ बाइट्स बचा सकता है, लेकिन क्यों?

       /\       
      /__\      
     /\  /\     
    /__\/__\    
   /\      /\   
  /__\    /__\  
 /\  /\  /\  /\ 
/__\/__\/__\/__\

@]^:[-> @[&0और ' /\ '->' /\'
FrownyFrog

क्या आपको पता है कि &0ट्रिक कहाँ से प्रलेखित की जाती है?
योना

1
पृष्ठ के निचले भाग में यहां उल्लेख किया गया है । जबकि यह एक बाइट बचाता है आप नकारात्मक संख्या को दोहराने की क्षमता खो देते हैं।
FrownyFrog

ओह, आपको ऑपरेंड को ,~चारों ओर स्वैप करने में सक्षम होना चाहिए ।
फ्रोवनीफ्रॉग

3

गुल्ली में लूआ लिपि , 54 बाइट्स

g=golly()
g.setrule("W60")
g.setcell(0,0,1)
g.run(512)

गुली एक सेलुलर ऑटोमेटा सिम्युलेटर है जिसमें लुआ और पायथन स्क्रिप्टिंग समर्थन है।

यह स्क्रिप्ट वुल्फराम नियम 60 को नियम सेट करती है, सेल को (0,0) पर 1 पर सेट करती है, और 512 चरण चलती है।

यहाँ छवि विवरण दर्ज करें


2

परिशिष्ट भाग, 205 203

[48(0-1+0+1-0)49(11)43(+)45(-)/s{dup
0 eq{exch{[48{1 0 rlineto}49 1 index
43{240 rotate}45{120 rotate}>>exch
get exec}forall}{exch{load
exch 1 sub s}forall}ifelse 1 add}>>begin
9 9 moveto(0-1-1)9 s fill

तार और पुनरावृत्ति का उपयोग करते हुए फिर से लिखना बिल्कुल उसी गणना पर समाप्त होता है। लेकिन मैक्रो-एप्रोच की गहराई-सीमाएं दूर हो जाती हैं।

संपादित करें: fill से छोटा है stroke

इंडेंट किया और टिप्पणी की।

%!
[   % begin dictionary
    48(0-1+0+1-0) % 0
    49(11)        % 1
    43(+)         % +
    45(-)         % -
    /s{ % string recursion-level
        dup 0 eq{ % level=0
            exch{  % iterate through string
                [
                    48{1 0 rlineto} % 0
                    49 1 index      % 1 
                    43{240 rotate}  % +
                    45{120 rotate}  % -
                >>exch get exec % interpret turtle command
            }forall
        }{ % level>0
            exch{  % iterate through string
                load exch  % lookup charcode
                1 sub s    % recurse with level-1
            }forall
        }ifelse
        1 add  % return recursion-level+1
    }
>>begin
9 9 moveto(0-1-1)9 s fill % execute and fill

जोड़ने से 0 setlinewidthयह बेहतर पता चलता है कि यह कितना गहरा है।

<code> fill </ code> (बहुत अधिक समान) का उपयोग करके छवि को संशोधित करें


यह मेरा पसंदीदा है।
cjfaure

इस बाहरी परिवाद के साथ इसे कम करने का एक तरीका है जो मैंने इस तथ्य के बाद लिखा था और इसका उपयोग नहीं कर सकता। : पी
लूसर डॉग


2

असममित, 152 बाइट्स

मैं इसे जोड़ूंगा, ज्यादातर जब से मैंने इस साइट पर asymptote में कम या ज्यादा जवाब नहीं देखा है। अच्छा स्वरूपण और व्यापकता के लिए कुछ व्यर्थ बाइट्स, लेकिन मैं इसके साथ रह सकता हूं। ए, बी और सी बदलने से जहां त्रिकोण के कोने हैं, वहां बदल जाएगा, लेकिन शायद आपके सोचने के तरीके में नहीं। गहराई बढ़ाने के लिए असमानता में संख्या बढ़ाएं।

pair A=(0,0),B=(1,0),C=(.5,1);void f(pair p,int d){if(++d<7){p*=2;f(p+A*2,d);f(p+B*2,d);f(p+C*2,d);}else{fill(shift(p/2)*(A--B--C--cycle));}}f((0,0),0);

या ungolfed और पठनीय

pair A=(0,0), B=(1,0), C=(.5,1);

void f(pair p, int d) {
    if (++d<7) {
        p *= 2;
        f(p+A*2,d);
        f(p+B*2,d);
        f(p+C*2,d);
    } else {
        fill(shift(p/2)*(A--B--C--cycle));
    }
}

f((0,0),0);

तो asymptote कुछ हद तक सी-सिंटैक्स के साथ एक साफ वेक्टर ग्राफिक्स भाषा है। कुछ तकनीकी आरेखों के लिए काफी उपयोगी है। आउटपुट निश्चित रूप से एक वेक्टर प्रारूप में डिफ़ॉल्ट रूप से होता है (eps, pdf, svg) लेकिन मूल रूप से सब कुछ इमेजमेगिक सपोर्ट में परिवर्तित किया जा सकता है। आउटपुट:

Sierpinski त्रिकोण


2

हास्केल , 166 154 बाइट्स

(-12 बाइट्स लाईकोनी की बदौलत, (ज़िप और लिम्बड़ा के बजाय जिप और लिस्ट की समझ, पहली लाइन जनरेट करने का बेहतर तरीका))

i#n|let k!p=p:(k+1)![m*l*r+(m*(l*r-l-r)+1)*0^mod k(2^(n-i))|(l,m,r)<-zip3(1:p)p$tail p++[1]];x=1<$[2..2^n]=mapM(putStrLn.map("M "!!))$take(2^n)$1!(x++0:x)

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

स्पष्टीकरण:

फ़ंक्शन पुनरावृत्ति के चरणों के बाद i#nऊंचाई के ASCII-त्रिकोण को खींचता है ।2^ni

आंतरिक रूप से उपयोग की जाने वाली एन्कोडिंग रिक्त पदों को 1और पूर्ण स्थिति के रूप में संलग्न करती है 0। इसलिए त्रिभुज की पहली पंक्ति के रूप में एन्कोड किया गया है [1,1,1..0..1,1,1]के साथ 2^n-1शून्य के दोनों किनारों पर लोगों को। इस सूची का निर्माण करने के लिए, हम सूची के साथ शुरू करते हैं x=1<$[2..2^n], यानी [2..2^n]हर चीज के साथ सूची 1। फिर, हम पूरी सूची का निर्माण करते हैंx++0:x

ऑपरेटर k!p(नीचे विस्तृत विवरण), एक लाइन इंडेक्स दिया गया kऔर एक pअनुवर्ती लाइनों की एक अनंत सूची उत्पन्न करता है p। हम इसे 1पूरे त्रिकोण को प्राप्त करने के लिए और ऊपर वर्णित प्रारंभिक रेखा के साथ लागू करते हैं , और उसके बाद केवल पहली 2^nपंक्तियों को लेते हैं। फिर, हम बस प्रत्येक पंक्ति मुद्रित, जगह 1जगह के साथ और 0साथ M(सूची पर पहुंचकर "M "स्थान पर 0या 1)।

ऑपरेटर k!pको निम्नानुसार परिभाषित किया गया है:

k!p=p:(k+1)![m*l*r+(m*(l*r-l-r)+1)*0^mod k(2^(n-i))|(l,m,r)<-zip3(1:p)p$tail p++[1]]

सबसे पहले, हम तीन संस्करण उत्पन्न करते हैं p: 1:pजो कि pएक 1पूर्वनिर्मित के साथ है , pस्वयं और tail p++[1]जो कि सब कुछ है लेकिन पहले तत्व के pसाथ एक 1जोड़ा गया है। हम फिर इन तीन सूचियों को ज़िप करते हैं, हमें pउनके बाएं और दाएं पड़ोसियों के साथ सभी तत्वों को प्रभावी रूप से देते हैं, जैसा कि (l,m,r)। हम तब नई पंक्ति में संबंधित मान की गणना करने के लिए एक सूची समझ का उपयोग करते हैं:

m*l*r+(m*(l*r-l-r)+1)*0^mod k(2^(n-i))    

इस अभिव्यक्ति को समझने के लिए, हमें यह समझने की जरूरत है कि विचार करने के लिए दो बुनियादी मामले हैं: या तो हम बस पिछली पंक्ति का विस्तार करते हैं, या हम उस बिंदु पर हैं जहां त्रिकोण में एक खाली स्थान शुरू होता है। पहले मामले में, हमारे पास एक भरा हुआ स्थान है यदि पड़ोस में कोई भी स्पॉट भरा हुआ है। इसकी गणना इस प्रकार की जा सकती है m*l*r; यदि इन तीनों में से कोई भी शून्य है, तो नया मान शून्य है। दूसरा मामला थोड़ा पेचीदा है। यहां, हमें मूल रूप से एज डिटेक्शन की आवश्यकता है। निम्न तालिका नई पंक्ति में परिणामी मान के साथ आठ संभावित पड़ोस देती है:

000 001 010 011 100 101 110 111
 1   1   1   0   1   1   0   1

इस तालिका को प्राप्त करने का एक सीधा सूत्र होगा 1-m*r*(1-l)-m*l*(1-r)जो सरल हो जाता है m*(2*l*r-l-r)+1। अब हमें इन दो मामलों के बीच चयन करने की आवश्यकता है, जहां हम लाइन नंबर का उपयोग करते हैं k। यदि mod k (2^(n-i)) == 0, हमें दूसरे मामले का उपयोग करना है, अन्यथा, हम पहले मामले का उपयोग करते हैं। 0^(mod k(2^n-i))इसलिए शब्द यह है 0कि अगर हमें पहले मामले का उपयोग करना है और 1अगर हमें दूसरे मामले का उपयोग करना है। नतीजतन, हम उपयोग कर सकते हैं

m*l*r+(m*(l*r-l-r)+1)*0^mod k(2^(n-i)) 

कुल में - यदि हम पहले मामले का उपयोग करते हैं, तो हम बस प्राप्त m*l*rकरते हैं , जबकि दूसरे मामले में, एक अतिरिक्त शब्द जोड़ा जाता है, जो कि भव्य कुल देता है m*(2*l*r-l-r)+1


1
154 बाइट्स: इसे ऑनलाइन आज़माएं! वैसे अच्छी व्याख्या!
लकोनी

@ लिकोनी ऊह, वहाँ कुछ बहुत अच्छा सुधार!
सचान

1

सी, 106 चार्ट

i,j;main(){for(;i<32;j>i/2?puts(""),j=!++i:0)
printf("%*s",j++?4:33-i+i%2*2,i/2&j^j?"":i%2?"/__\\":"/\\");}

(यह अभी भी मुझे उत्साहित करता है कि puts("")सी में एक नई लाइन आउटपुट करने का सबसे छोटा तरीका है)

ध्यान दें कि आप की जगह बड़ा (या छोटा) गैसकेट बना सकते हैं 32में for, दो का एक बड़ा (छोटे) शक्ति के साथ पाश के परीक्षण लंबे समय के रूप के रूप में आप भी की जगह 33के बीच में printf()बिजली के-दो plus- साथ एक।

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