फाइबोनैचि सर्पिल


37

आपका लक्ष्य संख्याओं के साथ एक फाइबोनैचि सर्पिल उत्पन्न करना है ।

नमूना

उदाहरण इनपुट / आउटपुट

1 -> 1

2 -> 1 1

3 -> 1 1
     2 2
     2 2

6 -> 8 8 8 8 8 8 8 8 5 5 5 5 5
     8 8 8 8 8 8 8 8 5 5 5 5 5
     8 8 8 8 8 8 8 8 5 5 5 5 5
     8 8 8 8 8 8 8 8 5 5 5 5 5
     8 8 8 8 8 8 8 8 5 5 5 5 5
     8 8 8 8 8 8 8 8 1 1 3 3 3
     8 8 8 8 8 8 8 8 2 2 3 3 3
     8 8 8 8 8 8 8 8 2 2 3 3 3

9 का इनपुट

इनपुट इनपुट को STDIN या फ़ंक्शन तर्क के माध्यम से लिया जा सकता है। यह एक सिंगल नंबर होगा

आउटपुट आउटपुट STDOUT या फ़ंक्शन के रिटर्न मान से हो सकता है। यह एक एकल तार होना चाहिए।

लाइन के बहुत अंत में अतिरिक्त व्हाट्सएप की अनुमति नहीं है। आउटपुट में अंक, लाइनफ़ीड (न्यूलाइन्स) और रिक्त स्थान हो सकते हैं।

ओरिएंटेशन कोई मायने नहीं रखता है, इसका मतलब घुमाव और प्रतिबिंब हैं। जब तक यह एक वैध फाइबोनैचि सर्पिल पैटर्न का अनुसरण करता है।

अंकों की विभिन्न राशियों (जैसे 1 और 13) को एक-दूसरे के साथ सही-संरेखित किया जाना चाहिए। एक स्थान को एक लाइन के बहुत शुरुआत में जोड़ने की आवश्यकता हो सकती है ताकि सब कुछ लाइन में आ सके।

1   1                          1   1
100 100  should actually be  100 100

आप यहां एक उदाहरण देख सकते हैं


यह बाइट्स जीत में इतना छोटा कोड है!


4
संबंधित चुनौती (और एक बहुत ही शांत घड़ी)
Sp3000

Numbers with different amounts of digits (e.g. 1 and 13) should be aligned to the left side of the digit a space may need to be added to the very beginning of a line so everything can line up.ऐसा लगता है कि यह दो वाक्यों के रूप में स्पष्ट हो सकता है।
ट्राइकोप्लाक्स

यह उन उदाहरणों से दिखता है जो आप चाहते हैं कि प्रत्येक संख्या का सबसे सही अंक संरेखित हो, लेकिन "अंक के बाईं ओर संरेखित" विपरीत जैसा लगता है।
ट्राइकोप्लाक्स

क्या आप स्पष्ट कर सकते हैं "आसपास के व्हाट्सएप की अनुमति नहीं है"? विशेष रूप से - स्वीकार्य लाइनों पर व्हाट्सएप अग्रणी या अनुगामी है?
माउंटन व्यूमार्क

Matlab डिफ़ॉल्ट रूप से आउटपुट को प्रिंट करने के लिए प्रिंट करता है। क्या यह सांख्यिक-प्रकार के आउटपुट (स्ट्रिंग-प्रकार के आउटपुट के विपरीत) के लिए स्वीकार्य है जो स्वचालित रूप से प्रिंटआउट के लिए प्रिंट हो जाता है?
लुइस मेन्डो

जवाबों:


15

एपीएल, २३

{a,⍴⍨2⍴⊃⍴a←⌽⍉⍵}⍣(⎕-1)⍪1

स्पष्टीकरण:

⍪1               this creates a 1x1 matrix containing just 1
{..}⍣(⎕-1)     the power operator (⍣) repeats the function {} user input - 1 times
a,⍴⍨2⍴⊃⍴a←⌽⍉⍵   the function being iterated rotates the matrix and appends the next matrix to it.

इसे tryapl.org पर आज़माएं


1
यदि आप यहां खोज करते हैं, तो कई को पहले आपका संदेह था। यहाँ उदाहरण के लिए @Tobia का उत्तर है: * Dyalog APL एक विरासत चार्टसेट का समर्थन करता है जिसमें ऊपरी 128 बाइट मानों के लिए APL प्रतीक मैप किए गए हैं। इसलिए एक एपीएल प्रोग्राम जो केवल ASCII वर्णों का उपयोग करता है और APL प्रतीकों को बाइट्स == चार्ट माना जाता है।
मोरिस ज़ूका

