প্রদত্ত আকারের সমস্ত বর্গাকার সাব-ম্যাট্রিক তৈরি করুন


14

আপনাকে পূর্ণসংখ্যার এম এবং আরও একটি ধনাত্মক পূর্ণসংখ্যা এন এর স্কোয়ার ম্যাট্রিক্স দেওয়া হবে , যা এম এর আকারের তুলনায় কঠোরভাবে ছোট । আপনার টাস্ক সমস্ত চৌকো উপ-ম্যাট্রিক্স উৎপন্ন হয় এম আকারের এন

এই চ্যালেঞ্জের উদ্দেশ্যে, একটি বর্গাকার সাব-ম্যাট্রিক্স এম এর মধ্যে সংলগ্ন সারি এবং কলামগুলির একটি গ্রুপ ।

ইনপুট / আউটপুট ফর্ম্যাটগুলি

আপনি অন্য যে কোনও যুক্তিসঙ্গত ফর্ম্যাট বেছে নিতে পারেন, এগুলি কয়েকটি উদাহরণ।

ইনপুট

  • নেটিভ ম্যাট্রিক্স টাইপের একটি ম্যাট্রিক্স (যদি আপনার ভাষার একটি থাকে)
  • একটি 2 ডি অ্যারে (1 ডি অ্যারেগুলির একটি অ্যারে, প্রতিটি এক সারি / এক কলামের সাথে সম্পর্কিত)
  • একটি 1 ডি অ্যারে (যেহেতু ম্যাট্রিক্স সর্বদা বর্গক্ষেত্র হয়)
  • একটি স্ট্রিং (আপনি ব্যবধানটি বেছে নিয়েছেন, তবে দয়া করে এটি কোনওভাবেই অপব্যবহার করবেন না) ইত্যাদি

আউটপুট

  • ম্যাট্রিক্সের একটি ম্যাট্রিক্স।
  • একটি 4 ডি অ্যারে, যেখানে প্রতিটি উপাদান (3 ডি তালিকা) একটি সারি / কলামে উপ-ম্যাট্রিকগুলি উপস্থাপন করে।
  • একটি 3D অ্যারে, যেখানে প্রতিটি উপাদান (2D তালিকা) একটি উপ-ম্যাট্রিক্স উপস্থাপন করে।
  • ফলাফলের সাব-ম্যাট্রিক্স ইত্যাদির একটি স্ট্রিং প্রতিনিধিত্ব

চশমা

  • আপনি নিতে চয়ন করতে পারেন আকার এর এম ইনপুট হিসাবে খুব। এটি কমপক্ষে 2 হওয়ার নিশ্চয়তা রয়েছে ।
  • আউটপুটটির অরিয়েন্টেশনটি নির্বিচারে: আপনি কলামের তালিকা বা সারিগুলির তালিকা হিসাবে সাব-ম্যাট্রিকগুলিকে আউটপুট চয়ন করতে পারেন, তবে আপনার পছন্দটি অবশ্যই সামঞ্জস্যপূর্ণ হতে হবে।
  • আপনি যে কোনও প্রোগ্রামিং ভাষায় প্রতিযোগিতা করতে পারেন এবং কোনও মানক পদ্ধতির মাধ্যমে ইনপুট নিতে এবং আউটপুট সরবরাহ করতে পারেন , যখন এই লুফোলগুলি ডিফল্টরূপে নিষিদ্ধ।
  • এটি , তাই প্রতিটি ভাষার জন্য সংক্ষিপ্ততম জমা (বাইটে) জিততে পারে।

উদাহরণ

দেওয়া এন = 3 এবং এম :

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

সম্ভাব্য 3x3 সাবমেট্রিকগুলি হ'ল:

