ম্যাট্রিক্স জিগস ধাঁধা


24

ইনপুট:

  • একটি পূর্ণসংখ্যা n
  • দুটি সমান আকারের বর্গ ম্যাট্রিক (তাদের প্রস্থ / উচ্চতা একাধিক হতে n)

আউটপুট:

আপনার নিজের পছন্দের দুটি স্বতন্ত্র মানের একটির মধ্যে একটি সত্যবাদী ফলাফলের জন্য এবং অন্যটি ভুয়া ফলাফলের জন্য (তাই হ্যাঁ, 1/0পরিবর্তে true/falseজাভা জাতীয় ভাষার জন্য বৈধ আউটপুট, যদিও তারা সরকারী সত্যবাদী / ভুয়া মূল্যবোধ হিসাবে বিবেচনা করা হয় না )।

সত্যবাদী / মিথ্যা আউটপুট নির্দেশ করে যে আমরা আকারের ব্লকগুলি n by nঅন্য ম্যাট্রিক্সের সমান করতে একটি ম্যাট্রিক্সে পুনর্বিন্যাস করতে পারি কিনা indicates

উদাহরণ:

ইনপুট:

Matrix 1:
1 2 3 4 5 6
7 8 9 0 1 2
3 4 5 6 7 8
9 8 7 6 5 4
3 2 1 0 9 8
1 1 1 1 1 1

Matrix 2:
3 2 9 8 7 8
1 1 1 1 5 4
3 4 5 6 1 0
9 0 7 6 1 1
5 6 1 2 3 4
1 2 7 8 9 8

Integer n:
2

আউটপুট: truthy

কেন?

যদি আমরা ম্যাট্রিকগুলিকে ব্লকগুলিতে ভাগ করি তবে আমরা 2 by 2দেখতে পাচ্ছি যে একটি ম্যাট্রিক্সের সমস্ত ব্লক অন্য ম্যাট্রিক্সেও পাওয়া যাবে:

Matrix 1:
1 2 | 3 4 | 5 6
7 8 | 9 0 | 1 2
---------------
3 4 | 5 6 | 7 8
9 8 | 7 6 | 5 4
---------------
3 2 | 1 0 | 9 8
1 1 | 1 1 | 1 1

Matrix 2:
3 2 | 9 8 | 7 8
1 1 | 1 1 | 5 4
---------------
3 4 | 5 6 | 1 0
9 0 | 7 6 | 1 1
---------------
5 6 | 1 2 | 3 4
1 2 | 7 8 | 9 8

চ্যালেঞ্জ বিধি:

  • আপনি ধরে নিতে পারেন যে ম্যাট্রিকগুলিতে কেবল অ-নেতিবাচক সংখ্যা (ব্যাপ্তি [0,9]) থাকবে
  • আপনি ধরে নিতে পারেন ম্যাট্রিকগুলির প্রস্থ / উচ্চতা সমান এবং একাধিক n
  • আপনি অনুমান করতে পারেন nসীমার মধ্যে হতে হবে [1, 50], এবং প্রস্থ / ম্যাট্রিক্সের উচ্চতা সীমার মধ্যে হয় [1,100]
  • n by nম্যাট্রিকগুলি একে অপরের ক্রমশক্তি যখন ব্লকগুলিতে বিভক্ত হয় তবে তা নির্ধারণ করতে শুধুমাত্র পৃথক ব্লকগুলি একবার ব্যবহার করা যেতে পারে n by n
  • একাধিক n by nব্লক একই হতে পারে ।
  • n by nব্লক যদি দুটি ম্যাট্রিক্সের ব্লক মধ্যে একে অপরের যখন বিভক্ত বিন্যাস যখন পরীক্ষণ একই স্থিতিবিন্যাস থাকবে n by n

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার জন্য যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলির সাথে মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

Input:
Matrix 1:       Matrix 2:       Integer:
1 2 3 4 5 6     3 2 9 8 7 8     2
7 8 9 0 1 2     1 1 1 1 5 4
3 4 5 6 7 8     3 4 5 6 1 0
9 8 7 6 5 4     9 0 7 6 1 1
3 2 1 0 9 8     5 6 1 2 3 4
1 1 1 1 1 1     1 2 7 8 9 8
Output:
truthy