ठीक है, फिर मैं अपनी टिप्पणी वापस लूंगा।
गरबा

1
@MorisZucca नोटिस, हालांकि, कुछ अक्षर (जैसे या ) उस वर्ण सेट से गायब हैं और जब आप उस नियम को निकालना चाहते हैं तो इसका उपयोग नहीं किया जा सकता है।
FUZxxl

1
यह सच है, "कुंजी" और "रैंक" नए कार्यान्वयन हैं और वास्तव में केवल Dyalog दुभाषिया I के यूनिकोड संस्करण में मौजूद हैं। क्लासिक संस्करण को versioncommand समकक्ष का उपयोग करना है। यही बात same (⎕OPT) पर भी लागू होती है। इस प्रकार मैं आमतौर पर सोचता हूं कि अगर मैं इसे डायलाग क्लासिक संस्करण में लिख सकता हूं, तो यह कहना सुरक्षित है कि यह 1 बाइट प्रति चार है। यदि मैं गलत हूं तो मुझे सही करों। और टिप्पणी के लिए धन्यवाद।
मोरिस ज़ूका

8

मतलाब, 84 बाइट्स

एक फ़ंक्शन का उपयोग किया जाता है। आउटपुट स्टडआउट में है।

function f(N)
s=0;t=1;y=1;for n=2:N
u=s+t;s=t;t=u;y=[rot90(y) t*ones(t)];end;disp(y)

उदाहरण:

>> f(1)
     1
>> f(2)
     1     1
>> f(3)
     1     2     2
     1     2     2
>> f(6)
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     3     3     3     1     1     8     8     8     8     8     8     8     8
     3     3     3     2     2     8     8     8     8     8     8     8     8
     3     3     3     2     2     8     8     8     8     8     8     8     8
>> f(7)
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     8     8     8     8     8     8     8     8    13    13    13    13    13    13    13    13    13    13    13    13    13
     5     5     5     5     5     1     2     2    13    13    13    13    13    13    13    13    13    13    13    13    13
     5     5     5     5     5     1     2     2    13    13    13    13    13    13    13    13    13    13    13    13    13
     5     5     5     5     5     3     3     3    13    13    13    13    13    13    13    13    13    13    13    13    13
     5     5     5     5     5     3     3     3    13    13    13    13    13    13    13    13    13    13    13    13    13
     5     5     5     5     5     3     3     3    13    13    13    13    13    13    13    13    13    13    13    13    13

मतलाब, 78 बाइट्स

function y=f(N)
s=0;t=1;y=1;for n=2:N
u=s+t;s=t;t=u;y=[rot90(y) t*ones(t)];end

Matlab की सुविधा को छोड़कर, ऊपर जैसा ही उपयोग किया गया है, अर्थात्, यह स्वचालित रूप से स्टडआउट में फ़ंक्शन आउटपुट (स्ट्रिंग के रूप में) प्रदर्शित करता है। यह उपरोक्त दृष्टिकोण में स्ट्रिंग में रूपांतरण से बचा जाता है।

f(6)
ans =
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     5     5     5     5     5     8     8     8     8     8     8     8     8
     3     3     3     1     1     8     8     8     8     8     8     8     8
     3     3     3     2     2     8     8     8     8     8     8     8     8
     3     3     3     2     2     8     8     8     8     8     8     8     8

कुछ मतलूब के समाधानों को देखकर खुशी हुई :-)
होकी

@ होकी धन्यवाद! :-)
लुइस मेंडो

7

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

a,b=0,1;L=[]
exec"a,b=b,a+b;L=zip(*L[::-1])+[[a]*a]*a;"*input()
for r in L:print" ".join("%*d"%(len(str(a)),x)for x in r)

घुमावों पर आराम के नियम इसे बहुत सरल बनाते हैं।

मैंने str(a)यहाँ के स्थान पर backticks का उपयोग नहीं किया है क्योंकि मुझे यकीन नहीं है कि क्या हमें आवश्यकता से अधिक अग्रणी स्थान की अनुमति है, अगर हम कभी भी लंबे समय तक पहुंचते हैं। हालांकि, भले ही हम थे, aखुद का उपयोग करना वैसे भी कम होगा।


7

