प्रतिकृति मैट्रिक्स का योग


11

नंबरों की सूची को देखते हुए [ एक 1 एक 2 ... एक n ] , सभी का योग मैट्रिक्स गणना Aᵢ जहां Aᵢ इस प्रकार परिभाषित किया गया है ( मीटर सभी की अधिकतम है aᵢ ):

       1  2  ⋯ (i-1) i (i+1) ⋯  n
     +----------------------------
 1   | 0  0  ⋯   0   aᵢ  aᵢ  ⋯  aᵢ
 2   | 0  0  ⋯   0   aᵢ  aᵢ  ⋯  aᵢ
 .   . .  .      .   .   .      .
 .   . .  .      .   .   .      .
aᵢ   | 0  0  ⋯   0   aᵢ  aᵢ  ⋯  aᵢ
aᵢ₊₁ | 0  0  ⋯   0   0   0   ⋯  0
 .   . .  .      .   .   .      .
 .   . .  .      .   .   .      .
 m   | 0  0  ⋯   0   0   0   ⋯  0

उदाहरण

इनपुट को देखते हुए [2,1,3,1]हम निम्नलिखित मैट्रिक्स का निर्माण करते हैं:

[2 2 2 2]   [0 1 1 1]   [0 0 3 3]   [0 0 0 1]   [2 3 6 7]
[2 2 2 2] + [0 0 0 0] + [0 0 3 3] + [0 0 0 0] = [2 2 5 5]
[0 0 0 0]   [0 0 0 0]   [0 0 3 3]   [0 0 0 0]   [0 0 3 3]

नियम और आई / ओ

  • आप मान सकते हैं कि इनपुट गैर-रिक्त है
  • आप मान सकते हैं कि सभी इनपुट गैर-नकारात्मक हैं (0 inputs)
  • इनपुट 1 × n (या n × 1) मैट्रिक्स, सूची, सरणी आदि हो सकता है।
  • इसी तरह आउटपुट एक मैट्रिक्स, सूचियों की सूची, सरणी आदि हो सकता है।
  • आप किसी भी डिफ़ॉल्ट I / O प्रारूप के माध्यम से इनपुट ले और वापस कर सकते हैं
  • आपका सबमिशन एक पूर्ण प्रोग्राम या फ़ंक्शन हो सकता है

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

[0] -> [] or [[]]
[1] -> [[1]]
[3] -> [[3],[3],[3]]
[2,2] -> [[2,4],[2,4]]
[3,0,0] -> [[3,3,3],[3,3,3],[3,3,3]]
[1,2,3,4,5] -> [[1,3,6,10,15],[0,2,5,9,14],[0,0,3,7,12],[0,0,0,4,9],[0,0,0,0,5]]
[10,1,0,3,7,8] -> [[10,11,11,14,21,29],[10,10,10,13,20,28],[10,10,10,13,20,28],[10,10,10,10,17,25],[10,10,10,10,17,25],[10,10,10,10,17,25],[10,10,10,10,17,25],[10,10,10,10,10,18],[10,10,10,10,10,10],[10,10,10,10,10,10]]

मुझे लगता है कि एक फ़ॉन्ट अंतर या कुछ है। मैं देख रहा हूं कि आपने मेरा संपादन वापस ले लिया है। यह वर्तमान में यह मुझे कैसे दिखता है imgur.com/a06RH9r यह विंडोज 10 पर क्रोम है। ऊर्ध्वाधर दीर्घवृत्त किसी कारण से मोनोस्पेस में प्रस्तुत नहीं किए जाते हैं, और कॉलम के साथ संरेखित नहीं करते हैं। इसलिए मैंने इसे बदल दिया। लेकिन मुझे लगता है कि यह अलग-अलग वातावरण में अलग दिखना चाहिए।
पुनरावर्ती

1
निश्चित रूप से एक फ़ॉन्ट मुद्दा। मेरी स्क्रीन पर दोनों संशोधन गलत लिखे गए हैं।
डेनिस

क्या हम परिणाम वापस लौटा सकते हैं?
एडम


1
@ Adám: मैं ऐसा नहीं करने जा रहा हूं, लेकिन अपनी पोस्ट में ऐसा समाधान शामिल करने के लिए स्वतंत्र महसूस करता हूं जो ऐसा करता है।
ბიმო

जवाबों:


9

जेली , 10 5 बाइट्स

ẋ"z0Ä

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

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

ẋ"z0Ä  Main link. Argument: A (array)


       e.g. [2, 1, 3, 1]

ẋ"     Repeat each n in A n times.

       e.g. [[2, 2   ]
             [1      ]
             [3, 3, 3]
             [1      ]]

  z0   Zipfill 0; read the result by columns, filling missing elements with 0's.

        e.g. [[2, 1, 3, 1]
              [2, 0, 3, 0]
              [0, 0, 3, 0]]

    Ä  Take the cumulative sum of each row vector.

       e.g. [[2, 3, 6, 7]
             [2, 2, 5, 5]
             [0, 0, 3, 3]]

