একটি zigzagified ম্যাট্রিক্স পুনর্গঠন


18

এটির সংকোচনের অ্যালগরিদমের অংশ হিসাবে, জেপিজি স্ট্যান্ডার্ডটি পরিবর্তনের দিকের অ্যান্টিজাগুলি বরাবর একটি ম্যাট্রিক্সকে একটি ভেক্টরে তালিকাভুক্ত করে:

এখানে চিত্র বর্ণনা লিখুন

আপনার কাজটি হ'ল ম্যাট্রিক্সের মাত্রাগুলি সহ নিবন্ধিত ভেক্টরটি নিয়ে যাওয়া এবং সংশ্লিষ্ট ম্যাট্রিক্সটিকে পুনর্গঠন করা। উদাহরণ হিসাবে:

[1, 2, 5, 9, 6, 3, 4, 7, 1, 2, 8, 3], 4, 3

ফলন করা উচিত

[1 2 3 4
 5 6 7 8
 9 1 2 3]

মাত্রা 6, 2দিতে হবে

[1 2 6 3 1 2
 5 9 4 7 8 3]

বিধি

আপনি ইনপুট হিসাবে মাত্রাগুলির একটি মাত্র গ্রহণ করতে বেছে নিতে পারেন। পৃথক ইনপুটগুলি যে কোনও ক্রমে নেওয়া যেতে পারে। আপনি ধরে নিতে পারেন প্রস্থ এবং উচ্চতা প্রদত্ত ভেক্টরের দৈর্ঘ্যের জন্য ইতিবাচক এবং বৈধ।

আপনি ধরে নিতে পারেন যে ভেক্টর উপাদানগুলি ইতিবাচক পূর্ণসংখ্যার চেয়ে কম 10

আপনি STDIN (অথবা নিকটতম বিকল্প), কমান্ড-লাইন আর্গুমেন্ট বা ফাংশন আর্গুমেন্টের মাধ্যমে ইনপুট নিয়ে কোনও প্রোগ্রাম বা ফাংশন লিখতে এবং STDOUT (বা নিকটতম বিকল্প), ফাংশন রিটার্ন মান বা ফাংশন (আউট) প্যারামিটারের মাধ্যমে ফলাফল আউটপুট করতে পারেন।

ইনপুট ভেক্টরটি কোনও সুবিধাজনক, দ্ব্যর্থহীন, ফ্ল্যাট তালিকা বা স্ট্রিং ফর্ম্যাটে দেওয়া যেতে পারে।

আউটপুট ম্যাট্রিক্স কোনও সুবিধাজনক, দ্ব্যর্থহীন, নেস্টেড তালিকা বা স্ট্রিং ফর্ম্যাটে বা ম্যাট্রিক্সের উভয় মাত্রার পাশাপাশি একটি সমতল তালিকা হিসাবে থাকতে পারে। (অথবা, অবশ্যই আপনার ভাষা যদি সেগুলিতে থাকে তবে ম্যাট্রিক্স টাইপ হিসাবে))

স্ট্যান্ডার্ড বিধি প্রযোজ্য।

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

প্রতিটি পরীক্ষার কেস ফর্মের হয় vector width height => matrix

[1] 1 1                        => [[1]]
[1 2 3 1] 2 2                  => [[1 2] [3 1]]
[1 2 3 1] 4 1                  => [[1 2 3 1]]
[1 2 5 9 6 3 4 7 1 2 8 3] 3 4  => [[1 2 3] [5 6 4] [9 7 8] [1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 4 3  => [[1 2 3 4] [5 6 7 8] [9 1 2 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 6 2  => [[1 2 6 3 1 2] [5 9 4 7 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 12 1 => [[1 2 5 9 6 3 4 7 1 2 8 3]]
[1 2 5 9 6 3 4 7 1 2 8 3] 1 12 => [[1] [2] [5] [9] [6] [3] [4] [7] [1] [2] [8] [3]]

সম্পর্কিত চ্যালেঞ্জ

উত্তর:


7

জেলি, 18 13 বাইট

pS€żị"¥pỤỤị⁵s

পৃথক কমান্ড-লাইন আর্গুমেন্ট হিসাবে সারি সংখ্যা, কলামগুলির সংখ্যা এবং একটি সমতল তালিকা নেয় T

আমার কোড দুটি চ্যালেঞ্জের সাথে প্রায় একই রকম । কেবলমাত্র পার্থক্যগুলি হ'ল অতিরিক্ত (যা সূচকগুলির ক্রমবিন্যাসকে উল্টে দেয়) এবং একটি s(আউটপুটটিকে 2 ডি অ্যারে বিভক্ত করতে)।

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


4

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

:!i:+-1y^8MtsQ/*-X:4#S2$S1GZC

ইনপুট করা হয় height, width, vectorনতুন লাইন দিয়ে আলাদা।

এটি সম্পর্কিত চ্যালেঞ্জের আমার উত্তরে কোডের কিছু অংশ পুনরায় ব্যবহার করে

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

ব্যাখ্যা

:!      % take number of rows, r, as input. Generate column vector [1;2;...;r]
i:      % take number of columns, c, as input. Generate row vector [1,2,...,c] 
+       % add with broadcast. Gives 2D array
-1      % push -1
y^      % duplicate previous 2D array. Compute -1 raised to that
8M      % push [1;2;...;r] again
tsQ/    % divide by its sum plus 1
*       % multiply
-       % subtract
X:      % linearize 2D array into column array
4#S     % sort and push the indices of the sorting. Gives a column vector
2$S     % take vector as input. Sort it according to previous column vector
1G      % push r
ZC      % reshape into columns of r elements

0

জে, 24 বাইট

]$({~[:/:@;[:<@|.`</.i.)

যে চ্যালেঞ্জ থেকে /.জে উত্তর হিসাবে zigzagify সঞ্চালন করতে তির্যক ক্রিয়া বিশেষণ ব্যবহার করে

ব্যবহার

ইনপুটটি এলএইচএসে অ্যারে এবং [height, width]আরএইচএসের মাত্রাগুলির সাথে রয়েছে।

   f =: ]$({~[:/:@;[:<@|.`</.i.)
   1 f 1 1
1
   1 2 3 1 f 2 2
1 2
3 1
   1 2 5 9 6 3 4 7 1 2 8 3 f 4 3
1 2 3
5 6 4
9 7 8
1 2 3
   1 2 5 9 6 3 4 7 1 2 8 3 f 3 4
1 2 3 4
5 6 7 8
9 1 2 3
   1 2 5 9 6 3 4 7 1 2 8 3 f 2 6
1 2 6 3 1 2
5 9 4 7 8 3
   1 2 5 9 6 3 4 7 1 2 8 3 f 1 12
1 2 5 9 6 3 4 7 1 2 8 3
   1 2 5 9 6 3 4 7 1 2 8 3 f 12 1
1
2
5
9
6
3
4
7
1
2
8
3

ব্যাখ্যা

]$({~[:/:@;[:<@|.`</.i.)  Input: list A (LHS), dimensions D (RHS)
                     i.   Range shaped to D
           [:<@|.`</.     Zigzagify that matrix
     [:   ;               Raze the boxes to get a zigzagify permutation
       /:@                Invert that permutation to get an unzigzagify permutation
   {~                     Apply that permutation to A
]                         Get D
 $                        Shape that permutation to D and return
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.