"স্ল্যাশ" ক্রমে ম্যাট্রিক্স


23

দুটি ধনাত্মক সংখ্যা দেওয়া হয়েছে N >= 2এবং N <= 100একটি ম্যাট্রিক্স তৈরি করুন যা নিম্নলিখিত বিধিগুলি অনুসরণ করে:

  • প্রথম সংখ্যাটি পজিশনে শুরু হয় [0,0]
  • দ্বিতীয় নম্বর পজিশনে শুরু হয় [0,1]
  • তৃতীয় সংখ্যা প্রথম সংখ্যা (অবস্থান [1,0]) এর নিচে যায়
  • নিম্নলিখিত সংখ্যাগুলি "স্ল্যাশ" দিকে চলে যায়
  • ব্যবহৃত সংখ্যার ব্যাপ্তি [1, N1 * N2]। সুতরাং, সংখ্যাগুলি 1 থেকে শুরু করে উভয় ইনপুটগুলির গুণনের ফলাফল পর্যন্ত যায়।

ইনপুট

  • দুটি সংখ্যা N >= 2এবং N <= 100। প্রথম সংখ্যাটি সারিগুলির পরিমাণ, দ্বিতীয় সংখ্যাটি কলামের পরিমাণ of

আউটপুট

  • ম্যাট্রিক্স। (বহুমাত্রিক অ্যারে বা লাইন ব্রেকগুলির সাথে স্ট্রিং হিসাবে আউটপুট করা যায়)

উদাহরণ:

প্রদত্ত সংখ্যা 3 and 5আউটপুট:

1   2   4   7   10
3   5   8   11  13
6   9   12  14  15

দেওয়া সংখ্যা 2 and 2

1   2
3   4

নম্বর দেওয়া 5 and 5

1   2   4   7   11
3   5   8   12  16
6   9   13  17  20
10  14  18  21  23
15  19  22  24  25

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


2
আমরা কি কোনও সংখ্যার জন্য 0 সূচক ব্যবহার করতে পারি?
জো কিং

2
@ জোকিং নং অবশ্যই ১ টা থেকে শুরু হবে
লুইস


1
@ লুইসেলপডিজেসাস মুনোজ সম্ভবত অর্ডারটির জন্য আরও ভাল শব্দটি "তির্যক"? ব্যক্তিগতভাবে, আমি এটিকে "জিগ-জাগ" বলব, কারণ এটি আমাকে ক্যান্টোরের জিগ-জাগ প্রমাণের কথা মনে করিয়ে দেয়, তবে এটি বিভ্রান্তিকর হতে পারে।
mbomb007

2
@ লুইসফেলিপডিজেসাস মুনোজ অ্যান্টি-ডায়াগোনালটি অন্যান্য তির্যকের জন্য শব্দ।
Qwr

উত্তর:


21

জেলি , 6 5 বাইট

pSÞỤs

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

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

pSÞỤs  Main link. Left argument: n. Right argument: k

p      Take the Cartesian product of [1, ..., n] and [1, ..., k], yielding
       [[1, 1], [1, 2], ..., [n, k-1], [n, k]].
 SÞ    Sort the pairs by their sums.
       Note that index sums are constant on antidiagonals.
   Ụ   Grade up, sorting the indices of the sorted array of pairs by their values.
    s  Split the result into chunks of length k.

অভিশাপ। খনি 200+ বাইট। আপনি কিছু ব্যাখ্যা pls যোগ করতে পারেন?
লুইস ফিলিপ দে জেসুস মুনোজ

3
Godশ্বর এটা খারাপ, ডেনিস। এছাড়াও, ভাল কাজ।
নিট

6
বাহ, এটি খুব "নিবিড়ভাবে সম্পর্কিত"। এটি মাইলের উত্তরের প্রথম লিঙ্কটির অনুরূপ । উভয় upvoting বিবেচনা করুন। :)
ব্যবহারকারী 202729

