पूरी तरह से उलटा Submatrices


16

( मैथ पर इस सवाल से प्रेरित )

परिभाषाएँ

एक को देखते हुए n x nवर्ग मैट्रिक्स एक है, हम इसे कॉल कर सकते हैं invertibleअगर कोई मौजूद n x nवर्ग मैट्रिक्स बी ऐसी है कि अटल बिहारी = बीए = मैं n , साथ मैं n आकार की पहचान मैट्रिक्स किया जा रहा है n x n(मुख्य विकर्ण के साथ मैट्रिक्स 1रों और कुछ और 0), और एबी और बीए सामान्य मैट्रिक्स गुणन का प्रतिनिधित्व करता है (मैं यहां नहीं जाऊंगा - एक रैखिक बीजगणित वर्ग ले जाऊंगा)।

कि से, हम एक कॉल कर सकते हैं m x nमैट्रिक्स सी totally invertible अगर हर k x kकी submatrix (नीचे वर्णित) सी सभी के लिए उलटी है k > 1, k <= (smaller of m,n)

मूल मैट्रिक्स से किसी भी संख्या में पंक्तियों और / या स्तंभों को हटाने के बाद एक सबमेट्रिक्स को परिणामस्वरूप मैट्रिक्स के रूप में परिभाषित किया गया है। उदाहरण के लिए, नीचे की 3x3मैट्रिक्स सी को पहली पंक्ति और मध्य स्तंभ को हटाकर एक 2x2सबमेट्रिक्स C 'में बदला जा सकता है:1 2 32 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, और आपकी भाषा से बड़ा कोई भी नहीं संभाल सकता है।
  • इनपुट मैट्रिक्स में Z + ( धनात्मक पूर्णांक ) से केवल संख्यात्मक मान शामिल होंगे ।

उत्पादन

नियम

  • या तो एक पूर्ण कार्यक्रम या एक समारोह स्वीकार्य हैं।
  • मानक खामियों को मना किया जाता है।
  • यह इसलिए सभी सामान्य गोल्फिंग नियम लागू होते हैं, और सबसे छोटा कोड (बाइट्स में) जीतता है।

उदाहरण

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?
feersum

1
@ Faersum Whoops - पकड़ने के लिए धन्यवाद। यह सचाई के तहत चला गया था और नीचे वाले 6को कोने में होना चाहिए था , नहीं 7। अनाड़ी टाइपो।
AdmBorkBork

सबसे पहले, मैंने सोचा था कि शीर्षक "पूरी तरह से उलट पनडुब्बियों" है।
user2357112

जवाबों:


5

जेली , 26 24 23 20 19 17 16 बाइट्स

-1 बाइट के लिए धन्यवाद @ मीलों (प्रत्येक के लिए अनावश्यक , जब निर्धारक लेते हैं)
-2 बाइट्स, @ मील्स फिर से! (अनावश्यक श्रृंखला जुदाई, और Ѐत्वरित का उपयोग )

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

मैं सोच रहा था कि मुझे इसकी आवश्यकता है क्योंकि मेरे पास संयोजनों का एक गुच्छा है, लेकिन नहीं मुझे स्पष्ट रूप से निर्देश देने की आवश्यकता नहीं है। धन्यवाद!
जोनाथन एलन

मैंने निर्धारकों का उपयोग करके उस अंतिम चुनौती से सीखा, और सत्यापित किया कि यह वास्तव ldepth = 2में स्रोत में है
मील

1
इसके अलावा, मुझे लगता है कि आप लिंक 2 में एक बाइट का उपयोग करके बचा सकते हैं ZœcLÆḊऔर एक अन्य बाइट मुख्य लिंक मेंçЀJȦ
मील

अच्छा सामान @miles फिर से धन्यवाद! मैंने सोचा था कि जब मैंने कोशिश की थी, तो उन दोनों में से पहले काम नहीं किया था, लेकिन यह तब हुआ होगा जब मैं आपको बंद कर रहा था । पूरी तरह से भूल गया Ѐ
जोनाथन एलन

2
अच्छा संयोजन, मुझे लगता है कि आप इसे एक लाइनर बना सकते हैं यदि आप चाहते हैं œcЀJµZœcLÆḊµ€€Ȧजिसके साथ 16 बाइट्स भी हैं
मील

4

गणितज्ञ 10.0, 34 बाइट्स

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

6-टिल्ड चेन ... नया व्यक्तिगत रिकॉर्ड!


3

MATL, 57 बाइट्स

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

बेशक, आप इसे ऑनलाइन आज़मा सकते हैं !

इनपुट 'पोर्ट्रेट' ओरिएंटेशन (nRows> = nColumns) में होना चाहिए। मुझे लगता है कि यह सबसे कुशल समाधान नहीं हो सकता है ... लेकिन कम से कम मैं दूसरों के लिए कुछ जगह छोड़ रहा हूं ताकि मुझे बहिष्कृत किया जा सके। मुझे उन विशिष्ट संकेतों को सुनना अच्छा लगेगा जो इस विशेष दृष्टिकोण को कम कर सकते थे, लेकिन मुझे लगता है कि इस बड़े बाइटकाउंट को दूसरों को पूरी तरह से अलग दृष्टिकोण के साथ MATL प्रविष्टि बनाने के लिए प्रेरित करना चाहिए। 0 प्रदर्शित करता है यदि मिथ्या या बड़े पैमाने पर मान अगर सत्य है (जल्दी से अगर मैट्रिक्स बहुत बड़ा हो जाता है, तो 1 अतिरिक्त बाइट के लिए, कोई व्यक्ति (तार्किक और) के H*साथ बदल सकता है H&Y। @LuisMendo की बदौलत कुछ बाइट्स बचाए।

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.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.