Input:
Matrix 1:       Matrix 2:       Integer:
1 2 3 4 5 6     3 2 9 8 7 8     1
7 8 9 0 1 2     1 1 1 1 5 4
3 4 5 6 7 8     3 4 5 6 1 0
9 8 7 6 5 4     9 0 7 6 1 1
3 2 1 0 9 8     5 6 1 2 3 4
1 1 1 1 1 1     1 2 7 8 9 8
Output:
truthy

Input:
Matrix 1:       Matrix 2:       Integer:
1 2 3 4 5 6     3 2 9 8 7 8     3
7 8 9 0 1 2     1 1 1 1 5 4
3 4 5 6 7 8     3 4 5 6 1 0
9 8 7 6 5 4     9 0 7 6 1 1
3 2 1 0 9 8     5 6 1 2 3 4
1 1 1 1 1 1     1 2 7 8 9 8
Output:
falsey

Input:
Matrix 1:    Matrix 2:    Integer:
1 2 3 4      1 2 3 4      4
2 3 4 5      2 3 4 5
3 4 5 6      3 4 5 6
4 5 6 7      4 5 6 7
Output:
truthy

Input:
Matrix 1:    Matrix 2:    Integer:
1 2 3 4      3 4 3 4      2
2 3 4 5      4 5 4 5
3 4 5 6      1 2 5 6
4 5 6 7      2 3 6 6
Output:
falsey

Input:
Matrix 1:    Matrix 2:    Integer:
1 2          2 3          1
3 4          1 1
Output:
falsey

Input:
Matrix 1:    Matrix 2:    Integer:
0            8            1
Output:
falsey

Input:
Matrix 1:    Matrix 2:    Integer:
1 2 3 4      1 2 1 2      2
5 6 7 8      5 6 5 6
9 0 0 9      0 9 9 0
4 3 2 1      2 1 4 3
Output:
falsey

Input:
Matrix 1:    Matrix 2:    Integer:
1 2 1 2      9 5 1 2      2
3 4 3 4      7 7 3 4
8 3 9 5      1 2 8 3
6 1 7 7      3 4 6 1
Output:
truthy

Input:
Matrix 1:      Matrix 2:      Integer:
1 0 2 0 0 3    1 1 1 0 0 3    2
1 1 1 1 1 1    2 0 1 1 1 1
2 2 2 2 2 2    2 2 2 2 2 2
3 3 3 3 3 3    3 3 3 3 3 3
4 4 4 4 4 4    4 4 4 4 4 4
5 5 5 5 5 5    5 5 5 5 5 5
Output:
falsey

[[,]]ফর্ম্যাটে ম্যাট্রিক্স সহ পেস্টবিন ।


আমরা কি ম্যাট্রিককে ম্যাট্রিকের তালিকা হিসাবে নিতে পারি?
জো কিং

@ জোকিং আপনার অর্থ দুটি পৃথক পৃথক ম্যাট্রিক্স-ইনপুটগুলির পরিবর্তে উভয় ম্যাট্রিকের সাথে একটি তালিকা? যদি আপনি যা জিজ্ঞাসা করছেন, তবে নিশ্চিত হন, কেন নয়।
কেভিন ক্রুইজসেন


উদাহরণটি কেন [ [ 0 ] ], [ [ 25 ] ], 1উপস্থিত? আমি বুঝতে You can assume the matrices will only contain non-negative digits (range [0,9])পেরেছি যে ম্যাট্রিক্স মানগুলি কেবল 0 এবং 9 এর মধ্যে?
অলিভিয়ার গ্রাগোয়ার

2
@ অলিভিগ্রগ্রোগোরে দুঃখিত, [0,9]স্যান্ডবক্সে পরে বিধি সম্পর্কে এই নিয়ম যুক্ত করেছে। আমি পরীক্ষা ক্ষেত্রে পরিবর্তন করেছি [[0]],[[8]]
কেভিন ক্রুইজসেন

