बीटा स्नोफ्लेक


12

चुनौती

15/16 सीज़न के लिए बर्फ़ की पहली परतें प्राप्त करने वाले कई स्थानों पर सर्दी तेज़ी से आ रही है, इसलिए हम स्नो मशीनों को तोड़कर खुद को कुछ बर्फ़ नहीं बनाते हैं?

nSTDIN के माध्यम से एक पूर्णांक को देखते हुए , ASCII प्रतिनिधित्व बीटा के स्नोफ्लेक (जैसा कि नीचे वर्णित है) के स्तर पर आउटपुट देता है n

बीटा स्नोफ्लेक

स्नोफ्लेक 0 से एकल x स्तर पर शुरू होता है:

x

फिर, प्रत्येक कोने पर आप इनमें से एक आकृति जोड़ते हैं:

x
xx

आप ऊपर के आकार को एक शीर्ष दाएं कोने में जोड़ते हैं। एक निचले दाएं कोने के लिए, इसे 90 ° दक्षिणावर्त घुमाएँ, नीचे बाएँ, 180 ° दक्षिणावर्त और ऊपर बाएँ, 270 ° दक्षिणावर्त घुमाएँ।

यदि आप ऐसा करते हैं, तो आपको निम्न आकार मिलते हैं:

 x x
xx xx
  x
xx xx
 x x

आकृतियों के उन्मुखीकरण पर ध्यान दें। लेवल 2 पाने के लिए हम आरेख को ऊपर वर्णित वर्णित ओरिएंटेशन नियमों का उपयोग करते हुए, प्रत्येक कोने में अधिक आकृतियों को जोड़ते हैं:

  x x x
 xxxxxxx
xx x x xx
 xxx xxx
xx  x  xx
 xxx xxx
xx x x xx
 xxxxxxx
  x x x

ध्यान दें कि आकृतियों को केवल xदो या अधिक उजागर पक्षों के साथ जोड़ा जाता है (जिसे ऊपर के कोने के रूप में संदर्भित किया जाता है)।

एल-आकार n1 से अधिक के मूल्यों के लिए ओवरलैप हो सकता है और उदाहरण के लिए:

यदि स्तर 0 है:

x x

तब स्तर 1 में ओवरलैप होना चाहिए (एक संकेत के साथ o, oअपने आउटपुट में शामिल न करें):

 x o x
xxxoxxx
  x x
xxxoxxx
 x o x 

आपका कार्य बीटा के स्नोफ्लेक के इस ASCII प्रतिनिधित्व को आउटपुट करना है।

बक्शीश

सबसे छोटे कार्यक्रम के लिए 50 प्रतिनिधि बोनस होगा, जो nनकारात्मक n*-1होने पर स्क्रीन पर छवि के रूप में या चित्र के रूप में स्नोफ्लेक (स्तर पर ) को आउटपुट करता है ।

आपके पास बाउंटी और मुख्य कार्य के लिए एक अलग कार्यक्रम हो सकता है।

जीतना

बाइट्स में सबसे छोटा कार्यक्रम जीतता है।


4
एक गामा स्नोफ्लेक इसका एक 3 डी संस्करण है।
कॉनर ओ'ब्रायन

1
@ C @O'Bʀɪᴇɴ वैसे यह एक चुनौती के लिए एक विचार है;)
बीटा

क्या आप 2 or more exposed sidesनियम स्पष्ट कर सकते हैं ? मान लिया जाये कि केंद्र है 0,0तो 1,1, 1,-1, -1,-1, -1,1सभी 2 उजागर पक्षों (पक्षों अन्य 4 अंक की ओर का सामना करना पड़) है। क्या यह 3+ खुला पक्ष नहीं होना चाहिए जिससे कि घुसपैठ न हो? या वैकल्पिक रूप से यह केवल तभी फैलता है जब इसमें 0 या 1 पड़ोसी (कार्डिनल) हो।
जोनाथन लीच-पेपिन

ऊपर के अनुसार, यह केंद्र के चारों ओर 'वर्ग' के कोनों पर n = 2 जैसे मामलों में अतिरिक्त वृद्धि का कारण होगा (यह एक चोटी नहीं है, लेकिन यह डब्ल्यू, NW, N पक्षों (शीर्ष के लिए) पर अवगत कराया गया है बाएं)।
जोनाथन लीच-पेपिन 14

जवाबों:


8

सीजेएम, 88 83 82 बाइट्स

1]]{{0f+zW%}8*{YYb_m*{~W$m>fm>}%z:z8Ybff=__1m>\1fm>]:zWf%(\:..|}4*..|}q~*" x"ff=N*

इसका परीक्षण यहां करें।

मुझे लगता है कि मैं बहुत कुछ बचा सकता हूं कि कैसे पता लगाऊं कि कोने कहां हैं। लेकिन कम से कम मुझे अंत में पता है कि अगले पुनरावृत्तियों क्या दिखते हैं:

एन = 3 :

   x x x x   
  xxxxxxxxx  
 xx x x x xx 
xx xxxxxxx xx
 xxx x x xxx 
xx xxx xxx xx
 xxx  x  xxx 
xx xxx xxx xx
 xxx x x xxx 
xx xxxxxxx xx
 xx x x x xx 
  xxxxxxxxx  
   x x x x   

एन = 4:

    x x x x x    
   xxxxxxxxxxx   
  xx x x x x xx  
 xx xxxxxxxxx xx 
xx xx x x x xx xx
 xxx xxxxxxx xxx 
xx xxx x x xxx xx
 xxx xxx xxx xxx 
xx xxx  x  xxx xx
 xxx xxx xxx xxx 
xx xxx x x xxx xx
 xxx xxxxxxx xxx 
xx xx x x x xx xx
 xx xxxxxxxxx xx 
  xx x x x x xx  
   xxxxxxxxxxx   
    x x x x x    

इन्हें देखते हुए, वे मेरी अपेक्षा बहुत अधिक नियमित प्रतीत होते हैं, और कुछ प्रकार के विश्लेषणात्मक समाधान जो उन्हें सीधे उत्पन्न करते हैं, बहुत कम हो सकते हैं।


1

पायथन 2, 269 बाइट्स

प्रत्येक कोने पर आकृतियों को जगह नहीं देता है, लेकिन यह निर्धारित करता है कि एक चरित्र निर्देशांक के आधार पर बर्फ के टुकड़े में है या नहीं।

पहले एक कोना उत्पन्न होता है, और फिर पूरे हिमखंड के चारों ओर प्रतिबिम्बित होता है।

i=input()
d=2*i+1
s=[x[:]for x in[[0]*d]*d]
s[0][0]=1
if i:s[1][1]=1
for j in range(2,d):
 for v in range(j+1):s[j][v]=s[v][j]=(j+v)%3!=1and j+v<d+i if v>j/2 else j%2==1or j%4+v%2in[0,3]
for l in[l[:0:-1]+l for l in s[:0:-1]+s]:print''.join(['X'if n else' 'for n in l])
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.