+ ------- + + -------- + 1 2 3 4 1 2 3 4
| 1 2 3 | 4 1 | 2 3 4 | + -------- + + -------- +
| 5 6 7 | 8 5 | 6 7 8 | | 5 6 7 | 8 5 | 6 7 8 |
| 9 10 11 | 12 9 | 10 11 12 | | 9 10 11 | 12 9 | 10 11 12 |
+ ------- + + -------- + | 13 14 15 | 16 13 | 14 15 16 |
13 14 15 16 13 14 15 16 + -------- + + -------- +

সুতরাং ফলাফল হবে:

[[[1, 2, 3], [5, 6, 7], [9, 10, 11]], [[2, 3, 4], [6, 7, 8], [10, 11, 12]], [[5, 6, 7], [9, 10, 11], [13, 14, 15]], [[6, 7, 8], [10, 11, 12], [14, 15, 16]]]

উপরে উল্লিখিত হিসাবে, এর একটি আউটপুট:

[[[1, 5, 9], [2, 6, 10], [3, 7, 11]], [[2, 6, 10], [3, 7, 11], [4, 8, 12]], [[5, 9, 13], [6, 10, 14], [7, 11, 15]], [[6, 10, 14], [7, 11, 15], [8, 12, 16]]]

এছাড়াও যদি আপনি পরিবর্তে সারিগুলির তালিকা হিসাবে সাব-ম্যাট্রিকগুলি ফেরত দিতে চান তবে তা গ্রহণযোগ্যও হবে।

পরীক্ষার মামলা

ইনপুটগুলি এম, এন :

[[1,2,3],[5,6,7],[9,10,11]], 1
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]], 3
[[100,-3,4,6],[12,11,14,8],[0,0,9,3],[34,289,-18,3]], 2
[[100,-3,4,6],[12,11,14,8],[9,10,11,12],[13,14,15,16]], 3

এবং সম্পর্কিত আউটপুট (সারিগুলির তালিকা হিসাবে দেওয়া সাব-ম্যাট্রিক্স):

[[[1]],[[2]],[[3]],[[5]],[[6]],[[7]],[[9]],[[10]],[[11]]]
[[[1,2,3],[5,6,7],[9,10,11]],[[2,3,4],[6,7,8],[10,11,12]],[[5,6,7],[9,10,11],[13,14,15]],[[6,7,8],[10,11,12],[14,15,16]]]
[[[100,-3],[12,11]],[[-3,4],[11,14]],[[4,6],[14,8]],[[12,11],[0,0]],[[11,14],[0,9]],[[14,8],[9,3]],[[0,0],[34,289]],[[0,9],[289,-18]],[[9,3],[-18,3]]]
[[[100,-3,4],[12,11,14],[9,10,11]],[[-3,4,6],[11,14,8],[10,11,12]],[[12,11,14],[9,10,11],[13,14,15]],[[11,14,8],[10,11,12],[14,15,16]]]

বা, কলামগুলির তালিকা হিসাবে:

[[[1]],[[2]],[[3]],[[5]],[[6]],[[7]],[[9]],[[10]],[[11]]]
[[[1,5,9],[2,6,10],[3,7,11]],[[2,6,10],[3,7,11],[4,8,12]],[[5,9,13],[6,10,14],[7,11,15]],[[6,10,14],[7,11,15],[8,12,16]]]
[[[100,12],[-3,11]],[[-3,11],[4,14]],[[4,14],[6,8]],[[12,0],[11,0]],[[11,0],[14,9]],[[14,9],[8,3]],[[0,34],[0,289]],[[0,289],[9,-18]],[[9,-18],[3,3]]]
[[[100,12,9],[-3,11,10],[4,14,11]],[[-3,11,10],[4,14,11],[6,8,12]],[[12,9,13],[11,10,14],[14,11,15]],[[11,10,14],[14,11,15],[8,12,16]]]]

স্যান্ডবক্স পোস্ট (এখন মুছে ফেলা হয়েছে, কেবল 2k এর বেশি খ্যাতিযুক্ত ব্যবহারকারীরা এটি দেখতে পারবেন)। প্রতিক্রিয়া জানিয়েছেন প্রত্যেককে ধন্যবাদ।
মিস্টার এক্সকোডার 13