रूबी, 243 242 236 233 222 170 130 बाइट्स

s,l,r=0,1,[]
gets.to_i.times{s+=l
l=s-l
s.times{r<<[s]*s}
r=r.transpose.reverse}
r.map{|w|puts w.map{|c|"%#{s.to_s.size}s"%c}*" "}

1
अच्छा गोल्फ! आप t==valueशर्तों को परिवर्तित करके लाइन 4 पर कुछ वर्णों को सहेज सकते हैं t>value। उदाहरण के लिए,(t=x%4)>2?s.times{r<<[s]*s}:t>1?s.times{r.map!{|w|w.unshift s}}:t>0?s.times{r.unshift [s]*s}:r.map!{|w|w+=[s]*s}}
क्रिस्टियन लुपस्कू

6

अजगर - 189 179 174

n=int(input())
f=[1,1]
while len(f)<n:f+=[f[-1]+f[-2]]
o=[[]]
for i in f:o=(list(zip(*o)))[::-1]+[[i]*i]*i
for x in o:print(' '.join(str(y).rjust(len(str(f[-1])))for y in x))

6

जे, 36 बाइट्स

1&(($~,~)@(1{$@]),.|:@|.@])&(,.1)@<:

उपयोग:

   (1&(($~,~)@(1{$@]),.|:@|.@])&(,.1)@<:) 6
8 8 8 8 8 8 8 8 5 5 5 5 5
8 8 8 8 8 8 8 8 5 5 5 5 5
8 8 8 8 8 8 8 8 5 5 5 5 5
8 8 8 8 8 8 8 8 5 5 5 5 5
8 8 8 8 8 8 8 8 5 5 5 5 5
8 8 8 8 8 8 8 8 1 1 3 3 3
8 8 8 8 8 8 8 8 2 2 3 3 3
8 8 8 8 8 8 8 8 2 2 3 3 3

तरीका:

फ़ंक्शन वर्तमान वर्ग को घुमाता है और नए वर्ग को वर्तमान में जोड़ता है input-1 बार । पिछले आयत के आकार से वर्ग आकार और तत्व मान एकत्र किए जाते हैं।

कोड स्पष्टीकरण:

1&(           loop
    ($~,~)      new square with size and elements
    @(1{$@])    with the size of the second dimension of the current rectangle
    ,.          attached to
    |:@|.@]     rotated current rectangle
)&(,.1)       starting the loop with matrix 1
@<:           looping input-1 times

इसे यहाँ ऑनलाइन आज़माएँ।


6

हास्केल, 183 176 171 163 बाइट्स

