একটি ম্যাট্রিক্স, দুইবার পুনঃক্রম করুন


20

আপনি একটি বর্গক্ষেত্র দেওয়া হয় ম্যাট্রিক্স , এবং একটি তালিকা (অথবা ভেক্টর) দৈর্ঘ্যের সংখ্যার ধারণকারী মাধ্যমে (অথবা মাধ্যমে )। আপনার কাজটি নির্দিষ্ট করা আদেশ অনুসারে ম্যাট্রিক্স এর কলাম এবং সারিগুলি পুনঃক্রম করতে হবে ।এন×এনএকজনতোমার দর্শন লগ করাএন1এন0এন-1একজনতোমার দর্শন লগ করা

অর্থাৎ আপনি যদি একটি ম্যাট্রিক্স গঠন করা হবে যেখানে -th উপাদান -th উপাদান । আপনার এই ক্রিয়াটির বিপরীতটিও আউটপুট করা উচিত; যে (ঝ, ঞ) এর -th উপাদান অবস্থানে শেষ হবে একটি নতুন ম্যাট্রিক্স মধ্যে ।বি(আমি,)(তোমার দর্শন লগ করা(আমি),তোমার দর্শন লগ করা())একজনএকজন(তোমার দর্শন লগ করা(আমি),তোমার দর্শন লগ করা())সি

উদাহরণস্বরূপ, দেওয়া

একজন=[111213212223313233],তোমার দর্শন লগ করা=[312]

আউটপুট

বি=[333132131112232122],সি=[222321323331121311]

আপনি যে কোনও ডিফল্ট I / O পদ্ধতিতে ইনপুট এবং আউটপুট নিতে পারেন। আপনি উভয়কে আউটপুট না করা পর্যন্ত কোন ম্যাট্রিক্সটি বি বা সি , তা নির্দিষ্ট করতে হবে না । আপনি অনুমান হতে পারে একজন শুধুমাত্র ধনাত্মক পূর্ণসংখ্যা রয়েছে, এবং আপনার জন্য 1- অথবা 0 ভিত্তিক ইন্ডেক্স ব্যবহার করতে পারেন তোমার দর্শন লগ করা । আপনাকে কমপক্ষে 64×64 মাপ পর্যন্ত ম্যাট্রিকগুলি সমর্থন করতে হবে ।

উদাহরণ

===== Input =====
A =
 35     1     6    26    19    24
  3    32     7    21    23    25
 31     9     2    22    27    20
  8    28    33    17    10    15
 30     5    34    12    14    16
  4    36    29    13    18    11
u=
  3 5 6 1 4 2

==== Output =====
B = 
  2    27    20    31    22     9
 34    14    16    30    12     5
 29    18    11     4    13    36
  6    19    24    35    26     1
 33    10    15     8    17    28
  7    23    25     3    21    32
C = 
 17    15     8    10    28    33
 13    11     4    18    36    29
 26    24    35    19     1     6
 12    16    30    14     5    34
 21    25     3    23    32     7
 22    20    31    27     9     2


আমরা আউটপুট করতে খালি লাইন এখানে ছাড়া , যে, এই রকম ? (কোনও অস্পষ্টতা নেই) বা, ব্যর্থ হয়ে, 0বিভাজক হিসাবে ব্যবহার করবেন ?
লুইস মেন্ডো

@ লুইস মেন্ডো অবশ্যই সমস্যা নেই।
সানচিইস

এর জন্য কি 1-সূচকের প্রয়োজন? আমরা কি 0-ইনডেক্সিং এবং ইনপুট ব্যবহার করতে পারি u = [2, 0, 1]?
মান কালি

@ ভ্যালিউইঙ্ক প্রথম বাক্যটি দেখুন, [...] n এর মাধ্যমে 1 নম্বর দিয়ে (বা 0 দ্বারা n) 1)
সানচিইস

উত্তর:



6

এমএটিএল , 15 13 বাইট

t3$)&Gw&St3$)

ইনপুটস u, তারপর A

আউটপুটগুলি B, তারপরে Cকোনও বিভাজক ছাড়াই, কোনও দ্বিপাক্ষিকতা নেই।

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

ব্যাখ্যা

t     % Take input u implicitly. Duplicate u
3$)   % Take input A implicitly. Index A with u as row and column indices
&G    % Push the two inputs again: u, A
w     % Swap
&S    % Push indices that would make u sorted. Call that v
t     % Duplicate v
3$)   % Index A with v as row as column indices. Display implcitly

5

অক্টাভা , 33 বাইট

@(A,u){A(u,u) A([~,v]=sort(u),v)}

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

একটি ত্রুটি সংশোধন করে এবং কয়েকটি বাইট সংরক্ষণ করার জন্য লুইসকে ধন্যবাদ !