1
আমি মনে করি এটি দিয়ে এটি করা সম্ভব হতে পারে <atom><atom>¥þতবে আমি সঠিক সংমিশ্রণটি খুঁজে পাচ্ছি না। oþ++þকাছাকাছি থাকলেও বেশ সেখানে যায় না
ডাইলানান

1
@akozi এতদূর, এত ভাল। বাছাই করা অ্যারের সূচকগুলি [1, 2, 3, 4, 5, 6]এই অ্যারের বিশৃঙ্খলভাবে, কী ব্যবহার করে সেটি মানচিত্রে 1করতে [1, 1], 2করতে [1, 2], 3করতে [2, 1], ইত্যাদি মূলত, এই খুঁজে বের করে সাজানো-বাই-অঙ্কের অ্যারে থেকে প্রতিটি জোড়া সূচী সাজানো-lexicographically অ্যারে
ডেনিস


7

আর , 101 60 54 বাইট

function(M,N)matrix(rank(outer(1:M,1:N,"+"),,"l"),M,N)

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

পরামর্শ দেওয়ার জন্য @ নোহেলহোফকে ধন্যবাদ rank

ডেনিসের জেলি উত্তর পোর্টস ।

পুরানো উত্তর, 101 বাইট:

function(M,N)matrix(unsplit(lapply(split(1:(M*N),unlist(split(x,x))),rev),x<-outer(1:M,1:N,"+")),M,N)

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

splitএখানে বেশিরভাগ কাজ করছে; সম্ভবত একটি গল্ফিয়ার অ্যালগরিদম আছে তবে এটি অবশ্যই কাজ করে।

ব্যাখ্যা:

function(M,N){
x <- outer(1:M,1:N,"+")			# create matrix with distinct indices for the antidiagonals
idx <- split(x,x)			# split into factor groups
items <- split(1:(M*N),unlist(idx))	# now split 1:(M*N) into factor groups using the groupings from idx
items <- lapply(items,rev)		# except that the factor groups are
					# $`2`:1, $`3`:2,3, (etc.) but we need
                                        # $`2`:1, $`3`:3,2, so we reverse each sublist
matrix(unsplit(items,x),M,N)		# now unsplit to rearrange the vector to the right order
					# and construct a matrix, returning the value
}

এটি অনলাইন চেষ্টা করুন! - আপনি চূড়ান্ত ফলাফলটি পরিবর্তন না করে মধ্যবর্তী ফলাফল দেখতে printঅ্যাসাইনমেন্টের ডান হাতের যে কোনও একটিের চারপাশে একটি মোড়ানো ব্যবহার করতে পারেন <-, কারণ printএর ইনপুট ফেরত দেয়।


1
আপনি কিছু ব্যাখ্যা pls যোগ করতে পারেন?
লুইস ফিলিপ দে জেসুস মুনোজ

1
@ LuisfelipeDejesusMunoz যোগ করা হয়েছে। যদি কিছু অস্পষ্ট থাকে তবে আমাকে জানান এবং আমি চেষ্টা করে পরিষ্কার করব।
জিউসেপে

1
rank(x,1,"f")2 চেয়ে খাটো বাইট order(order(x))
নয়েলহোহফ

ওহ, খুব সুন্দর, তবে এটি ব্যবহার করাও rank(x,,"l")মুক্তি পাবে t
জিউসেপে

6

জাভা 10, 121 120 109 105 বাইট

m->n->{var R=new int[m][n];for(int i=0,j,v=0;i<m+n;)for(j=++i<n?0:i-n;j<i&j<m;)R[j][i-++j]=++v;return R;}

-১১ বাইট @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।
-৪ বাইট @ সিলিংক্যাট ধন্যবাদ

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

ব্যাখ্যা:

