একটি ম্যাট্রিক্স ভাঁজ!


13

একটি ম্যাট্রিক্স দেওয়া হয়েছে, একটি এক্স গঠনের জন্য এর মানগুলি উপরে / নীচে বা বাম / ডানগুলি যোগ করুন, এটিকে ভাঁজ করুন এবং তালিকাটি ফিরিয়ে দিন। আমি এখানে আলগোরিদিম বর্ণনা:

অ্যালগরিদম

আপনার ইনপুটটি আপনার ভাষার যুক্তিসঙ্গত সংখ্যার ক্ষমতার মধ্যে পূর্ণসংখ্যার একটি বিজোড় আকারের বর্গ ম্যাট্রিক্স হবে।

নীচের ম্যাট্রিক্স উদাহরণ হিসাবে নেওয়া যাক:

1 2 3 2 1
0 3 2 3 0
4 2 5 6 3
7 4 7 9 4
0 6 7 2 5

প্রথমে প্রতিটি সংখ্যাটি প্রধান তির্যক বা এন্টিডিজোনাল এর নিকটতম সংখ্যায় যুক্ত করুন। এটি হ'ল, ম্যাট্রিক্সকে মূল তির্যক এবং অ্যান্টিডিজোনাল বরাবর চারটি বিভাগে বিভক্ত করুন এবং তারপরে প্রতিটি বিভাগের সমস্ত সংখ্যাকে কেন্দ্রের দিকে যুক্ত করুন, যেমন:

1   2   3   2   1
    ↓   ↓   ↓    
0 → 3   2   3 ← 0
        ↓        
4 → 2 → 5 ← 6 ← 3
        ↑        
7 → 4   7   9 ← 4
    ↑   ↑   ↑    
0   6   7   2   5

এই পদক্ষেপটি নিম্নলিখিত ফলাফল দেয়:

1        1
  5    5
    39
  17  15
0        5

তারপরে, আমরা এক্সটি সমতল করে এবং উপাদানগুলি প্রথমে উপরের-বাম এবং নীচে বাম দিয়ে সর্বশেষে অভ্যন্তরে ভাঁজ করি। এটি নিম্নলিখিত ফলাফল দেয়:

1, 0, 5, 17, 39, 5, 15, 1, 5

আপনি এটিকে মূল তির্যকটি প্রসারিত এবং এটিকে ঘড়ির কাঁটার বিপরীতে ঘোরানো হিসাবে কল্পনা করতে পারেন।

এই চূড়ান্ত ফলাফল।

চ্যালেঞ্জ

এই অ্যালগরিদমটি প্রয়োগ করুন। স্ট্যান্ডার্ড লুফোলস প্রযোজ্য। সমস্ত যুক্তিসঙ্গত I / O ফর্ম্যাট গ্রহণযোগ্য।

পরীক্ষার কেস

Input
Output

1 2 3 2 1
0 3 2 3 0
4 2 5 6 3
7 4 7 9 4
0 6 7 2 5

1, 0, 5, 17, 39, 5, 15, 1, 5

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

1, 6, 11, 16, 47, 7, 22, 5, 0

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

1, 8, 15, 11, 23, 20, 62, 32, 25, 13, 18, 3, 9

আপনি কি "5 নয় 5" ম্যাট্রিক্স পরীক্ষার কেস যুক্ত করতে পারেন?
সম্পূর্ণরূপে

1
@ ক্রিভারিটিম আপনি এখানে যান
হাইপারনিউট্রিনো

উত্তর:


7

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

s=>(l=s.length-1,a=[],s.map((v,y)=>v.map((n,x)=>a[q=2*[x,y,l-y].sort((u,v)=>u-v)[1]+(y>l/2),q-=q>l]=~~a[q]+n)),a)


উম্ম .. কেন ~~? তারা একে অপরকে নিরপেক্ষ করে, তাই তাদের কোনও প্রয়োজন নেই।
কেভিন ক্রুইজসেন

2
@ কেভিন ক্রুজসেন ~~undefined==0, সুতরাং এটি এর চেয়ে গল্ফিয়র (a[q]||0)
নীল

@ নীল আহ, ভেবে দেখেনি undefined। আমি যখন পরীক্ষার কেস টিএসএস অনুলিপি করেছিলাম তখন আমি লক্ষ্য করেছি যে এটি ছাড়া কাজ করে ~~। এবং যেহেতু একে অপরকে ~~xএকইভাবে -(-x)নিরপেক্ষ করা হচ্ছে , তাই আমি বুঝতে পেরেছিলাম যে এটি কোনওভাবে দুর্ঘটনার দ্বারা সেখানে রাখা হয়েছিল। সংশোধনীর জন্য ধন্যবাদ.
কেভিন ক্রুইজসেন

5

জেলি , 25 23 21 বাইট