বেসিক ইন্ডেক্স উভয় কাজের জন্য এখানে কাজ করে, একটি ভেক্টর সংজ্ঞা দ্বারা বনাম বিন্যাস করার সমান যে পূর্বাবস্থায় ফিরিয়ে আনে তোমার দর্শন লগ করা । অর্থাত্, যদি তোমার দর্শন লগ করা=(3,1,2) তবে বনাম এর প্রথম উপাদানটি 2 হয়, যেহেতু 1 টি তোমার দর্শন লগ করা দ্বিতীয় অবস্থানে থাকে । এটি অক্টাভের বাছাই ফাংশন দ্বারা সম্পন্ন হয় ।


5

পাইপথন 3 নম্পি, 51 45 বাইট সহ

lambda m,p:[m[x][:,x]for x in(p,p.argsort())]

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

-X বাইট @xnor ধন্যবাদ

ফাংশনটি দুটি আর্গুমেন্ট গ্রহণ করে: একটি numpyম্যাট্রিক্স এবং একটি ক্রমশক্তি ভেক্টর যার মান 0 থেকে এন-1



@ এক্সনোর ধন্যবাদ! আমি অনুভব করেছি যে এটি forকোনওভাবেই ছোট করা যেতে পারে তবে একটি- লুপ ব্যবহারের ধারণাটি আমার মনে আসেনি।
জোয়েল




3

জে , 19 বাইট

(]/:~"1/:)"_ 1],:/:

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

  • প্রধান ক্রিয়া ]/:~"1/:
    • ডান /:দিকের আর্গ (নির্দিষ্ট ক্রম) বাছাই করে এমন ক্রম অনুসারে ডান সর্বাধিক প্রান্তে বাম আরগ (ম্যাট্রিক্স) সাজায় orts এটি সারি সাজায়।
    • এখন সেই ফলাফলটি /:~"1নির্দিষ্ট করা আদেশ অনুসারে আবার বাছাই করা হবে ]। তবে এবার আমরা 1 র‌্যাঙ্কের সাথে বাছাই করছি, আমরা প্রতিটি সারি বাছাই করছি, যার কলামগুলি বাছাইয়ের প্রভাব রয়েছে of
  • ],:/:আমরা উভয় নিদিষ্ট অর্ডার ব্যবহার করে উপরে উল্লেখিত আবেদন ]এবং আপ গ্রেড নিদিষ্ট আদেশের /:। এটি আমাদের চাইলে দুটি ফলাফল দেয়।

নিস! আমি দু'বার বাছাই + ট্রান্সপোজ প্রয়োগ করার কথা ভাবছিলাম, তবে শেষ পর্যন্ত হবে।
গ্যালেন ইভানভ

