इष्टतम वर्ग मैट्रिक्स की गणना करें


13

इष्टतम मैट्रिक्स (इस चुनौती के बजाय संकीर्ण दायरे के लिए) द्वारा प्राप्त किया जाता "ज़िप करने" इसी पंक्तियों और एक वर्ग मैट्रिक्स और प्रत्येक जोड़ी की अधिकतम होने का कॉलम से तत्वों।

उदाहरण के लिए, निम्नलिखित मैट्रिक्स दिया गया है:

4 5 6
1 7 2
7 3 0

आप इसे प्राप्त करने के लिए इसके स्थानान्तरण के साथ जोड़ सकते हैं [[[4,5,6],[4,1,7]],[[1,7,2],[5,7,3]],[[7,3,0],[6,2,0]]]:। यदि आप सूचियों के प्रत्येक जोड़े को ज़िप करते हैं, तो आप निम्नलिखित प्राप्त करते हैं [[(4,4),(5,1),(6,7)],[(1,5),(7,7),(2,3)],[(7,6),(3,2),(0,0)]]:। अंतिम चरण इष्टतम मैट्रिक्स प्राप्त करने के लिए प्रत्येक जोड़ी का अधिकतम भाग प्राप्त करना है:

4 5 7
5 7 3
7 3 0

आपका कार्य इनपुट के रूप में दिए गए एक वर्ग मैट्रिक्स के इष्टतम मैट्रिक्स को आउटपुट करना है। मैट्रिक्स में केवल पूर्णांक होंगे। I / O किसी भी उचित प्रारूप में किया जा सकता है। बाइट्स में सबसे छोटा कोड (या तो UTF-8 में या भाषा के कस्टम एन्कोडिंग में) जीत जाता है!

टेस्ट

[[172,29], [29,0]] -> [[172,29], [29,0]]
[[4,5,6], [1,7,2], [7,3,0]] -> [[4,5,7], [5,7,3], [7,3,0] ]]
[[1,2,3], [1,2,3], [1,2,3]] -> [[1,2,3], [2,2,3], [3,3,3] ]]
[[4,5, -6], [0,8, -12], [- 2,2,4]] -> [[4,5, -2], [5,8,2], [- 2,2,4]]

क्या हम मैट्रिक्स के एक फ्लैट संस्करण का उत्पादन कर सकते हैं? जैसे [1,2,3,4]बजाय [[1,2],[3,4]]? बचाए ~ 33%
wastl

जवाबों:


7

जेली , 2 बाइट्स

»Z

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

»Z  Main link. Argument: M (integer matrix)

 Z  Zip the rows of M, transposing rows and columns.
»   Take the maxima of all corresponding integers.

ओह मेरी ... क्यों दुनिया में ऐसा »व्यवहार करता है ?!

5
एक सरणी हेरफेर भाषा के लिए सुंदर मानक। ऑक्टेव maxऐसा ही करता है।
डेनिस

5

हास्केल , 40 बाइट्स

z(z max)<*>foldr(z(:))e
e=[]:e
z=zipWith

इसे ऑनलाइन आज़माएं!

मैं इस के रूप में ungolf होगा:

import Data.List
f m = zipWith (zipWith max) m (transpose m)

... जो बहुत अधिक सुरुचिपूर्ण है।


2
मुझे यह मज़ेदार लगता है कि क्लीन में जो सबसे अच्छा मैं गोल्फ कर सकता था, वह आपके अनगढ़ हॉस्केल के समान है।
Οसूर





2

जावास्क्रिप्ट (ईएस 6), 48 बाइट्स

m=>m.map((r,y)=>r.map((v,x)=>v>(k=m[x][y])?v:k))

परीक्षण के मामलों


2

जे , 4 बाइट्स

टैसिट उपसर्ग फ़ंक्शन।

>.|:

इसे ऑनलाइन आज़माएं!

>. छत [तर्क के साथ]

|: प्रत्यारोपित तर्क


उम, मुझे नहीं लगता कि आपको शामिल करने की आवश्यकता है f=:। : P सबसे पहले मैंने सोचा था कि आपने 3 बाइट्स से बायटेकाउंट कम कर दिया ...
एरिक आउटगॉल्फर

<.माना जाता है>.
FrownyFrog

@FrownyFrog वास्तव में।
Adám

@EriktheOutgolfer नहीं, मैं नहीं।
Adám


1

CJam , 8 बाइट्स

{_z..e>}

बेनामी ब्लॉक (फ़ंक्शन) जो स्टैक से इनपुट लेता है और इसे आउटपुट द्वारा प्रतिस्थापित करता है।

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

{      }    e# Define block
 _          e# Duplicate
  z         e# Zip
   .        e# Apply next operator to the two arrays, item by item
            e# (that is, to rows of the two matrices)
    .       e# Apply next operator to the two arrays, item by item
            e# (that is, to numbers of the two rows)
     e>     e# Maximum of two numbers

1

आर , 23 बाइट्स

function(A)pmax(A,t(A))

इसे ऑनलाइन आज़माएं!

यह अधिकांश अन्य उत्तरों के बराबर है। हालाँकि, R maxके दो सामान्य परिदृश्यों के लिए दो अलग-अलग कार्य हैं:

maxऔर minउनके तर्कों में मौजूद सभी मानों की अधिकतम या न्यूनतम राशि को पूर्णांक के रूप में लौटाएं, यदि सभी तार्किक या पूर्णांक हैं, तो दोगुना है यदि सभी संख्यात्मक हैं, और वर्ण अन्यथा।

pmaxऔर pminतर्कों के रूप में एक या अधिक वैक्टर (या मैट्रीस) लें और वैक्टर के 'समानांतर' मैक्सिमा (या मिनीमा) देते हुए एक एकल वेक्टर लौटाएं। परिणाम का पहला तत्व सभी तर्कों के पहले तत्वों का अधिकतम (न्यूनतम) है, परिणाम का दूसरा तत्व सभी तर्कों के दूसरे तत्वों का अधिकतम (न्यूनतम) है। यदि आवश्यक हो तो छोटे इनपुट (गैर-शून्य लंबाई के) को पुनर्नवीनीकरण किया जाता है।



1

सी (जीसीसी) , 79 77 बाइट्स

  • Steadybox के लिए धन्यवाद दो बाइट्स सहेजे गए ; इस चुनौती में सभी मैट्रिक्स के रूप में केवल एक मैट्रिक्स आयाम पैरामीटर लेना वर्ग है।
j,i;f(A,n)int*A;{for(j=0;j<n*n;j++)printf("%d,",A[A[j]>A[i=j/n+j%n*n]?j:i]);}

इसे ऑनलाइन आज़माएं!

एक फ्लैट पूर्णांक सरणी Aऔर मैट्रिक्स आयाम n(मैट्रिक्स को वर्ग के रूप में) इनपुट के रूप में लेता है । स्टडआउट के लिए एक फ्लैट पूर्णांक सरणी स्ट्रिंग प्रतिनिधित्व आउटपुट करता है।








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