AṂ×ṠṚ
LHŒRṗ2Ç€ḅLĠịFS€

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

বিকল্প সংস্করণ, 19 বাইট

AṂ×ṠṚ
LHŒRṗ2Ç€ĠịFS€

এটি কাজ করতে ব্যবহৃত হয়নি কারণ Ġনেস্টেড অ্যারেগুলির জন্য অনুপযুক্ত আচরণ করে। মাত্র তফাত হল যে জোড়া হয় [কুই, পি] উল্লেখিত কিভাবে এটি কাজ করে lexicographically তাদের ম্যাপিং পরিবর্তে সাজানো হয় + + NQ পি বাছাই আগে।

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

পটভূমি

আমরা এর উপাদানগুলি স্থানাঙ্ক দিয়ে প্রতিস্থাপন করে বাম এবং নীচের দিকে বাড়িয়ে এবং ম্যাট্রিক্সের কেন্দ্রে (0, 0) রেখে শুরু করি ।

7x7 ম্যাট্রিক্স এম এর জন্য , আমরা নিম্নলিখিত স্থানাঙ্কগুলি পাই।

(-3,-3) (-3,-2) (-3,-1) (-3, 0) (-3, 1) (-3, 2) (-3, 3)
(-2,-3) (-2,-2) (-2,-1) (-2, 0) (-2, 1) (-2, 2) (-2, 3)
(-1,-3) (-1,-2) (-1,-1) (-1, 0) (-1, 1) (-1, 2) (-1, 3)
( 0,-3) ( 0,-2) ( 0,-1) ( 0, 0) ( 0, 1) ( 0, 2) ( 0, 3)
( 1,-3) ( 1,-2) ( 1,-1) ( 1, 0) ( 1, 1) ( 1, 2) ( 1, 3)
( 2,-3) ( 2,-2) ( 2,-1) ( 2, 0) ( 2, 1) ( 2, 2) ( 2, 3)
( 3,-3) ( 3,-2) ( 3,-1) ( 3, 0) ( 3, 1) ( 3, 2) ( 3, 3)

আমরা এখন প্রতিটি সমন্বয়কারী জোড়ার ন্যূনতম পরম মান গণনা করি এবং এর দ্বারা উভয় স্থানাঙ্কের চিহ্নগুলি, (i, j) থেকে (চিহ্ন (i) মি, সাইন (জে) মি) ম্যাপিং করি , যেখানে এম = মিনিট (| i |) , | জে |)

(-3,-3) (-2,-2) (-1,-1) ( 0, 0) (-1, 1) (-2, 2) (-3, 3)
(-2,-2) (-2,-2) (-1,-1) ( 0, 0) (-1, 1) (-2, 2) (-2, 2)
(-1,-1) (-1,-1) (-1,-1) ( 0, 0) (-1, 1) (-1, 1) (-1, 1)
( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0) ( 0, 0)
( 1,-1) ( 1,-1) ( 1,-1) ( 0, 0) ( 1, 1) ( 1, 1) ( 1, 1)
( 2,-2) ( 2,-2) ( 1,-1) ( 0, 0) ( 1, 1) ( 2, 2) ( 2, 2)
( 3,-3) ( 2,-2) ( 1,-1) ( 0, 0) ( 1, 1) ( 2, 2) ( 3, 3)

একই জুটির সাথে মিলে থাকা ম্যাট্রিক্স উপাদানগুলি সংক্ষিপ্ত করতে হয়। অঙ্কের ক্রম নির্ধারণ করার জন্য, আমরা প্রতিটি জোড়া মানচিত্র (P, Q) থেকে P + NQ , যেখানে n হল সারি / কলাম সংখ্যা এম

-24 -16  -8   0   6  12  18
-16 -16  -8   0   6  12  12
 -8  -8  -8   0   6   6   6
  0   0   0   0   0   0   0
 -6  -6  -6   0   8   8   8
-12 -12  -6   0   8  16  16
-18 -12  -6   0   8  16  24

অঙ্কের ক্রমটি তার সংখ্যার সাথে সামঞ্জস্যের সংখ্যার সাথে সামঞ্জস্য হয়।

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

LHŒRṗ2Ç€ḅLĠịFS€  Main link. Argument: M (matrix)

L                Compute n, the length (number of rows) of M.
 H               Halve it.
  ŒR             Symmetric range; map t to [-int(t), ..., 0, int(t)].
    ṗ2           Compute the second Cartesian power, yielding all pairs [i, j]
                 with -t ≤ i, j ≤ t.
      ǀ         Map the helper link over the resulting array of pairs.
         L       Yield n.
        ḅ        Unbase; map each pair [q, p] to (p + nq).
          Ġ      Group the indices of the resulting array of n² integers by their
                 corresponding values, ordering the groups by the values.
            F    Flatten M.
           ị     Index into the serialized matrix.
             S€  Compute the sum of each group.