@ লুইস মেন্ডো হ্যাঁ, এটি অনুমোদিত।
মিস্টার এক্সকোডার

উত্তর:



5

এমএটিএল , 4 বাইট

thYC

ইনপুট হয় n, তারপর M

আউটপুটটি একটি ম্যাট্রিক্স, যেখানে প্রতিটি কলামে একটি সাবম্যাট্রিক্সের সমস্ত কলাম থাকে।

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

ব্যাখ্যা

thY    % Address the compiler with a formal, slightly old-fashioned determiner
C      % Convert input to ouput

আরও গুরুত্ব সহকারে, tইনপুট এন বিহীনভাবে নেয় এবং স্ট্যাকের উপর এটি নকল করে। hউভয় অনুলিপি এন এর কন্টেটেট করে অ্যারে তৈরি করে [এন, এন]এমYC ইনপুট এমপ্লিটলি নেয় , এর সমস্ত [n, n] সাইজ ব্লকগুলি বের করে এবং কলাম-মেজর ক্রমে কলাম হিসাবে তাদের সাজায়। এর অর্থ হ'ল প্রতিটি ব্লকের কলামগুলি একক কলাম তৈরি করতে উল্লম্বভাবে স্ট্যাক করা আছে।


1
"ফর্মাল, কিছুটা পুরানো ফ্যাশন সর্বনাম" এবং খুব সুন্দর গল্ফের জন্য এলএল +1।
জিউসেপ

@ জিউস্পেপ আমি ঠিক বুঝতে পেরেছি যে এটি একটি নির্ধারক, সর্বনাম নয়: - /
লুইস মেন্ডো

ঠিক আছে, আমি সর্বদা "আপনার / আপনার" অধিকারী সর্বনাম হিসাবে শিখেছি; এই প্রথম নির্ধারকের শুনানি!
জিউসেপ

@ জিউজ্পে "আপনার / আপনার" হ'ল অধিকারী নির্ধারক, অর্থাৎ তারা একটি নাম নিয়ে যান: "এটি আপনার গাড়ি"। "আপনার / আপনার" অধিকারী সর্বনাম, অর্থাত্ নামটি বাদ দেওয়া হয়েছে: "এটি আপনার" " এবং আমি প্রাথমিকভাবে "তোমার" কে একটি ব্যক্তিগত সর্বনাম দিয়ে বিভ্রান্ত করেছি, যা আসলে "তুমি" হবে। আমি কী জগাখিচুড়ি করেছি :-)
লুইস মেন্ডো

4

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

বেনাম আর্গুমেন্ট হিসাবে এন এবং এনামিক্স ইনফিক্স ল্যাম্বদা এবং ডান আর্গুমেন্ট হিসাবে এম taking

{s↓(-s2⍴⌈¯1+⍺÷2)↓⊢⌺⍺ ⍺⊢⍵}

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

{} বেনাম লাম্বদা যেখানে বাম যুক্তি এবং এটিই সঠিক যুক্তি:

⊢⍵ সঠিক যুক্তি উপস্থাপন ( থেকে পৃথক )⍺ ⍺

⊢⌺⍺ ⍺ সব বাই প্রান্ত ওভারল্যাপিং সহ submatrices (যারা zeros সঙ্গে padded হয়)

()↓ প্রথম দুটি মাত্রা সহ নীচের সংখ্যা উপাদানগুলি ফেলে দিন:

  ⍺÷2 অর্ধেক

  ¯1+ নেতিবাচক এক প্লাস যে

   বৃত্তাকার

  2⍴ cyclically r দুটি উপাদান একটি তালিকায় eshape

  s← সংরক্ষণ s(জন্য গুলি hards)

  - নেগেটিভ (যেমন পিছন থেকে ড্রপ)

s↓sপ্রথম এবং দ্বিতীয় মাত্রা বরাবর উপাদানগুলি ছেড়ে দিন (সামনে থেকে)


4

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