উত্তর:


4

জেলি ,  10  9 বাইট

ż⁹/ẎsṢʋ€E

এটি অনলাইন চেষ্টা করুন! (বাপরীক্ষার কেসগুলি থেকে সহজ অনুলিপি এবং পেস্টের জন্য প্রাক প্রক্রিয়াজাতকরণ সহ )

একজন dyadic লিংক দুটি ম্যাট্রিক্সের একটি তালিকা গ্রহণ বাম (তালিকার তালিকা) এবং পূর্ণসংখ্যা অধিকার যা উৎপাদনের উপর 1বা 0truthy জন্য অথবা falsey যথাক্রমে।

কিভাবে?

ż⁹/ẎsṢʋ€E - Link: [M1, M2]; N
       €  - for each of [M1, M2]:
      ʋ   -   last four links as a dyad (i.e. f(M, N)):
 ⁹        -     (chain's right argument, N)
 ⁹/       -     N-wise-reduce with:
ż         -       zip together
   Ẏ      -     tighten
    s     -     split into chunks of length N
     Ṣ    -     sort
        E - equal?

8

এপিএল (ডায়ালগ প্রসারিত) , 19 18 17 বাইট

-2 এনএনজি ধন্যবাদ।

বেনামে টাসিট ইনফিক্স ফাংশন। nবাম আর্গুমেন্ট এবং দুটি ম্যাট্রিকের ডান যুক্তি হিসাবে তালিকা নেয় । জিরো-ইনডেক্সিং ( ⎕IO←0) প্রয়োজন। ঘটনাচক্রে, এই ফাংশনটি কয়েকটি মাত্রার অ্যারেগুলিতে কাজ করে।

≡.{∧,⍵⊂⍨⊂0=⍺|⍳≢⍵}

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

≡.{... } নিম্নলিখিত ফাংশন অভিন্ন ফলাফল প্রতিটি ম্যাট্রিক্স প্রয়োগ সঙ্গে nযেমন ?

≢⍵ ম্যাট্রিক্স আকার

 সূচক 0… আকার – 1

⍺| বিভাগ দ্বারা অবশিষ্ট যখন ভাগ n

 সমস্ত মাত্রা বরাবর ব্যবহার বন্ধ

⍵⊂⍨ পার্টিশনে এটি ব্যবহার করুন * ম্যাট্রিক্সকে সাবমেরিকের ম্যাট্রিক্সে
  * নতুন পার্টিশন শুরু করা হবে যখন সংশ্লিষ্ট উপাদানটি পূর্বের চেয়ে কম হয়; শূন্য দ্বারা চিহ্নিত উপাদানগুলি সরান

, সাবট্রিক্সের তালিকায় ম্যাট্রিক্সটি ছড়িয়ে দিন

 সাজান আরোহী


(≢⍵)⍴⍺↑1-> 0=⍺|⍳≢⍵(সহ ⎕io←0)
এনজিএন

ধন্যবাদ সম্পন্ন.
অ্যাডাম

≡/{}¨->≡.{}
এনজিএন

@ জিএন শেষ ধন্যবাদ।
অ্যাডাম


6

পার্ল 6 , 94 68 63 বাইট

{[eqv] map *.rotor($^a).map({[Z] $_}).flat.rotor($a²).sort,@_}

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

নামবিহীন কোড ব্লক যা ইনপুট নেয় size, [matrix1, matrix2]এবং একটি বুলিয়ান দেয় True/False। ম্যাট্রিক্সকে খণ্ডগুলিতে ভাগ করার আরও কার্যকর উপায় থাকতে পারে rotor

ব্যাখ্যা:

{                                                            }  # Anonymous code block
       map                                                ,@_   # For both matrices 
           *.rotor($^a)   # Split the matrix into N sized chunks
                       .map({[Z] $_})  # Then zip each of those chunks together
                                     .flat  # Flatten the resulting list
                                          .rotor($a²)  # Then split into the NxN lists
                                                     .sort   # And sort them
 [eqv]    # And then check if the lists are equivalent 


4

জাভা (জেডিকে) , 221 বাইট

(n,a,b)->{java.util.Arrays A=null;int l=a.length,x=l/n,i=0,j,z;var c=new String[x*x];A.fill(c,"");var d=c.clone();for(;i<l;i++)for(j=0;j<l;d[z]+=b[i][j++])c[z=i/n+j/n*x]+=a[i][j];A.sort(c);A.sort(d);return A.equals(c,d);}

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

ব্যাখ্যা

ধারণাটি হ'ল প্রতিটি ছোট কক্ষকে একটি স্ট্রিং হিসাবে তুলনা করা যায় যা তুলনীয়, এবং তারপরে সেই স্ট্রিংগুলিকে বাছাই করে এবং তাদের ক্রমে তুলনা করে।

(n,a,b)->{
 java.util.Arrays A=null;             // Shortcut A for the several java.util.Arrays that'll come
 int l=a.length,x=l/n,i=0,j,z;        // Variable declarations
 var c=new String[x*x];               // Declare the small squares list
 A.fill(c,"");                        // Fill the lists of small squares with the empty string.
 var d=c.clone();                     // Make a copy of the list, for the second matrix
 for(;i<l;i++)
  for(j=0;j<l;d[z]+=b[i][j++])        // For each matrix cell
   c[z=i/n+j/n*x]+=a[i][j];           // Fill the small square with the value, string-wise
 A.sort(c);A.sort(d);                 // Sort both small squares list
 return A.equals(c,d);                // Return true if they're equal, false otherwise.
}

ক্রেডিট

  • -12 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ!

আপনি কি গল্ফ ভুলে গেছেন for(j=0;j<l;){c[z=i/n+j/n*x]+=a[i][j];d[z]+=b[i][j++];}? .. আপনি লুপের ভিতরে রেখে ব্র্যাকেটগুলি সরাতে পারেন। এছাড়াও, i=0লুপটিতে থাকা অপসারণ করা যেতে পারে, কারণ আপনার iইতিমধ্যে ঘোষণার সময় 0।
কেভিন ক্রুইজসেন

এবং আসলে গল্ফ করার জন্য একটি জিনিস: পরিবর্তে var d=new String[x*x];হতে পারে var d=c.clone();234 বাইট
কেভিন ক্রুইজসেন

PS: আপনার টিআইওতে স্ট্রিং রয়েছে যা আপনি 2 ডি-পূর্ণসংখ্যার অ্যারে রূপান্তর করেছেন? আমি নীচে পরীক্ষার বিষয়, যার জন্য আপনি প্রতিস্থাপন করতে পারেন সঙ্গে একটি পেস্ট-বিন জুড়েছেন [এবং ]সঙ্গে {এবং }এবং একটি নেতৃস্থানীয় যোগ new int[][], এবং এটি যথেষ্ট হত। ;)
কেভিন ক্রুইজসেন