m->n->{                // Method with two integer parameters and integer-matrix return-type
  var R=new int[m][n]; //  Result-matrix of size `m` by `n`
  for(int i=0,j,       //  Index integers, starting at 0
          v=0;         //  Count integer, starting at 0
      i<m+n;)          //  Loop as long as `i` is smaller than `m+n`
    for(j=++i<n?0      //   Set `j` to 0 if `i+1` is smaller than `n`
               :i-n;   //   or to the difference between `i` and `n` otherwise
        j<i&j<m;)      //   Inner loop `j` until it's equal to either `i` or `m`,
                       //   so basically check if it's still within bounds:
      R[j][i-++j]=++v; //    Add the current number to cell `j, i-(j+1)`
  return R;}           //  Return the result-matrix

আমি বুঝতে পারি এটি প্রথমে কলাম এবং তারপরে সারিগুলি নেয় takes
লুইস ফিলিপ দে জেসুস মুনোজ

@Luis আমার মনে হয় এটা সনদে যেমন স্থানাঙ্ক নেওয়া x,y/width,height
জো রাজা


5

জে , 15 বাইট

$1(+/:@;)</.@i.

মাইল থেকে এই সমাধানের জন্য আরও 4 বাইট। ধন্যবাদ!

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

জে , 22 19 বাইট

-3 বাইট ধন্যবাদ ফ্রাউনফ্রোগের জন্য!

