সম্পূর্ণরূপে ইনভারটিয়েবল সাবম্যাট্রিক্স


16

(ম্যাথের উপরে এই প্রশ্নে অনুপ্রাণিত )

সংজ্ঞা

একটি n x nবর্গক্ষেত্র ম্যাট্রিক্স এ দেওয়া , আমরা invertibleযদি সেখানে কিছু n x nবর্গক্ষেত্রের ম্যাট্রিক্স বি উপস্থিত থাকে তবে এটিকে ডাকতে পারি যেমন AB = BA = I n , আমি n আকারের পরিচয় ম্যাট্রিক্স n x n(মূল তির্যক 1s এবং অন্য কিছু সহ ম্যাট্রিক্স 0) এবং AB এবং বিএ সাধারণ ম্যাট্রিক্সের গুণকে উপস্থাপন করে (আমি এখানে যাব না - লিনিয়ার বীজগণিত বর্গ গ্রহণ করুন)।

যে থেকে, আমরা একটি কল করতে পারেন m x nম্যাট্রিক্স সি totally invertible যদি প্রত্যেক k x kএর submatrix (নীচে সংজ্ঞায়িত) সি সবার জন্য বিপরীত হয় k > 1, k <= (smaller of m,n)

একটি সাবম্যাট্রিক্সকে মূল ম্যাট্রিক্স থেকে যে কোনও সংখ্যক সারি এবং / অথবা কলামগুলি মুছার পরে ফলাফল ম্যাট্রিক্স হিসাবে সংজ্ঞায়িত করা হয়। উদাহরণ হিসেবে বলা যায়, নীচের 3x3ম্যাট্রিক্স সি একটি রূপান্তরিত করা যেতে পারে 2x2submatrix সি ' প্রথম সারিতে সরিয়ে 1 2 3ও মাধ্যমিক কলাম 2 5 8নিম্নরূপ:

C = [[1 2 3]
     [4 5 6]    -->  C' = [[4 6]
     [7 8 9]]              [7 9]]

নোট করুন যে এখানে বিভিন্ন বিভিন্ন সাবম্যাট্রিক্স সম্ভাবনা রয়েছে, উপরেরটি কেবল একটি উদাহরণ। এই চ্যালেঞ্জটি কেবলমাত্র তাদের সাথে সম্পর্কিত যেখানে ফলাফল সাবমেট্রিক্স একটি k x k বর্গ ম্যাট্রিক্স

চ্যালেঞ্জ

একটি ইনপুট ম্যাট্রিক্স দেওয়া হয়েছে, এটি সম্পূর্ণ রূপান্তরযোগ্য কিনা তা নির্ধারণ করুন।

ইনপুট

  • আকারের একটি একক ম্যাট্রিক্স m x n, ইন কোনো উপযুক্ত বিন্যাস
  • সাধারণতার ক্ষতি ছাড়াই, আপনি ধরে নিতে পারেন m <= nবা m >= nআপনার কোডের জন্য যে কোনও গল্ফিয়ার, এবং ইনপুটটি সেভাবে নিতে পারেন (যেমন, আপনি যদি চান তবে ফ্রিতে ট্রান্সপোজ অপারেশন পাবেন )।
  • ইনপুট ম্যাট্রিক্সের আকার এর চেয়ে ছোট হবে না 3 x 3এবং আপনার ভাষার চেয়ে বড় কোনও হ্যান্ডেল করতে পারে না।
  • ইনপুট ম্যাট্রিক্সে জেড + ( ধনাত্মক পূর্ণসংখ্যার ) থেকে শুধুমাত্র সংখ্যাসূচক মান থাকবে ।

আউটপুট

  • ইনপুট ম্যাট্রিক্স পুরোপুরি উল্টানো যায় না তার জন্য একটি সত্য / মিথ্যা মান।

নিয়ম

  • হয় একটি সম্পূর্ণ প্রোগ্রাম বা একটি ফাংশন গ্রহণযোগ্য।
  • স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।
  • এটি তাই সাধারণ গল্ফিংয়ের সমস্ত নিয়ম প্রয়োগ হয় এবং সংক্ষিপ্ততম কোড (বাইটে) জয়ী হয়।