দাম্মিত, আমি পেস্ট-বিনটি দেখিনি :( এবং বাকিগুলির জন্য, আমি এখনও গল্ফ করছি I আমি মোটামুটি পাস দিয়েছিলাম, তবে আপনাকে ধন্যবাদ :-)
অলিভিয়ার গ্রোগোয়ার

i=0যখন আমি বরং ব্যবহার না করে নিজে নিজেই অ্যারে পরিপূর্ণ কোনো অবশেষ ছিল Arrays.fill। ধন্যবাদ :-) এবং এর জন্য cloneআমি এটি ব্যবহারের কথা ভেবেছিলাম তবে আমি এখনও ভেবেছিলাম এটি Objectআসল প্রকারটি নয় তবে ফিরে আসবে । আমাকে অবশ্যই এই দেরীতে বেশ কয়েকটি সংস্করণ হতে হবে;)
অলিভিয়ের গ্রাগোয়ার

4

জাপট , 18 বাইট

®mòV yòV rc n qÃr¥

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

ব্যাখ্যা:

®              Ã      #Apply this to each of the input matrices:
 mòV                  # Split each row into groups of n
     yòV              # Split each column into groups of n
         rc           # Flatten into a list of nxn submatrices
            n         # Sort that list
              q       # Turn it into a string
                r¥    #Return true if both matrices had identical results

