দ্বি-মাত্রিক তালিকা হিসাবে পাস্কালের ত্রিভুজ


11

একটি পাস্কেলের ত্রিভুজ তৈরি করুন যা নেস্টেড তালিকা এবং অব্যবহৃত দাগগুলিতে শূন্য রয়েছে।

আউটপুট অ্যারেতে, প্যাসকেলের ত্রিভুজের সংখ্যাগুলি শূন্য দ্বারা পৃথক করা হয় এবং প্রতিটি পাশে শূন্য দ্বারা প্যাড করা হয় যাতে তারা কেন্দ্রিক হয়। উদাহরণস্বরূপ, নীচের সারিতে (শেষ সাব-অ্যারে) বাম এবং ডানদিকে কোনও জিরো থাকতে হবে না; দ্বিতীয় সর্বশেষের সাব-অ্যারেতে প্রতিটি দিকে একটি করে শূন্য প্যাডিং রয়েছে।

ইনপুট জন্য আউটপুট এখানে 5:

[[0,0,0,0,1,0,0,0,0],
[0,0,0,1,0,1,0,0,0],
[0,0,1,0,2,0,1,0,0],
[0,1,0,3,0,3,0,1,0],
[1,0,4,0,6,0,4,0,1]]

যথারীতি, কয়েকটি বাইট জয়যুক্ত সমাধান।


5
সদৃশ এই । দুর্ভাগ্যক্রমে, কেবল আউটপুট ফর্ম্যাট পরিবর্তন করা চ্যালেঞ্জের পরিবর্তন করে না। আপনার যদি এখনও এটির সাহায্যের প্রয়োজন হয় তবে স্ট্যাক ওভারফ্লোতে পোস্ট করার চেষ্টা করুন।
গ্যামারকর্পস

2
ঠিক আছে, অতিরিক্ত শূন্য আছে।
ক্যালকুলেটরলাইন

এই প্রোগ্রামটি আপনার পছন্দমতো মুদ্রণ করে (পাইথন 3):print("def pascal(n):\n #make the nested list\n a=[[0 for i in range(2*n+1)] for j in range(n+1)] #make the list\n a[0][n]=1 #add the initial 1\n for i in range(1,n+1):\n for j in range(2*n+1):\n a[i][j]=a[i-1][j-1]+a[i-1][(j+1)%(2*n+1)] #the main part\n return a")
ক্যালকুলেটরফ্লাইন

1
@ ক্যাটস আরেফ্লুফি অতিরিক্ত শূন্যগুলি কেবল পূর্ববর্তী পুনরাবৃত্তির জায়গাগুলি প্রতিস্থাপন করে - এটি কার্যত একই সমস্যা same
রিদ্দেসি

2
আমি কি আমার ভাষার জন্য নেটিভ অ্যারে উপস্থাপনা সিনট্যাক্স ব্যবহার করতে পারি, বা বিন্যাসটি অ-আলোচনাযোগ্য?
বিড়াল

উত্তর:


3

গণিত, 70 68 বাইট