উদাহরণ

Truthy

[[1 2 3]
 [2 3 1]
 [3 1 2]]

[[2 6 3]
 [1 12 2]
 [5 3 1]]

[[1 2 3 4]
 [2 3 4 1]
 [3 4 1 2]]

[[2  3  5  7  11]
 [13 17 19 23 29]
 [31 37 41 43 47]]


Falsey

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

[[1 6 2 55 3]
 [4 5 5 5  6]
 [9 3 7 10 4]
 [7 1 8 23 9]]

[[2 3 6]
 [1 2 12]
 [1 1 6]]

[[8 2 12 13 2]
 [12 7 13 12 13]
 [8 1 12 13 5]]

একক সাবমেট্রিক্স কোথায় 2 6 3; 1 12 2; 5 3 1?
শুক্রবার

1
@ ফেয়ারসাম ওফস - ধরার জন্য ধন্যবাদ এটি সত্যের অধীনে চলে যাওয়ার কথা ছিল এবং এর নীচের অংশটি 6কোণার মধ্যে একটি হওয়ার কথা, এটি একটি নয় 7। আনাড়ি টাইপস
অ্যাডমবর্কবার্ক

প্রথমে আমি ভেবেছিলাম শিরোনামটি "পুরোপুরি ইনভারটিয়েবল সাবমেরিন" বলেছিল।
ব্যবহারকারী 2357112

উত্তর:


5

জেলি , 26 24 23 20 19 17 16 বাইট

-1 বাইটকে @ মাইলসকে ধন্যবাদ (প্রত্যেকের জন্য অপ্রয়োজনীয় , যখন নির্ধারক গ্রহণ করা হয়)
-২ বাইট, @ মাইল আবার! (অপ্রয়োজনীয় চেইন বিচ্ছেদ, এবং Ѐদ্রুত ব্যবহার )

ZœcLÆḊ
œcЀJÇ€€Ȧ

TryItOnline! অথবা সমস্ত 8 পরীক্ষা

কিভাবে?

œcЀJÇ€€Ȧ  - Main link: matrix as an array, M
    J      - range of length -> [1,2,...,len(a)] (n)
  Ѐ       - for each of right argument
œc         -     combinations of M numbering n
     Ç€€   - call the last link (1) as a monad for €ach for €ach
        Ȧ  - all truthy (any determinant of zero results in 0, otherwise 1)
                 (this includes an implicit flattening of the list)

ZœcLÆḊ - Link 1, determinants of sub-matrices: row selection, s
Z      - transpose s
   L   - length of s
 œc    - combinations of transposed s numbering length of s
    ÆḊ - determinant

আমি ভাবছিলাম আমার এটির প্রয়োজন কারণ আমার একসাথে একত্রে কম্বিনেশন রয়েছে তবে সুস্পষ্টভাবে আমাকে নির্দেশ দেওয়ার দরকার নেই। ধন্যবাদ!
জোনাথন অ্যালান 21

আমি নির্ধারণকারী ব্যবহার যে গত চ্যালেঞ্জ থেকে এটা সম্পর্কে শিখেছি, এবং যাচাই এটা সত্যিই আছে যে ldepth = 2উৎস
মাইল

1
এছাড়াও আমি মনে করি আপনি লিংক 2 এ ZœcLÆḊএকটি বাইট এবং মূল লিঙ্কে অন্য একটি বাইট সংরক্ষণ করতে পারেনçЀJȦ
মাইল

ভাল জিনিস @ মাইল আবার ধন্যবাদ! আমি ভেবেছিলাম যে আমি যখন চেষ্টা করেছি তখন এই দুজনের মধ্যে প্রথমটি কাজ করেনি, তবে আপনি যখন গল্ফড ব্যবহার করেছিলেন তখন এটি অবশ্যই ছিল । পুরোপুরি সম্পর্কে ভুলে গেছি Ѐ
জোনাথন অ্যালান