"এটিকে একটি স্ট্রিংয়ে পরিণত করুন" পদক্ষেপটি প্রয়োজনীয় কারণ জ্যাপটি মূল্য দ্বারা অ্যারের সাথে তুলনা করে না এবং চারপাশে কাজ করার জন্য বিল্টিনটি বহুমাত্রিক অ্যারেগুলির জন্য কাজ করে না


2
আমি দেখতে পাচ্ছি যে আমি আগামীকাল বৈঠকের মধ্যে কিছুটা সময় নিয়ে চেষ্টা করতে পারি এবং A.e()বহুমাত্রিক অ্যারের জন্য কাজ করতে পারি; সর্বদা এটি ফিরে আসা মানে। এর মধ্যে ÕmòV-> yòVআপনাকে একটি বাইট সংরক্ষণ করবে।
শেগি

যাইহোক, সাম্যের জন্য অ্যারেগুলির তুলনা করার সীমাবদ্ধতাটি জাপটে নির্দিষ্ট হওয়ার চেয়ে জাভাস্ক্রিপ্টের;)
শেগি

4

টিএসকিউএল, 164 বাইট

ইনপুট রাখার জন্য একটি সারণী ভেরিয়েবলের পপুলেটিং করা হচ্ছে, এই ইনপুটটি তৈরি করা এবং ডেটা সন্নিবেশ করানো বাইট গণনায় অন্তর্ভুক্ত করা হয়নি। তথ্য নিষ্কাশন করার জন্য কেবল আসল প্রশ্ন।

গল্ফড (পরীক্ষার টেবিল সহ নয় - এটি অদৃশ্য সংস্করণে পাওয়া যাবে):

SELECT iif(exists(SELECT*FROM(SELECT string_agg(v,'')within
group(order by x,y)s,m FROM @t GROUP BY x/@,y/@,m)x
GROUP BY s HAVING max(m)=min(m)or sum(m-.5)<>0),0,1)

Ungolfed:

-- test data
DECLARE @ INT = 2
-- x = x-position of the input
-- y = y-position of the input
-- v = value
-- m = matrix(0 or 1)
DECLARE @t table(x int, y int, v int, m int)
--insert first matrix values
INSERT @t values
(0,0,1,0),(0,1,2,0),(0,2,1,0),(0,3,2,0),
(1,0,3,0),(1,1,4,0),(1,2,3,0),(1,3,4,0),
(2,0,8,0),(2,1,3,0),(2,2,9,0),(2,3,5,0),
(3,0,6,0),(3,1,1,0),(3,2,7,0),(3,3,7,0)
INSERT @t values
(0,0,9,1),(0,1,5,1),(0,2,1,1),(0,3,2,1),
(1,0,7,1),(1,1,7,1),(1,2,3,1),(1,3,4,1),
(2,0,1,1),(2,1,2,1),(2,2,8,1),(2,3,3,1),
(3,0,3,1),(3,1,4,1),(3,2,6,1),(3,3,1,1)

-- query
SELECT iif(exists
  (
    SELECT *
    FROM
    (
      SELECT string_agg(v,'')within group(order by x,y)s,m
      FROM @t
      GROUP BY x/@,y/@,m
    ) x
    GROUP BY s
    HAVING max(m)=min(m)or sum(m-.5)<>0
  ),0,1)

চেষ্টা কর


4

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

(n,a,b)=>(g=a=>a.map((r,y)=>r.map((v,x)=>o[y/n<<7|x/n]+=[v]),o=[])&&o.sort()+o)(a)==g(b)

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

কিভাবে?

এই কোডটি হ'ল:

  • প্রতিটি ইনপুট ম্যাট্রিক্সে সমস্ত উপ-ম্যাট্রিকগুলি কোষের সংমিশ্রণ হিসাবে আহরণ করা
  • উপ-ম্যাট্রিকগুলি অভিধানিক ক্রমে বাছাই করা ing
  • ফলাফল উভয় ইনপুট ম্যাট্রিক্সের জন্য একই কিনা পরীক্ষা করা হচ্ছে