NestList[ListConvolve[{1,0,1},#,2]&,Join[#,{1},#],#2]&[0~Table~#,#]&

এমএটিএল সমাধানের মতো।


3

গণিত, 48 বাইট

CellularAutomaton[{#+#3&@@#&,{},1},{{1},0},#-1]&

CellularAutomation চমৎকার.


2

জেলি, 12 বাইট

NR¬ṙ-,1S$³Ð¡

এখানে চেষ্টা করুন।

ব্যাখ্যা

                   This is a list of functions, each operating on the input, n:
NR                 Get the range [-n -n+1 ... 0 ... n-1 n].
  ¬                Logical NOT the entire range: [0 0 ... 1 ... 0 0].
         ³Ð¡       Repeat n times, and cumulate the results:
   ṙ-,1                Rotate by both -1 and 1
       S               Sum the results.
        $              (Joins the above two functions)

1

হাস্কেল, 66 বাইট

q n|d<-0<$[2..n]=scanl(\(s:t)_->zipWith(+)(0:s:t)$t++[0])(d++1:d)d

ব্যবহারের উদাহরণ: q 4-> [[0,0,0,1,0,0,0],[0,0,1,0,1,0,0],[0,1,0,2,0,1,0],[1,0,3,0,3,0,1]]

কিভাবে এটা কাজ করে:

d <- 0<$[2..n]                      -- bind d to a list of (length n)-1 zeros
scanl                               -- build a list
                         (d++1:d)   -- starting with  [d ++ 1 ++ d]
      \(s:t)_                    d  -- by combining the previous element with the
                                    -- elements of d, but ignoring them, i.e.
                                    -- build a list of (length d) by repeatedly
                                    -- modifying the start element by
          zipWith(+)                -- adding element-wise
                    (0:s:t)         -- the previous element prepended by 0  
                           t++[0]   -- and the tail of the previous element
                                    -- followed by a 0 

1

পাইথন 3, 172 158 133 বাইট

def p(n):
 x=2*n+1;y=range
 a=[[0]*x]*n;a[0][n]=1
 for i in y(1,n+1):
  for j in y(x):a[i][j]=a[i-1][j-1]+a[i-1][(j+1)%(x)]
 return a

আরো ভালো হতে থাকে


1
এটি এখনও পুরোপুরি গল্ফ হয় না, তাই না?
বিড়াল

ওম, হ্যাঁ এটি (কিছুটা কম গল্ফযুক্ত আকারে) একটি প্রোগ্রাম দ্বারা মুদ্রিত হয় যা আমি প্রশ্নের উপর আ মন্তব্য রেখেছি।
ক্যালকুলেটরলাইন

1

এমএটিএল , 24 22 21 বাইট

tEq:=Gq:"t5BX+8L)]N$v

সম্পাদনা (20 মে, 2016): ভাষার 18.0.0 সংস্করণ হিসাবে, উপরের কোডটি চালানোর জন্য কয়েকটি পরিবর্তন দরকার। নীচের লিঙ্কটিতে সেই পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে

এটি অনলাইন চেষ্টা করুন!

এটি প্রতিটি নতুন সারিটি স্ট্যাকের উপরে ঠেলাতে একটি লুপ ব্যবহার করে। পূর্ববর্তী সারিতে একটি নতুন সারি গণনা করা হয়েছে [1,0,1]কেবলমাত্র পছন্দসই আকারের সাথে কনভলিউশন প্রয়োগ করে। লুপের পরে, সমস্ত সারিগুলি 2D অ্যারেতে সংযুক্ত করা হয়, যা প্রদর্শিত হয়। 2D অ্যারে এমএটিএল-এ কলাম-প্রান্তিক সংখ্যার সারণী হিসাবে প্রদর্শিত হয়।

t           % implicit input n. Duplicate
Eq          % 2*n-1
:           % range [1,2,...,2*n-1]
=           % gives [0,0,...1,...0,0]. This is the first row
Gq:         % range [1,2,...,n-1]
"           % for each. Repeat n-1 times
  t         %   duplicate latest row. This duplicate will become the next row
  5B        %   push array [1,0,1] (5 converted to binary)
  X+        %   convolution
  8L        %   predefined literal [2,-1i]. Used for indexing
  )         %   apply that index: remove one element at each end
]           % end for each
N$v         % concatenate all rows into a 2D array. Implicitly display

0

জাভাস্ক্রিপ্ট, 152 146 বাইট

f=i=>[...Array(i)].map((x,j)=>(z=[...Array(i*2-1)].map((_,k)=>+!!~[i-j,i+j].indexOf(k+1)),y=j?z.map((_,k)=>_||(k&&(k+1 in y)?y[k-1]+y[k+1]:_)):z))


0

গুরুতরভাবে, 33 বাইট

╩╜r`╣;lD0nkdZΣ`M╜rRZ`i0nkd@;)kΣ`M

এটি অনলাইনে চেষ্টা করুন

আমি তুলনামূলকভাবে কমপক্ষে 7 বা তার বেশি বাইটগুলি শেভ করে রাখতে পারি, তাই আমি আরও গল্ফ করা শেষ না হওয়া পর্যন্ত একটি ব্যাখ্যা পোস্ট করার জন্য অপেক্ষা করব।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.