{(12 1 3 4⍉⊖)⍣(4×⌊⍺÷2)⊢⌺⍺ ⍺⊢⍵}

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

অ্যাডামের থেকে আলাদা পদ্ধতি।


আপনি কি কোনও ব্যাখ্যা দেওয়ার পরিকল্পনা করছেন (আপনি গল্ফিং শেষ করার পরে)? আমি এটি কীভাবে কাজ করে তা দেখতে আগ্রহী হব (এবং আমি এপিএল কিছুতেই জানি না) :)
এমিগানা

@ এমিগনা হ্যাঁ, যদি আমার ততক্ষণে সময় হয়।
এরিক আউটগল্ফার

খুব চালাক. আপনি যদি সাফল্যের সাথে নগণ্য মামলার ক্ষেত্রে ডায়ডিক ব্যবহার করতে পারেন তবে আপনি সত্যই অ্যারে প্রোগ্রামিংয়ে দক্ষতা অর্জন করেছেন।
অ্যাডম

@ অ্যাডেম উহ, যদিও আমি মনে করি এই উত্তরটি আসলে অবৈধ :-( সম্পাদনা: স্থির, তবে এখন এটি 31 বাইট দীর্ঘ ...
এরিক দ্য আউটগল্ফার

আমার জমা থেকে পরীক্ষার স্যুটটি অনুলিপি বোধ করুন।
অ্যাডাম

3

আর , 75 বাইট

function(M,N,S,W=1:N,g=N:S-N)for(i in g)for(j in g)print(M[i+W,j+W,drop=F])

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

নেয় M, Nএবং Sম্যাট্রিক্সের আইজ।

স্টাডাউটের ফলাফল ম্যাট্রিকগুলি মুদ্রণ করে; drop=Fপ্রয়োজন তাই N=1ইনডেক্সিং dimগুণটি বাদ দেয় না এবং একটি matrixপরিবর্তে ফলন করে vector


3

জে , 11 8 বাইট

-3 মাইল ধন্যবাদ বাইট

<;._3~,~

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


1
এটি 8 বাইট <;._3~,~ব্যবহার করে এবং নিজের সাথে আকারটি যুক্ত করার পরিবর্তে একটি হুক ব্যবহার করে, তারপরে ম্যাট্রিক্সের একটি ম্যাট্রিক্সকে আউটপুট হিসাবে অনুমোদিত হওয়ার কারণে প্রতিটি কাট এবং বাক্সগুলি।
মাইল মাইল

@ মাইলস ধন্যবাদ, এটি এখন মার্জিত!
গ্যালেন ইভানভ


2

জেলি , 5 বাইট

Z⁹Ƥ⁺€

4D আউটপুট ফর্ম্যাট ব্যবহার করে। 3 ডি এর জন্য 6 বাইটের জন্য একটি সংযোজন করুন ।

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

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

Z⁹Ƥ⁺€  Main link. Left argument: M (matrix). Right argument: n (integer)

 ⁹Ƥ    Apply the link to the left to all infixes of length n.
Z        Zip the rows of the infix, transposing rows and columns.
   ⁺€  Map Z⁹Ƥ over all results.

আমি আড্ডায় 202029 ব্যবহারকারীর মতো অনুরূপ কিছু প্রস্তাব দিয়েছি। একটি বিকল্প 5 বাইটার হয় ṡ€Zṡ€
মিঃ এক্সকোডার

2

ব্র্যাচল্যাগ , 13 বাইট

{tN&s₎\;Ns₎}ᶠ

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

এটি কলামের তালিকা প্রদান করে।

প্রযুক্তিগতভাবে, tN&s₎\;Ns₎একটি উত্পাদক প্রাকক্রিয়া যা তার আউটপুটটিকে সেই সাবমেট্রিকগুলির সাথে এক করে দেয়। আমরা {…}ᶠকেবল সমস্ত সম্ভাবনা প্রকাশ করতে ব্যবহার করি ।

ব্যাখ্যা

 tN&              Call the second argument of the input N
{          }ᶠ     Find all:
    s₎              A substring of the matrix of size N
      \             Transpose that substring
       ;Ns₎         A substring of that transposed substring of size N

1

স্ট্যাক্স , 10 বাইট

│Æ☼♂Mqß E╖

চালাও এটা

একই প্রোগ্রামটির আসকি উপস্থাপনা হ'ল

YBFMyBF|PMmJ

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

Y               Store the number in the y register
 B              Batch the grid into y rows each
  F             Foreach batch, run the rest of the program
   M            Transpose about the diagonal
    yB          Batch the transposed slices into y rows each
      F         Foreach batch, run the rest of the progoram
       |P       Print a blank line
         M      Transpose inner slice - restoring its original orientation
          mJ    For each row in the inner grid, output joined by spaces

1

জাভাস্ক্রিপ্ট (ES6), 91 বাইট

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয় (a)(n)। সারিগুলির তালিকা হিসাবে ফলাফলগুলি প্রদান করে।

a=>n=>(g=x=>a[y+n-1]?[a.slice(y,y+n).map(r=>r.slice(x,x+n)),...g(a[x+n]?x+1:!++y)]:[])(y=0)

পরীক্ষার মামলা


1

এপিএল (ডায়ালগ ক্লাসিক) , 24 23 বাইট

t∘↑¨(¯1-t←-2⍴⎕)↓,⍀⍪\⍪¨⎕

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

ফলাফলটি ম্যাট্রিক্সের একটি ম্যাট্রিক্স, যদিও ডায়ালগের আউটপুট ফর্ম্যাটটি এটি খুব সুস্পষ্ট করে না

ম্যাট্রিক্স ( ) ইনপুট করুন , প্রতিটি উপাদানকে তার নিজের ( ⍪¨) নেস্টেড ম্যাট্রিক্সে পরিণত করুন , সারি ( ,\) এবং কলাম ( ⍪⍀) দ্বারা ইনপুট এন ( ) উপস্থাপন করুন, নেস্টেড ম্যাট্রিকের প্রথম এন -1 সারি এবং কলামগুলি ফেলে দিন ( (¯1-t←-2⍴⎕)↓), প্রতিটি ম্যাট্রিক্স থেকে নীচে ডানদিকে এন-বাই-এন কোণে ধরুন ( t∘↑¨)

                                        ┌─┬──┬───┐
                                        aababc      ┼──┼───┤        ┼──┼───┤
 n=2       ┌─┬─┬─┐      ┌─┬──┬───┐      ├─┼──┼───┤      ababc        ab bc
┌───┐      abc      aabbac      aababc      dedef        de ef
abc  ⍪¨  ├─┼─┼─┤  ,\  ├─┼──┼───┤  ⍪⍀  ddedef 1 1 ┼──┼───┤¯2 ¯2∘↑¨┼──┼───┤
def ---> def ---> ddeedf ---> ├─┼──┼───┤ ---> ababc  --->       
ghi      ├─┼─┼─┤      ├─┼──┼───┤      aababc      dedef        de ef
└───┘      ghi      gghhgi      ddedef      ghghi        gh hi
           └─┴─┴─┘      └─┴──┴───┘      gghghi      ┴──┴───┘        ┴──┴───┘
                                        └─┴──┴───┘

0

রুবি , 63 বাইট

->c,g{n=c.size-g+1
(0...n*n).map{|i|c[i/n,g].map{|z|z[i%n,g]}}}

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

এটি একটি লম্বা একটি 2 ডি অ্যারে এবং একটি ইনট নেয়, একটি 3 ডি অ্যারে ফিরিয়ে দেয়।

Ungolfed:

->m,n{
  a = m.size - n + 1     # The count of rows in m that can be a first row in a submatrix
  (0...a*a).map{ |b|     # There will be a*a submatrices
    m[b/a,n].map{ |r|    # Take each possible set of n rows
      r[b%a,n]           # And each possible set of n columns
    }
  }
}

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