AṂ×ṠṚ            Helper link. Argument: [i, j] (index pair)

A                Absolute value; yield [|i|, |j|].
 Ṃ               Minimum; yield m := min(|i|, |j|).
   Ṡ             Sign; yield [sign(i), sign(j)].
  ×              Multiply; yield [p, q] := [sign(i)m, sign(j)m].
    Ṛ            Reverse; yield [q, p].

5
এটা অসাধারণ.
উরিল


3

ডায়ালগ এপিএল , 101 99 64 62 59 বাইট

3 অ্যাডাম দ্বারা বাইট সংরক্ষণ করা হয়েছে

{+/∘,¨⍵∘רd∘=¨k[⍋k←↑∪/,d←∘.((+/1x×××⌊/∘|),)⍨(⍳x)-⌈.5×x←≢⍵]}

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

ডেনিসের দুর্দান্ত অ্যালগরিদম ব্যবহার করে ।


2

এপিএল (ডায়ালগ) , 60 বাইট *

আমার সহকর্মী মার্শালের সাথে সহযোগিতায় ।

নামবিহীন উপসর্গ লাম্বদা। ম্যাট্রিক্সকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং ভেক্টরকে ফেরত দেয়। ধরে নেওয়া ⎕IO ( I ndex O rigin) শূন্য হতে, যা বহু সিস্টেমে ডিফল্ট।

{(,⍉{+/,(s×-×⍺)↓⍵×i∊¨⍨s←⌊⊃r÷2}⌺r⊢⍵)/⍨,(⊢∨⌽)=/¨i←⍳r←⍴⍵}

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

{... } নামবিহীন ল্যাম্বদা; সঠিক যুক্তি (গ্রীক বর্ণমালার ডানদিকের অক্ষর হিসাবে):

⍴⍵ আর্গুমেন্টের আকার (দুটি অভিন্ন উপাদানের তালিকা)

r← হিসাবে সংরক্ষণ করুন r( আর হো হিসাবে )

size n আকারের অ্যারের  সমস্ত d n টি, অর্থাৎ (0 0), (0 1)

i← সংরক্ষণ করুন i(যেমন আমি ota হিসাবে )

=/¨ বুলিয়ান যেখানে স্থানাঙ্কগুলি সমান (যেমন তির্যক)

() এই বেনামে ট্যাসিট প্রিফিক্স ফাংশনটি প্রয়োগ করুন:

   যুক্তি বিপরীত

  ⊢∨ বা তা অমার্জনীয় যুক্তি সহ

, অভ্যাস (সরল তালিকায় সোজা করুন)

 আমাদের কাছে এখন ত্রিভুজগুলির জন্য বুলিয়ান মাস্ক রয়েছে।

()/⍨ নিম্নলিখিতটি ফিল্টার করতে এটি ব্যবহার করুন:

  ⊢⍵rআর্গুমেন্ট  (থেকে পৃথক করা )

  {}⌺r প্রতিটি উপাদানটিতে নিম্নলিখিত বেনামে ইনফিক্স ল্যাম্বডাকে ডেকে আনা rযুক্তি হিসাবে ডান যুক্তি ( ) হিসাবে লেবারবউহড (জিরো দিয়ে প্যাড করা ) এবং কলামগুলি (নীচে / ডানের জন্য নেতিবাচক, কোনওটির জন্য শূন্য নয়) কল করুন বাম তর্ক হিসাবে ( ):

   r÷2rদুটি দিয়ে  বিভক্ত

    প্রথম উপাদানটি চয়ন করুন (তারা অভিন্ন)

    মেঝেতে নামাও

   s← হিসাবে সংরক্ষণ করুন s( গুলি জন্য )

   i∊⍨¨ প্রতিটি উপাদানের জন্য i, বুলিয়ান যদি এর sসদস্য হয়

   ⍵× এর সাথে পাড়াটি বাড়ান

   ()↓ নিম্নলিখিত সংখ্যক সারি এবং কলামগুলি বাদ দিন (নীচে / ডানে নেতিবাচক):

    ×⍺ বাম আর্গুমেন্টের চিহ্ন (অর্থাত প্যাডিংসের দিক)

    - অস্বীকার করা

     সংখ্যাবৃদ্ধি sতদ্বারা

   , অভ্যাস (তালিকায় সোজা)

   +/ যোগফল (অতিরিক্ত হ্রাস)

এখন আমাদের পরিমানের পূর্ণ ম্যাট্রিক্স রয়েছে, তবে কলামের মতো পড়া সমস্ত মান ফিল্টার করা দরকার।

   TRANSPOSE

  , অভ্যাস (সরল তালিকায় সোজা করুন)


* হিসাবে গণনা ⎕U233A এটি অনলাইন চেষ্টা করুন!

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