4

आर , 80 बाइट्स

n=sum((a=scan())|1);for(i in 1:n)F=F+`[<-`(matrix(0,max(a),n),0:a[i],i:n,a[i]);F

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

स्टड से इनपुट लेता है; 0x1इनपुट के लिए एक मैट्रिक्स प्रिंट करता है 0, जो प्रिंट आउट करता है

	[,1]


3
सोच रहे लोगों के लिए, Fएक अंतर्निहित वैश्विक चर है जिसका प्रारंभिक मूल्य है FALSE। यहाँ यह 0 के लिए मजबूर है और संचयी राशि के प्रारंभिक मूल्य के रूप में उपयोग किया जाता है। यह उत्तर उपयोग नहीं करने का कारण दर्शाता है Fऔर Tविशेष रूप से डिज़ाइन किए गए कोड को छोड़कर वास्तव में उपयोग नहीं किया जाता है!
18'18



3

एपीएल (डायलॉग यूनिकोड) , 8 बाइट्स SBCS

पूरा कार्यक्रम। सूची के लिए संकेत स्टड, मैट्रिक्स को स्टडआउट में प्रिंट करता है।

डेनिस की विधि का उपयोग करता है ।

+\⍉↑⍴⍨¨⎕

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

 stdin

⍴⍨¨आरप्रत्येक की eshape-selfie

 मैट्रिक्स में सूचियों की मिक्स सूची, 0s के साथ भरना

 पक्षांतरित

+\ संचयी पंक्ति-वार राशि

इससे कोई कम्प्यूटेशनल फर्क नहीं पड़ता है, इसलिए इसे संभावित रूप से छोड़ दिया जा सकता है और पंक्ति-वार के बजाय कॉलम-वार में \बदल दिया जा सकता है



2

ऑक्टेव , 64 बाइट्स

@(x,k=a=0*(x+(1:max(x))'))eval"for i=x;a(1:i,++k:end)+=i;end,a";

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

स्पष्टीकरण:

फिर भी: तर्क सूची और eval में अभिव्यक्तियाँ एक फ़ंक्शन में उपयोग की जाती हैं :)

यह xइनपुट के रूप में लेता है , और आयामों के साथ शून्य से भरे दो समान मैट्रीस बनाता है k=a=zeros(length(x),max(x))। यह xऊर्ध्वाधर वेक्टर के साथ क्षैतिज वेक्टर को जोड़कर प्राप्त किया जाता है 1:max(x), जो आयामों को 2D-सरणी में विस्तारित करता है, फिर इसे शून्य से गुणा करता है। ~(x+...)दुर्भाग्य से काम नहीं करता है, क्योंकि उस aफ़ंक्शन को बाकी फ़ंक्शन के दौरान एक तार्किक सरणी होना चाहिए।

for i=xएक लूप है जो प्रत्येक पुनरावृत्ति के लिए बनाता है i=x(1), फिर i=x(2)और इसी तरह। a(1:i,k++:end)मैट्रिक्स का वह हिस्सा है जिसे प्रत्येक पुनरावृत्ति के लिए अद्यतन किया जाना चाहिए। 1:iएक वेक्टर कह रहा है कि किन पंक्तियों को अपडेट किया जाना चाहिए। यदि i=0, तो यह एक खाली वेक्टर होगा, इस प्रकार कुछ भी अपडेट नहीं किया जाएगा, अन्यथा यह नहीं है 1, 2 ...। मैट्रिक्स को एक से ++k:endबढ़ाता है k, और इस मैट्रिक्स के पहले मूल्य ( 1,2,3...) और मैट्रिक्स के अंतिम कॉलम तक एक सीमा बनाता है a+=iकरने के लिए वर्तमान मूल्य जोड़ता है aend,aलूप और आउटपुट को समाप्त करता है a




1

जावा 10, 142 बाइट्स

a->{int l=a.length,i=0,j,s,m=0;for(int q:a)m=q>m?q:m;int[][]r=new int[m][l];for(;i<m;i++)for(j=s=0;j<l;j++)r[i][j]=s+=i<a[j]?a[j]:0;return r;}

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

a->{               // Method with integer-array parameter and integer-matrix return-type
  int l=a.length,  //  Length of the input-array
      i,j,         //  Index integers
      s,           //  Sum integer
  m=0;for(int q:a)m=q>m?q:m;
                   //  Determine the maximum of the input-array
  int[][]r=new int[m][l];
                   //  Result-matrix of size `m` by `l`
  for(;i<m;i++)    //  Loop `i` over the rows
    for(j=s=0;     //   Reset the sum to 0
        j<l;j++)   //   Inner loop `j` over the columns
      r[i][j]=s+=  //    Add the following to the sum `s`, add set it as current cell:
        i<a[j]?    //     If the row-index is smaller than the `j`'th value in the input:
         a[j]      //      Add the current item to the sum
        :          //     Else:
         0;        //      Leave the sum the same by adding 0
  return r;}       //  Return the result-matrix


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