2
চমৎকার সংমিশ্রণ, আমি মনে করি আপনি যদি এটি চান তবে এটি একটি লাইনার তৈরি করতে পারেন œcЀJµZœcLÆḊµ€€Ȧযা 16 বাইট
মাইল

4

গণিত 10.0, 34 বাইট

#~Minors~n~Table~{n,Tr@#}~FreeQ~0&

একটি 6-টিলডে চেইন ... নতুন ব্যক্তিগত রেকর্ড!


3

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

tZyt:Y@!"@w2)t:Y@!"@w:"3$t@:)w@:)w3$)0&|H*XHx]J)]xxtZy]H&

অবশ্যই, আপনি এটি অনলাইন চেষ্টা করতে পারেন !

ইনপুটটি 'প্রতিকৃতি' ওরিয়েন্টেশন (nRows> = এন কলাম) এ হওয়া উচিত। আমি অনুভব করি যে এটি সবচেয়ে দক্ষ সমাধান নাও হতে পারে ... তবে কমপক্ষে আমি অন্যদের জন্য আমার চেয়ে বেশি কিছু চালিয়ে যাচ্ছি। আমি নির্দিষ্ট ইঙ্গিতগুলি শুনতে বিশেষ পছন্দ করব যা এই নির্দিষ্ট পদ্ধতির সংক্ষিপ্ত করে তুলতে পারে, তবে আমি মনে করি যে এই বৃহত্ বাইফাউন্টটি অন্যদেরকে সম্পূর্ণ ভিন্ন পদ্ধতির সাথে এমএটিএল এন্ট্রি করতে অনুপ্রাণিত করবে। মিথ্যা হলে 0, বা সত্যবাদী হলে বৃহত্তর মান প্রদর্শন করে (ম্যাট্রিক্স খুব বড় হলে দ্রুত ইনফ হয়ে যাবে; 1 অতিরিক্ত বাইটের জন্য, কোনওটি (যৌক্তিক এবং)) এর H*সাথে প্রতিস্থাপন করতে পারে H&Y। @ লুইস মেন্ডোকে ধন্যবাদ কয়েকটি বাইট সংরক্ষণ করা হয়েছে।

tZy  % Duplicate, get size. Note that n=<m.   
%   STACK:  [m n], [C]
t: % Range 1:m                           
%   STACK:  [1...m], [m n], [C]
Y@   % Get all permutations of that range. 
%   STACK:  [K],[m n],[C] with K all perms in m direction.
!"   % Do a for loop over each permutation.
%   STACK:  [m n],[C], current permutation in @.
@b   % Push current permutation. Bubble size to top.
%   STACK:  [m n],[pM],[C] with p current permutation in m direction.
2)t:Y@!" % Loop over all permutations again, now in n direction
%   STACK: [n],[pM],[C] with current permutation in @.
@w:" % Push current permutation. Loop over 1:n (to get size @ x @ matrices)
%   STACK: [pN],[pM],[C] with loop index in @.
3$t  % Duplicate the entire stack.
%   STACK: [pN],[pM],[C],[pN],[pM],[C]
@:)  % Get first @ items from pN
%   STACK: [pNsub],[pM],[C],[pN],[pM],[C]
w@:) % Get first @ items from pM
%   STACK: [pMsub],[pNsub],[C],[pN],[pM],[C]
w3$)  % Get submatrix. Needs a `w` to ensure correct order.
%   STACK: [Csub],[pN],[pM],[C]
0&|  % Determinant.
%   STACK: [det],[pN],[pM],[C]
H*XHx% Multiply with clipboard H.
%   STACK: [pN],[pM],[C]
]    % Quit size loop
%   STACK: [pN],[pM],[C]. Expected: [n],[pM],[C]
J)   % Get last element from pN, which is n.
%   STACK: [n],[pM],[C]
]    % Quit first loop
xxtZy% Reset stack to
%   STACK: [m n],[C]
]    % Quit final loop.
H& % Output H only.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.