u0-ভিত্তিক হওয়ার অনুমতি দেওয়া হয়েছে, সুতরাং বাছাই করা ( /:) {অদলবদল করা আর্গগুলি সহ সূচীকরণ ( ) করা যেতে পারে
এনজিএন

3

জাভাস্ক্রিপ্ট (নোড.জেএস) , 77 70 68 বাইট

a=>g=(u,v=[])=>[u.map((i,x)=>u.map(j=>a[i][j],v[i]=x)),v&&g(v,0)[0]]

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


কী vছিল তা বের করতে আমার এক মিনিট সময় লেগেছে । আপনি আদিম মানের সম্পত্তির দায়িত্ব নির্ধারণের নন-কড়া মোড নীরব ব্যর্থতার জন্য কীভাবে ব্যবহার খুঁজে পেয়েছেন এবং এটি আপনার পুনরাবৃত্তি বেস-কেসের জন্য ব্যবহার করেছেন তা খুব ঝরঝরে।
প্যাট্রিক রবার্টস

3

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

তোমার দর্শন লগ করাএকজনসিবি

⌷∘⎕¨⍋¨⍛⍮⍨⍮⍨⎕

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

তোমার দর্শন লগ করা[3,1,2]

⍮⍨ সন্নিধি-শেলফি; [[3,1,2],[3,1,2]]

⍋¨ প্রত্যেকের ক্রম-বিবর্তন; [[2,3,1],[2,3,1]]
 তারপরে
⍮⍨ নিজের সাথে জুস্টপোজ করুন[[[2,3,1],[2,3,1]],[[3,1,2],[3,1,2]]]



একজন
¨


3

জে , 17 16 15 14 বাইট

-1 @ জোনাহকে ধন্যবাদ

([{"1{)~(,:/:)

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


1
নিস! আপনি 14 এর সাথে নামতে পারেন ([{"1{)~(,:/:): এটি অনলাইনে ব্যবহার করে দেখুন!
জোনাহ

বিটিডাব্লু, এলোমেলো প্রশ্ন: আমি জে, এপিএল এবং কে-তে কৌতূহল দেখলাম যে আপনি সামগ্রিকভাবে পছন্দ করেন? এছাড়াও আমি আপনাকে মনে করে বলেছিলাম যে আপনি কে কে পেশাদারভাবে ব্যবহার করেছেন, আমি কি সে অধিকারটি মনে করছি?
যোনা

@ জোনাঃ যদি আমি অবশ্যই একটি বেছে নিতে পারি তবে তা অবশ্যই কে (পিএলএস আমাকে কে চ্যাট করতে চাইলে কারণগুলি জানতে চান), তবে আমি সমস্ত অ্যারে ভাষায় গল্ফ উপভোগ করি। দুঃখের বিষয়, আমি ভাগ্যবান কয়েকজনের মধ্যে নেই, যাদের ক-ভাষার চাকরী থাকতে পারে
এনজিএন

2

কাঠকয়লা , 24 বাইট

E⟦ηEη⌕ηκ⟧Eθ⪫E觧θ§ιμ§ιξ 

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। 0-ইন্ডেক্স। দ্রষ্টব্য: ট্রেলিং স্পেস ব্যাখ্যা:

    η                       Input `u`
   E                        Map over elements
     ⌕                      Index of
       κ                    Current index in
      η                     Input `u`
  η                         Input `u`
E⟦      ⟧                   Map over `u` and its inverse
          θ                 Input `A`
         E                  Map over elements
             θ              Input `A`
            E               Map over elements
                θ           Input `A`
               §            Indexed by
                  ι         Current vector
                 §          Indexed by
                   μ        Row index
              §             Indexed by
                     ι      Current vector
                    §       Indexed by
                      ξ     Column index
           ⪫                Join with spaces for readability
                            Implicitly print




1

জেলি ,  12 11  13 বাইট

+2 :( বি = সি হলে কেসগুলি ঠিক করতে

ṭþ`œị¥@Ƭị@2,0

একটি ডায়াডিক লিঙ্ক বামদিকে তালিকার একটি তালিকা গ্রহণ করে A( nদ্বারা n) এবং nডানদিকে প্রথম পূর্ণসংখ্যার uএকটি তালিকা, যা তালিকার তালিকাগুলির তালিকা তৈরি করে [B, C],।

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

কিভাবে?

ṭþ`œị¥@Ƭị@2,0 - Link: A, u
       Ƭ      - collect up while the results are no longer unique, applying:
     ¥@       -   last two links as a dyad with swapped arguments:
  `           -     use left (u) as both arguments of:
 þ            -       outer product with:
ṭ             -         tack
   œị         -     multi-dimensional index into last result (starting with A)
                ...at the end of the Ƭ-loop we have [A,B,...,C]
                                                 or [A] if A=B=C
                                                 or [A,B] if B=C but A!=B
          2,0 - literal pair [2,0]
         @    - with swapped arguments:
        ị     -   index into (1-based & modular) -> [B,C]
                                                 or [A,A]=[B,C] if A=B=C
                                                 or [B,B]=[B,C] if B=C

1

q, 26 বাইট

{Y:iasc y;(x[y;y];x[Y;Y])}

iasc এর যুক্তি সাজানোর জন্য সূচিপত্রগুলি প্রদান করে।


1

পরিষ্কার , 91 বাইট

import StdEnv
$a u=map(\l={{a.[i,j]\\j<-l}\\i<-l})[u,[k\\i<-[0..]&_<-u,j<-u&k<-[0..]|j==i]]

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

বি এবং সি সমেত অ্যারেগুলির অ্যারের তালিকা ফিরিয়ে দেওয়া এবং শূন্য-ভিত্তিক সূচকগুলির একটি তালিকা গ্রহণ করে $ :: {{a}} [Int] -> [{{a}}](এর সাথে ব্যবহৃত a = Int) সংজ্ঞা দেয়


1

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

lambda a,u:[[[a[y][x]for x in t]for y in t]for t in[u,[u.index(i)for i in range(len(u))]]]

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

2D এবং 1D তালিকা হিসাবে প্যারামিটার নেয় এবং দুটি 2D তালিকা বি এবং সি সমন্বিত একটি তালিকা ফেরত দেয় আমি নিশ্চিত নই যে সমস্ত লুপগুলি করার কোনও পরিষ্কার উপায় আছে কিনা।


1

সি ++ (জিসিসি) , 148 142 বাইট

#import<queue>
#define q[o[i/z]*z+o[i%z]]
using V=std::vector<int>;int f(V m,V o,V&r,V&R,int z){int i=z*z;for(r=R=V(i);i--;r[i]=m q)R q=m[i];}

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

@ সাইলিংক্যাট পরামর্শকে ধন্যবাদ # ইমপোর্ট <queue> <vector> এর পরিবর্তে ব্যবহার করুন যা রহস্যজনকভাবে std :: ভেক্টর এনেছে


@ceilingcat এখন আমি দেখতে পাচ্ছি আমদানি সারি আমাকে ভেক্টর অ্যাক্সেস দেয় .. এটি কি সংকলক নির্ভর? আমি এই সম্পর্কে তথ্য অনুসন্ধান করার চেষ্টা করছি কিন্তু কিছুই
পাইনি

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