এটি চ্যালেঞ্জে বর্ণিত সীমাগুলির সুযোগ নিচ্ছে:

  • একটি ম্যাট্রিক্সে একক অঙ্ক থাকে, সুতরাং আমরা কেবলমাত্র কোনও বিভাজন ছাড়াই একটি সাব-ম্যাট্রিক্সের সমস্ত কক্ষকে একত্রিত করতে পারি এবং এখনও এর অনন্য প্রতিনিধিত্ব পেতে পারি (যেমন [[1,2],[3,4]]হিসাবে সংরক্ষণ করা যেতে পারে "1234")।

  • 100(এক্স,Y)আমি

    আমি=Yএন×128+ +এক্সএন

    বা জেএস কোড হিসাবে: y / n << 7 | x << n

মন্তব্য

(n, a, b) =>           // n, a, b = input variables (integer, matrix 1, matrix 2)
  (g = a =>            // g = helper function taking one of the two matrices
    a.map((r, y) =>    // for each row r[] at position y in a[]:
      r.map((v, x) =>  //   for each value v at position x in r[]:
        o[             //     update o[]:
          y / n << 7 | //       the position of the slot is computed by taking advantage
          x / n        //       of the limit on the matrix width (see above)
        ] += [v]       //     coerce v to a string and append it to o[slot]
                       //     all slots are initially undefined, so all resulting strings
                       //     are going to start with "undefined", which is harmless
      ),               //   end of inner map()
      o = []           //   start with o = empty array
    ) &&               // end of outer map()
    o.sort() + o       // sort o[] and coerce it to a string by concatenating it with itself
  )(a) == g(b)         // test whether g(a) is equal to g(b)

3

কাঠকয়লা , 54 49 বাইট

1FθF⪪ιηF÷L§κ⁰η⊞υEκ§⪪μηλW∧υ⊟υ¿№✂υ⁰⊘⊕Lυ¹ι≔Φυ⁻⌕υιλυ⎚

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। সমান আকারের দ্বি-মাত্রিক অ্যারেগুলির অ্যারে হিসাবে ইনপুট নেয়। সাফল্যের 1 আউটপুট, ব্যর্থতার কিছুই নয়। ব্যাখ্যা:

1

সাফল্য ধরে।

Fθ

অ্যারে উপর লুপ।

F⪪ιη

অ্যারেটি- nআকারের সারি খণ্ডগুলিতে ভাগ করুন ।

F÷L§κ⁰η

প্রতিটি কলাম কান্ড উপর লুপ।

⊞υEκ§⪪μηλ

সারি খণ্ডের প্রতিটি সারির জন্য কলামের অংশটি বের করুন এবং ফলাফলের সাবম্যাট্রিক্স একটি তালিকায় সংরক্ষণ করুন।

W∧υ⊟υ

তালিকাটি সর্বজনীন নয়, তালিকার শেষ অংশটি সরান, যা সাধারণ পরিস্থিতিতে দ্বিতীয় অ্যারে থেকে আসে।

¿№✂υ⁰⊘⊕Lυ¹ι

তালিকার প্রথমার্ধে সেই অংশের সংখ্যার সংখ্যা গণনা করুন, যা সাধারণ পরিস্থিতিতে প্রথম অ্যারে থেকে বাকি অংশগুলি রয়েছে।

≔Φυ⁻⌕υιλυ

যদি ননজারো হয় তবে তালিকা থেকে সেই খণ্ডটির প্রথম উপস্থিতি সরিয়ে ফেলুন।

যদি শূন্য হয় তবে আউটপুট সাফ করুন, এটি মিথ্যা করে।



2

হাস্কেল, 74 73 বাইট

import Data.Lists
i#m|c<-chunksOf i=c.transpose=<<c m
(m!n)i=i#m\\i#n==[]

দ্রষ্টব্য: টিআইও ইনস্টল হয়নি Data.Lists, সুতরাং আমি Data.Listপরিবর্তে একটি অদৃশ্য ফাংশনটি ব্যবহার করছি chunksOf: এটি অনলাইনে চেষ্টা করুন!