import Data.List
s t=map((t>>[l t])++)t
e 1=[[1]];e n=s.reverse.transpose$e$n-1
f=g.e
g m=unlines$map(>>=((show$l m)#).show)m
a#b|l a<l b=b;a#b=a#(' ':b)
l=length

फ़ंक्शन है f, जो एक संख्या लेता है और एक स्ट्रिंग लौटाता है:

λ: putStr $ f 8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  5  5  5  5  5  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  5  5  5  5  5  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  5  5  5  5  5  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  5  5  5  5  5  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  5  5  5  5  5  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  3  3  3  1  1  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  3  3  3  2  2  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21  3  3  3  2  2  8  8  8  8  8  8  8  8
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13
 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 13 13 13 13 13 13 13 13 13 13 13 13 13

5

पायथ, 34 बाइट्स

jbmsm.[hl`lhZ`k\ d=Zu+_CGmmlGGGQ]]

हैरानी की बात है कि मैट्रिक्स उत्पन्न करने के बजाय आधे से अधिक कोड प्रिंटिंग / पेडिंग है।

मैट्रिक्स की पीढ़ी वास्तव में सरल है, लेकिन इसमें एक ट्रांसपोज़ और रिवर्सल है, और एन लाइनों को एन की एन कॉपियों से जोड़ना है, जहां एन लाइनों की वर्तमान संख्या है।

7 के लिए उदाहरण आउटपुट:

  5  5  5  5  5  8  8  8  8  8  8  8  8
  5  5  5  5  5  8  8  8  8  8  8  8  8
  5  5  5  5  5  8  8  8  8  8  8  8  8
  5  5  5  5  5  8  8  8  8  8  8  8  8
  5  5  5  5  5  8  8  8  8  8  8  8  8
  3  3  3  1  1  8  8  8  8  8  8  8  8
  3  3  3  2  2  8  8  8  8  8  8  8  8
  3  3  3  2  2  8  8  8  8  8  8  8  8
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13
 13 13 13 13 13 13 13 13 13 13 13 13 13

4

पर्ल, 289 277 257 बाइट्स

@f=(0,1);push@f,$f[-1]+$f[-2]while(@f<=$ARGV[0]);$d=1+length$f[-1];shift@f;map{$v=$f[$_];$t=sprintf("%${d}d",$v)x$v;$_%4||map{unshift@s,$t}1..$v;$_%4==3&&map{$_.=$t}@s;$_%4==2&&map{push@s,$t}1..$v;$_%4==1&&map{$_=$t.$_}@s;}0..$#f;$\=$/;for(@s){s/^ //;print}

4

के, 48 बाइट्स

{{`0:1_',/'(1+#$|//x)$x}(x-1){+|x,\:t#t:#x}/,,1}

और कार्रवाई में:

  {{`0:1_',/'(1+#$|//x)$x}(x-1){+|x,\:t#t:#x}/,,1}7
 8  8  8  8  8  8  8  8  5  5  5  5  5
 8  8  8  8  8  8  8  8  5  5  5  5  5
 8  8  8  8  8  8  8  8  5  5  5  5  5
 8  8  8  8  8  8  8  8  5  5  5  5  5
 8  8  8  8  8  8  8  8  5  5  5  5  5
 8  8  8  8  8  8  8  8  1  1  3  3  3
 8  8  8  8  8  8  8  8  2  2  3  3  3
 8  8  8  8  8  8  8  8  2  2  3  3  3
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13
13 13 13 13 13 13 13 13 13 13 13 13 13

अभी भी गोल्फ के लिए कुछ अच्छे अवसर हो सकते हैं।

कार्यक्रम में मूल रूप से दो भाग होते हैं- संघटित मैट्रिक्स उत्पन्न करना और इसे आउटपुट के लिए स्वरूपित करना। पूर्व काफी सरल है:

  {(x-1){+|x,\:t#t:#x}/,,1}5
(3 3 3 2 2
 3 3 3 2 2
 3 3 3 1 1
 5 5 5 5 5
 5 5 5 5 5
 5 5 5 5 5
 5 5 5 5 5
 5 5 5 5 5)

1x1 मैट्रिक्स वाले 1 से शुरू होकर, T की एक T-लंबाई वेक्टर का निर्माण करें जहां T पहले आयाम ( t#t:#x) पर शुरुआती मैट्रिक्स की लंबाई है और इसे मूल मैट्रिक्स की प्रत्येक पंक्ति में संलग्न करें ( x,\:)। परिणाम को उलट और ट्रांसफ़र करना ( +|) इसे 90 डिग्री घुमाता है। हम इसे एन -1 बार करते हैं।

फ़ॉर्मेटिंग बहुत क्लिंकी है, क्योंकि मैट्रिक्स को प्रिंट करने के लिए के का प्राकृतिक दृष्टिकोण नंबर कॉलम को उस तरह से संरेखित नहीं करेगा जिस तरह से हमें ज़रूरत है:

{`0:1_',/'(1+#$|//x)$x}

मूल विचार मैट्रिक्स के अधिकतम तत्व को लेना है ( |//x), इसे एक स्ट्रिंग (एकरी $) में परिवर्तित करें , इसकी लंबाई प्लस एक ( 1+#) लें और फिर मैट्रिक्स के तत्वों को उस आकार के सही संरेखित तारों को प्रारूपित करें। फिर साफ करने के लिए, उन तारों को मिलाएं ( ,/') और परिणामी अग्रणी स्थान ( 1_') को छोड़ दें।


4

सीजेएम, 48 बाइट्स

1saali({z{W%}%_0=,__sa*a*+}*_W=W=,):U;{USe[}f%N*

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

पैटर्न उत्पन्न करने का मुख्य हिस्सा यथोचित सीधा लगता है। अब तक बनाई गई आयत को घुमाएं, और तल पर मानों का एक वर्ग जोड़ें।

हालाँकि, रिजल्ट को पेड करने का कोड भयानक लगता है। मैंने नेस्टेड सूची में पैडिंग को लागू करने के लिए fऔर :ऑपरेटरों के संयोजन का एक समूह बनाने की कोशिश की , लेकिन कुछ भी काम नहीं किया। यदि किसी के पास बेहतर सुझाव हैं, तो उनका स्वागत है।

1s    First value. Using string for values so that we can pad them in the end.
aa    Wrap it twice. Data on stack will be a list of lists (list of lines).
li    Get input.
(     Decrement, since we seeded the list at n=1.
{     Loop over n.
  z     Transpose...
  {W%}% ... and reverse all lines, resulting in a 90 degree rotation.
  _0=,  Get length of line, which is the size of square we need to add.
  __    Create two copies of size.
  sa    Convert one size to string, and wrap it in array.
  *     Replicate it size times. This is one line.
  a     Wrap the line...
  *     ... and replicate it size times. The square of new values is done.
  +     Add the list of lines to the previous list of lines.
}*    End of loop over n.
_W=W= Get last value produced.
,)    Take its length, and increment it. This is the output field width.
:U;   Store the field width in variable, and pop it. This is ugly.
{     Start of block applied to all values.
  U     Field width stored in variable.
  S     Space.
  e[    Pad left.
}f%   End of block applied to all values.
N*    Join lines with newline.

सभी लाइनों को उल्टा करने के साथ किया जा सकता है Wf%। इसके अलावा, क्या आप पैडिंग के {Se[}ff%बजाय कुछ कर पाएंगे :U;{USe[}f%? (वह काम नहीं कर सकता जैसा कि है, मैं इसके माध्यम से अभी नहीं सोच सकता।)
5

2

पायथ, 29 बाइट्स

Vu+C_GmmlGGGQ\]Yjdm.\[l`lN`d\ N

प्रदर्शन।

यदि पेडिंग नि: शुल्क / अंतर्निहित था, जैसे एपीएल में, या मैट्रिक्स आउटपुट की अनुमति थी, तो यह 14 बाइट्स होगा:

u+C_GmmlGGGQ]Y

2

रूबी, 129 बाइट्स

मैंने अन्य माणिक उत्तर को एक गुच्छा के रूप में संपादित किया, लेकिन मेरा सबसे हालिया परिवर्तन स्वीकार नहीं किया जा रहा है या कुछ और है, इसलिए यहां यह है:

s,r=0,[[1]]
gets.to_i.times{s+=r[0][0]
r=(r+[[s]*s]*s).transpose.reverse}
r.map{|w|puts w.map{|c|"%#{r[0][s].to_s.size}s"%c}*' '}

1
PPCG में आपका स्वागत है! गोल्फिंग सुधारों को आम तौर पर यहाँ के आसपास अस्वीकार कर दिया जाता है (यदि आपके अन्य सुझावों को स्वीकार कर लिया गया है जो कि एक निरीक्षण होना चाहिए था), क्योंकि उन्हें लेखक की समीक्षा के लिए टिप्पणियों में पोस्ट किया जाना चाहिए। इस नीति के पीछे तर्क के लिए यह मेटा पोस्ट देखें।
मार्टिन एंडर

जानकारी के लिए धन्यवाद, समझ में आता है। टिप्पणी करना कि मैंने मूल रूप से क्या किया होगा, लेकिन मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा अंक नहीं थे, लेकिन भविष्य में करेंगे। हैप्पी गोल्फिंग!
user2251284

1

ईएस 6, 248 बाइट्स

n=>(f=(n,o=n)=>Array(n).fill(o),g=n=>n<3?[f(n,1)]:(a=g(n-2)).reverse().concat(f(l=a[0].length,f(l))).map((e,i,a)=>f(a.length).concat(e.reverse())),a=g(n),s=' '.repeat(l=` ${a[0][0]}`.length),a.map(a=>a.map((e,i)=>(s+e).slice(!i-1)).join``).join`\n`)

कहा पे \n एक शाब्दिक न्यूलाइन चरित्र का प्रतिनिधित्व करता है।

औपचारिक रूप से स्वरूपण कोड का एक बड़ा हिस्सा लेता है।

fएक सहायक फ़ंक्शन है जो एक भरा हुआ सरणी बनाता है। इसका उपयोग ज्यादातर भरे हुए वर्गों को बनाने के लिए किया जाता है, लेकिन पुनरावृत्ति के लिए आधार मामलों का उत्पादन करने के लिए हाथ से दोगुना हो जाता है।

gमुख्य ग्रन्टवर्क है। यह अंतिम रूप से अंतिम लेकिन एक समाधान उत्पन्न करता है, इसे 180 डिग्री घुमाता है, फिर अगले दो वर्गों को जोड़ता है।

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