,$[:>:@/:@/:@,+/&i.

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

জে ডেনিসের দুর্দান্ত জেলি সমাধানের একটি বাস্তবায়ন।

ব্যাখ্যা:

ডায়াডিক ক্রিয়া, বাম এবং ডান আর্গুমেন্ট নেয় (এমএফএন)

+/&i. 0..m-1 এবং 0..n-1 তালিকা তৈরি করে এবং তাদের জন্য একটি অতিরিক্ত সারণী তৈরি করে:

   3 +/&i. 5
0 1 2 3 4
1 2 3 4 5
2 3 4 5 6

[:>:@/:@/:@, টেবিলটি সমতল করে এবং তালিকাটিকে দু'বার গ্রেড করে এবং এতে 1 যুক্ত করে:

   3 ([:>:@/:@/:@,+/&i.) 5
1 2 4 7 10 3 5 8 11 13 6 9 12 14 15

,$ তালিকাটিকে আবার এমএক্সএন টেবিলে পুনরায় আকার দিন:

   3 (-@],\[:>:@/:@/:@,+/&i.) 5
1 2  4  7 10
3 5  8 11 13
6 9 12 14 15

1
-@],\,$জন্য -3 বাইট।
ফ্রাউনফ্রোগ

@ ফ্রাউনফ্রোগ - অবশ্যই, আমি বোকা বোধ করি, এটি এখন এতটাই বাজে। ধন্যবাদ!
গ্যালেন ইভানভ

1
$1(+/:@;)</.@i.অ্যারে হিসাবে ইনপুট সহ 15 বাইট[r, c]
মাইল মাইল

@ মাইলস: খুব দুর্দান্ত, ধন্যবাদ! আমি চেষ্টা করেছি /.কিন্তু আপনার ফলাফলটি অর্জন করতে পারিনি :)
গ্যালেন ইভানভ

4

এপিএল + উইন, 38 বা 22 বাইট

পূর্বে পূর্ণসংখ্য ইনপুট কলামের জন্য অনুরোধ জানানো হয়:

m[⍋+⌿1+(r,c)⊤m-1]←m←⍳(c←⎕)×r←⎕⋄(r,c)⍴m

বা:

(r,c)⍴⍋⍋,(⍳r←⎕)∘.+⍳c←⎕

ডেনিসের গ্রেড আপের দ্বৈত প্রয়োগের ভিত্তিতে। মিস করেছেন :(


1
প্রশ্নের জন্য দুঃখিত তবে কোথাও কি আমি এটি পরীক্ষা করতে পারি?
লুইস ফিলিপ দে জেসুস মুনোজ

@ লুইস ফিলিপ দে জেসুস মুনোজ কোনও সমস্যা নেই। APL + WIN লাইনে উপলভ্য নয় তবে আপনি যদি নিজের পছন্দের পূর্ণসংখ্যার সাথে ⎕ অক্ষরগুলি প্রতিস্থাপন করেন তবে আপনি এটি চেষ্টা করতে পারেন tryapl.org এ ডায়ালগ ওয়েবসাইটে test
গ্রাহাম 14

4

ওল্ফ্রাম ভাষা (গণিত) , 73 67 বাইট

উপরের সারিতে উপাদানগুলি গণনা করুন: Min[j+k,#2]~Sum~{k,i-1}

বর্তমান সারিতে এবং নীচে উপাদানগুলি গণনা করুন: Max[j-k+i-1,0]~Sum~{k,i,#}

একটি টেবিলের মধ্যে রাখুন এবং 1 যোগ করুন। ভয়েলা:

1+Table[Min[j+k,#2]~Sum~{k,i-1}+Max[j-k+i-1,0]~Sum~{k,i,#},{i,#},{j,#2}]&

আপডেট: আমি বুঝতে পেরেছি ম্যাট্রিক্সে সাধারণভাবে নির্দিষ্ট পজিশনের চেয়ে দুটি মাত্রার উপরে মাত্র একটি যোগফলের সাথে সমস্ত অবস্থানের গণনা করার একটি আরও ছোট উপায় আছে:

Table[1+Sum[Boole[s-i<j-t||s-i==j-t<0],{s,#},{t,#2}],{i,#},{j,#2}]&

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

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


4

এপিএল (ডায়ালগ ইউনিকোড) , 14 12 বাইট

{⍵⍴⍋⍋∊+/↑⍳⍵}

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

-2 ngn ধন্যবাদ , তার চতুর ব্যবহারের কারণে↑⍳

ডেনিসের 5-বাইট জেলি সমাধানের ভিত্তিতে।


∘.+⌿⍳¨⍵->+/↑⍳⍵
এনজিএন

@ngn বাহ, যে একটি চালাক ব্যবহার এর সঙ্গে মিলিত
এরিক আউটগল্ফার


2

পাইথন 3 , 164 বাইট

from numpy import*
r=range
def h(x,y):
 a,i,k,j=-array([i//y+i%y for i in r(x*y)]),1,2,0
 while j<x+y:a[a==-j],i,k,j=r(i,k),k,k+sum(a==~j),j+1
 a.shape=x,y;return a

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

এটি অবশ্যই সংক্ষিপ্ততম সমাধান নয়, তবে আমি ভেবেছিলাম এটি একটি মজাদার।


from numpy import*এবং উভয় হ্রাস n.সামান্য খাটো। এছাড়াও, আপনি স্থানটি ড্রপ করতে পারেন ) for। আর পাইথন 2 পরিবর্তন আপনি পরিবর্তন করতে পারবেন return aকরার print a(পাইথন 3 এটি একই বাইট গোনা হবে print(a))।
কেভিন ক্রুইজসেন

ধন্যবাদ! আমার ভাবা উচিত ছিল import*। আমি ডেনিসের জবাব কখনই পরাজিত করব না, তাই আমি পাইথন 3
-কে আঁকড়ে ধরব


2

জাপট , 25 24 বাইট

হার্ড মার্জিত, কিন্তু কাজ সম্পন্ন। জাপটে 2D ডেটা নিয়ে কাজ করা জটিল।

;N×Ç<U©Ap[] A®Ê<V©Zp°T
A

;                      // Set alternative default vars where A is an empty array.
 N×Ç                   // Multiply the inputs and map the range [0..U*V).
    <U                 // If the current item is less than the second input,
      ©Ap[]            // add a new empty subarray into A.
            A®         // Then, for each item in A,
              Ê<V      // if its length is less than the first input,
                 ©Zp°T // Add the next number in the sequence to it.
A                      // Output the results, stored in A.

-Qফলাফলগুলি আরও সহজে দেখার জন্য আমি টিআইওতে পতাকা যুক্ত করেছি , এটি সমাধানটিকে প্রভাবিত করে না। অলিভারকে
ধন্যবাদ একটি বাইট বন্ধ ।

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


কথা বলছেন ×, আপনি প্রতিস্থাপন করতে পারেন *V সঙ্গে
অলিভার

1
@ অলিভার এবং এখানে আমি ভেবেছিলাম শর্টকাটটি কার্যকর, তবে সাধারণ ব্যবহারের ক্ষেত্রে নয়। অনেক ধন্যবাদ!
নিত


2

টিআই-বেসিক, 76 বাইট

Prompt A,B
{A,B🡒dim([A]
1🡒X
For(E,1,B+A
For(D,1,E
If D≤A and E-D<B
Then
X🡒[A](D,E-D+1
X+1🡒X
End
End
End
[A]

ব্যবহারকারীর ইনপুটটির জন্য অনুরোধ করে এবং ম্যাট্রিক্সকে ইনটার্ন দেয় Ans এবং প্রিন্ট করে।

টিআই-বেসিক একটি টোকেনাইজড ভাষা ; এখানে ব্যবহৃত সমস্ত টোকেনগুলি একটি বাইট, অন্যটি [A]2 বাইট ব্যতীত।

দ্রষ্টব্য: টিআই-বেসিক (কমপক্ষে টিআই -৪৪ প্লাস সিইতে) কেবলমাত্র 99x99 পর্যন্ত ম্যাট্রিকগুলি সমর্থন করে এবং তাই এই প্রোগ্রামটি করে।

ব্যাখ্যা:

Prompt A,B        # 5 bytes, prompt for user input
{A,B🡒dim([A]      # 9 bytes, make the matrix the right size
1🡒X               # 4 bytes, counter variable starts at 1
For(E,1,B+A       # 9 bytes, Diagonal counter, 1 to A+B-1, but we can over-estimate since we have to check later anyway.
For(D,1,E         # 7 bytes, Row counter, 1 to diagonal count
If D≤A and E-D<B  # 10 bytes, Check if we are currently on a valid point in the matrix
Then              # 2 bytes, If so,
X🡒[A](D,E-D+1     # 13 bytes, Store the current number in the current point in the matrix
X+1🡒X             # 6 bytes, Increment counter
End               # 2 bytes, End dimension check if statement
End               # 2 bytes, End row for loop
End               # 2 bytes, End dimension for loop
[A]               # 2 bytes, Implicitly return the matrix in Ans and print it


2

জাভা (জেডিকে 10) , 142 131 বাইট

X->Y->{var A=new int[X][Y];int E=1;for(int y=0;y<Y+X-1;y++)for(int x=0;x<X;x++){if(y-x<0|y-x>Y-1)continue;A[x][y-x]=E++;}return A;}

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

ব্যাখ্যা:

X->Y->{                            // Method with two integer parameters and integer-matrix return-type
    var A=new int[X][Y];           // The Matrix with the size of X and Y
    int E=1;                       // It's a counter
        for(int y=0;y<Y+X-1;y++)   // For each column plus the number of rows minus one so it will run as long as the bottom right corner will be reached
            for(int x=0;x<X;x++){  // For each row
                if(y-x<0|y-x>Y-1)  // If the cell does not exist becouse it's out of range
                    continue;      // Skip this loop cycle
                A[x][y-x]=E++;     // Set the cell to the counter plus 1
            }
    return A;                      // Return the filled Array
}

বিগ ধন্যবাদ কেভিন Cruijssen কারণ আমি কিভাবে আমার কোড চালানোর জন্য জানেন না Tio
শিরোনাম এবং পাদলেখের মতো কিছু কোড তার কাছ থেকে চুরি হয়ে গেছে। -> তার উত্তর


1
119 বাইট: tio.run/…
অজ্ঞতার


1

পিএইচপি, 115 বাইট

একটি সুন্দর আলস্য পন্থা; সম্ভবত সবচেয়ে কম সম্ভব।

function($w,$h){for(;$i++<$h*$w;$r[+$y][+$x]=$i,$x--&&++$y<$h||$x=++$d+$y=0)while($x>=$w|$y<0)$y+=!!$x--;return$r;}

বেনামে ফাংশন, পরামিতি হিসাবে প্রস্থ এবং উচ্চতা নেয়, 2 ডি ম্যাট্রিক্স প্রদান করে

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



1

সংযুক্তি , 45 বাইট

{Chop[Grade//2<|Flat!Table[`+,1:_2,1:_],_]+1}

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

নামবিহীন ল্যাম্বদা, যেখানে প্যারামিটারগুলি স্যুইচ করা হয়। এটি +1 বাইটে প্রিপেন্ড করে স্থির করা যেতে পারে~প্রোগ্রামটিতে করে এটি করা যায়। পরীক্ষা স্যুট এটি ইতিমধ্যে করে।

ব্যাখ্যা

এই পদ্ধতির জে জবাব এবং জেলি উত্তর অনুরূপ

প্রথম ধারণাটি হ'ল মানগুলির একটি সারণি তৈরি করা:

Table[`+,1:_2,1:_]

এটি উভয় ইনপুট প্যারামিটারের ব্যাপ্তি ব্যবহার করে একটি সংযোজন সারণী উত্পন্ন করে। ইনপুট জন্য [5, 3], এটি দেয়:

A> Table[`+,1:3,1:5]
 2 3 4 5 6
 3 4 5 6 7
 4 5 6 7 8

তারপরে, আমরা এটি দিয়ে সমতল করুন Flat!:

A> Flat!Table[`+,1:3,1:5]
[2, 3, 4, 5, 6, 3, 4, 5, 6, 7, 4, 5, 6, 7, 8]

জে জবাবটিতে পদ্ধতির সাহায্যে আমরা অ্যারে গ্রেড করতে পারি (এটি, সাজানো মানগুলির সূচকগুলি ফেরত পাঠাতে) দুবার দিয়ে Grade//2:

A> Grade//2<|Flat!Table[`+,1:3,1:5]
[0, 1, 3, 6, 9, 2, 4, 7, 10, 12, 5, 8, 11, 13, 14]

তারপরে, আমাদের জেলি উত্তরের মতো মানগুলি সঠিকভাবে কাটাতে হবে। এটি করার জন্য আমরা প্রতিটি _উপাদানকে কাটাতে পারি:

A> Chop[Grade//2<|Flat!Table[`+,1:3,1:5],5]
 0 1  3  6  9
 2 4  7 10 12
 5 8 11 13 14

তারপরে, আমাদের কেবল সংযুক্তির 0-সূচকের জন্য ক্ষতিপূরণ দিতে হবে +1:

A> Chop[Grade//2<|Flat!Table[`+,1:3,1:5],5]+1
 1 2  4  7 10
 3 5  8 11 13
 6 9 12 14 15

এবং এইভাবে আমরা ফলাফল আছে।


1

পাইথন 3 , 259 বাইট

সুতরাং আমি এটি একটি অদ্ভুত উপায়। আমি লক্ষ করেছি যে অ্যারে ফর্ম দুটি উপায় আছে।

প্রথম হ'ল শীর্ষ সারির প্যাটার্নটিতে প্রতিটি পদ 1 -> h থেকে বাড়ার পার্থক্য রয়েছে যেখানে h উচ্চতা এবং l দৈর্ঘ্য। সুতরাং আমি সেই প্যাটার্নের ভিত্তিতে উপরের সারিটি তৈরি করি

ম্ল্যাটিকের ম্যাট্রিক্সের জন্য (3,4) একটি দেওয়ার জন্য max RoC = 3আমরা ফর্মের উপরের সারিটি দেখতে পাব

1, (1+1), (2+2), (4+3) = 1, 2, 4, 7

এর পরিবর্তে ধরুন যে max RoC = 3আমরা দিচ্ছি এমন ম্লান (3,9) পরিবর্তে একটি শীর্ষ সারি দেখতে পাবে

`1, (1+1), (2+2), (4+3), (7+3), (10+3), (13+3), (16+3), (19+3) = 1, 2, 4, 7, 10, 13, 16, 19, 22

দ্বিতীয় প্যাটার্নটি হ'ল কীভাবে সারিগুলি একে অপর থেকে পরিবর্তিত হয়। যদি আমরা ম্যাট্রিক্স বিবেচনা করি:

1   2   4   7   11
3   5   8   12  16
6   9   13  17  20
10  14  18  21  23
15  19  22  24  25

এবং নীচের সারি থেকে প্রতিটি সারিটি বিয়োগ করুন (অতিরিক্ত সারি উপেক্ষা করে) get

2 3 4 5 5
3 4 5 5 4
4 5 5 4 3
5 5 4 3 2

এই ম্যাট্রিক্সটি দেখে আমরা লক্ষ্য করতে পারি এই ম্যাট্রিক্সটি ক্রমটি 2 3 4 5 5 4 3 2যেখানে প্রতিটি সারি দ্বারা প্রতিটি সারিটির জন্য 1 দ্বারা স্থানান্তরিত এই প্যাটার্নটির 5 পদ রয়েছে। চাক্ষুষ জন্য নীচে দেখুন।

         |2 3 4 5 5| 4 3 2
       2 |3 4 5 5 4| 3 2
     2 3 |4 5 5 4 3| 2
   2 3 4 |5 5 4 3 2|

সুতরাং চূড়ান্ত ম্যাট্রিক্স পেতে আমরা আমাদের প্রথম সারিটি তৈরি করি এবং আমরা এই প্যাটার্নটির 5 প্রয়োজনীয় শর্তাদি যোগ করে সেই সারিটি আউটপুট করি।

এই প্যাটার্নটিতে সর্বদা শুরু 2-> max valueএবং শেষের বৈশিষ্ট্য থাকবে max value -> 2যেখানে max value = min(h+1, l)সর্বাধিক মানটি প্রদর্শিত হবে এবং তার সংখ্যাটি appearances of max = h + l -2*c -2কোথায়c = min(h+1, l) - 2

সুতরাং নতুনভাবে আমার সারি তৈরির পদ্ধতিটি পুরোপুরি দেখাচ্ছে

1  2  3  7  11 +      |2 3 4 5 5|4 3 2  = 3  5  8  12 16

3  5  8  12 16 +     2|3 4 5 5 4|3 4 2  = 6  9  13 17 20

6  9  13 17 20 +   2 3|4 5 5 4 3|4 2    = 10 14 18 21 23

10 14 18 21 23 + 2 3 4|5 5 4 3 2|       = 15 19 22 24 25

নীচে সম্পর্কিত কোড। এটি সংক্ষিপ্ত হওয়া শেষ হয়নি তবে আমি এখনও পদ্ধতিটি পছন্দ করি।

o,r=len,range
def m(l,h):
 a,t=[1+sum(([0]+[x for x in r(1,h)]+[h]*(l-h))[:x+1]) for x in r(l)],min(l,h+1);s,c=[x for x in r(2,t)],[a[:]]
 for i in r(h-1):
  for j in r(o(a)):
   a[j]+=(s+[t]*(l+h-2*(t-2)-2)+s[::-1])[0+i:l+i][j]
  c+=[a[:]]
 for l in c:print(l)

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


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