i#m=           -- function '#' makes a list of all transposed jigsaw blocks of matrix 'm'
               -- of size 'i'
 c<-chunksOf i -- define helper function 'c' that splits it's argument into
               -- chunks of site 'i'
         c m   -- split the matrix into chunks of size 'i'
      =<<      -- for each chunk
   transpose   --   transpose
 c.            --   and split into chunks of size 'i', again
               -- flatten one level of nesting ('=<<' is concatMap)

(m!n)i=        -- main function
    i#m\\i#n   -- remove every element of i#n from i#m
      ==[]     -- and check if it results in an empty list  

2

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 186 বাইট

(a,b,n)=>{string[]s(int[][]c){int i=0,j,l=a.Length,m=l/n;var r=new string[m*m];for(;i<l;i++)for(j=0;j<l;)r[i/n*m+j/n]+=c[i][j++];Array.Sort(r);return r;}return s(a).SequenceEqual(s(b));}

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

-1 কেভিন ক্রুইজসেনকে ধন্যবাদ!

কম গল্ফ কোড:

// anonymous function
// a and b are 2d jagged arrays
// n is the size of the sub matrix
(a,b,n)=>{
  // helper function that translates
  // the sub matrices into strings
  // of digits.
  string[]s(int[][]c){
    // i and j are loop counters
    int i=0,j,
      // l is the size of a side of a matrix
      l=a.Length,
      // m is the number of sub matrices
      // per side of a matrix
      m=l/n;
    // the concatenated digits are
    // stored in a single dimension
    // array
    var r=new string[m*m];
    // nested loops build up
    // the digit strings
    for(;i<l;i++)
      for(j=0;j<l;)
        r[i/n*m+j/n]+=c[i][j++];
    // The resulting array is
    // sorted before it is returned for
    // ease of comparison.
    Array.Sort(r);
    return r;
  }
  return s(a).SequenceEqual(s(b));
}

গল্ফের কাছে একটি ছোটখাটো জিনিস, j++অপসারণ করা যায় এবং +=c[i][j++]+" ";একটি বাইট সংরক্ষণ করার জন্য রাখা যেতে পারে ।
কেভিন ক্রুইজসেন

টিপটির জন্য ধন্যবাদ :) আকর্ষণীয়ভাবে যথেষ্ট, আমি জাভা হিসাবে প্রায় ঠিক একই সমাধান নিয়ে এসেছি।
দানা

1

পিএইচপি ,186 163 162 বাইট

function($a,$b,$n){$f=function($j,$n){foreach($j as$x=>$r)foreach($r as$y=>$v)$o[count($j)*($x/$n|0)+$y/$n|0].=$v;sort($o);return$o;};return$f($a,$n)==$f($b,$n);}

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

সমস্ত ভাল চ্যালেঞ্জের মতো, আমি ভাবতে শুরু করি এটি মোটামুটি সহজ এবং এটি আমাকে কিছু বক্ররেখা ফেলেছিল। সুন্দরভাবে সম্পন্ন হয়েছে @ কেভিন ক্রুজসেন!

প্রতিটি ব্লকের মান যুক্ত স্ট্রিংগুলিতে ম্যাট্রিক্স ছিন্ন করে। অ্যারেগুলি তখন সাজানো হয় এবং সাম্যের জন্য তুলনা করা হয়।

Ungolfed:

function jigsaw_chunk( $j, $n ) {
    foreach( $j as $x => $r ) {
        foreach( $r as $y => $v ) {
            $o[ count( $j ) * floor( $x/$n ) + floor( $y/$n )] .= $v;
        }
    }
    sort( $o );
    return $o;
}

function jigsaw_test( $a, $b, $n ) {
    return jigsaw_chunk( $a, $n ) == jigsaw_chunk( $b, $n );
}

// Test 6
var_dump( jigsaw_test( [[1,2],[3,4]], [[2,3],[1,1]], 1 ) );

আউটপুট

bool(false)

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