सूचकांक योग और मेरी मैट्रिक्स पट्टी


9

सूचकांक योग और मेरी मैट्रिक्स पट्टी

अपनी पसंदीदा भाषा में एक मैट्रिक्स / 2 डी सरणी को देखते हुए

इनपुट:

  • मैट्रिक्स में हमेशा एक विषम लंबाई होगी
  • मैट्रिक्स हमेशा पूरी तरह से चौकोर होगा
  • मैट्रिक्स का मान आपकी भाषा में कोई भी पूर्णांक हो सकता है (सकारात्मक या नकारात्मक)

उदाहरण:

1  2  3  4  5  6  7
2  3  4  5  6  7  8
3  4  50 6  7  8  9
4  5  6 100 8  9  10
5  6  7  8 -9  10 11
6  7  8  9  10 11 12
7  8 900 10 11 12 0

परिभाषाएं:

  • "केंद्रीय संख्या" को उस संख्या के रूप में परिभाषित किया जाता है जिसमें बाईं, दाईं ओर, ऊपर और नीचे की समान संख्या होती है

इस मामले में इसका मध्यतम 100 है

  • "बाहरी शेल" उन संख्याओं का संग्रह है जो उनका x और y इंडेक्स या 0 या मैट्रिक्स आकार है

1  2  3  4  5  6  7
2                 8
3                 9
4                 10
5                 11
6                 12
7  8 900 10 11 12 0

आपका कार्य:

केंद्रीय संख्या में प्रत्येक पंक्ति और स्तंभ का योग उनके 1-आधारित सूचकांक द्वारा प्रत्येक में मूल्यों को गुणा करने के बाद जोड़ें

उदाहरण के लिए एक एकल पंक्ति

4  5  6  7  8

प्रत्येक संख्या के लिए

number * index + number * index.....

4*1 + 5*2 + 6*3 + 7*4 + 8*5 => 100

उदाहरण:

 2 -3 -9  4  7  1  5  => 61
-2  0 -2 -7 -7 -7 -4  => -141
 6 -3 -2 -2 -3  2  1  => -10
 8 -8  4  1 -8  2  0  => -20
-5  6  7 -1  8  4  8  => 144
 1  5  7  8  7 -9 -5  => 10
 7  7 -2  2 -7 -8  0  => -60
                         |
78 65 60 45 -15 -89 10   => 154
                     |
                     => -16
  • सभी पंक्तियों और स्तंभों के लिए आप इन मूल्यों को जोड़ते हैं।
  • अब आप ये भी => १५४-१६ = १३।
  • आप उस संख्या को "केंद्रीय संख्या" में जोड़ें और मैट्रिक्स के "बाहरी शेल" को हटा दें

 0 -2 -7 -7 -7     => -88
-3 -2 -2 -3  2     => -15
-8  4 1+138 -8  2  => 395
 6  7 -1  8  4     => 69
 5  7  8  7 -9     => 26

19 69 442 30 -26

जब तक आप एक ही नंबर के साथ समाप्त नहीं करते हैं

-2 -2 -3     => -15
 4  1060 -8  => 2100
 7 -1  8     => 29

27 2115 5
  • 2114 + 2147 को 1060 में जोड़ें
  • "बाहरी शेल" निकालें और 5321 प्राप्त करें
  • अब हमारे पास एक ही संख्या बची है

यह आउटपुट है!

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

-6

-6

-7 -1  8
-4 -6  7
-3 -6  6

2

 6  7 -2  5  1
-2  6 -4 -2  3
-1 -4  0 -2 -7
 0  1  4 -4  8
-8 -6 -5  0  2

-365

 8  3  5  6  6 -7  5
 6  2  4 -2 -1  8  3
 2  1 -5  3  8  2 -3
 3 -1  0  7 -6  7 -5
 0 -8 -4 -9 -4  2 -8
 8 -9 -3  5  7  8  5
 8 -1  4  5  1 -4  8

17611

-9 -7  2  1  1 -2  3 -7 -3  6  7  1  0
-7 -8 -9 -2  7 -2  5  4  7 -7  8 -9  8
-4  4 -1  0  1  5 -3  7  1 -2 -9  4  8
 4  8  1 -1  0  7  4  6 -9  3 -9  3 -9
-6 -8 -4 -8 -9  2  1  1 -8  8  2  6 -4
-8 -5  1  1  2 -9  3  7  2  5 -6 -1  2
-8 -5 -7 -4 -9 -2  5  0  2 -4  2  0 -2
-3 -6 -3  2 -9  8  1 -5  5  0 -4 -1 -9
-9 -9 -8  0 -5 -7  1 -2  1 -4 -1  5  7
-6 -9  4 -2  8  7 -9 -5  3 -1  1  8  4
-6  6 -3 -4  3  5  6  8 -2  5 -1 -7 -9
-1  7 -9  4  6  7  6 -8  5  1  0 -3  0
-3 -2  5 -4  0  0  0 -1  7  4 -9 -4  2

-28473770

यह एक कोडगॉल्फ चुनौती है इसलिए सबसे कम बायटेकाउंट जीत के साथ कार्यक्रम


आप सही हैं, एक टाइपो
downrep_nation

3
नकारात्मक अंक एक मुद्दा क्यों होगा? मुझे नहीं लगता कि चुनौती को एसोलैंग्स के लिए समायोजित करना चाहिए, लेकिन शायद दूसरा रास्ता अधिक उपयुक्त है
downrep_nation

@LuisMendo मुझे लगता है कि यह कोई समस्या नहीं है, नियम "मैट्रिक्स मान आपकी भाषा में कोई भी पूर्णांक हो सकता है" का अर्थ है कि यदि आपकी भाषा में नकारात्मक संख्याएं नहीं हैं, तो उन्हें इसका समर्थन नहीं करना चाहिए।
घातक

वास्तव में यह सही है। लेकिन तब परीक्षण के मामले ठीक से काम नहीं करते
downrep_nation

2
"मुझे नहीं लगता कि चुनौती को एसोलैंग्स के लिए समायोजित करना चाहिए, लेकिन हो सकता है कि दूसरा रास्ता अधिक उपयुक्त हो" जिसे पत्थर में उकेरा जाना चाहिए
edc65

जवाबों:


4

MATL , 36 34 बाइट्स

tnq?`t&+stn:*sytn2/)+ 7M(6Lt3$)tnq

इनपुट ;पंक्ति विभाजक के रूप में एक 2 डी सरणी है

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

व्याख्या

tnq       % Take input. Duplicate, get number of elements, subtract 1
?         % If greater than 0
  `       %   Do...while
    t     %     Duplicate
    &+    %     Sum matrix with its transpose
    s     %     Sum each column. Gives a row vector
    tn:   %     Vector [1 2 ...] with the same size
    *     %     Multiply element-wise
    s     %     Sum of vector. This will be added to center entry of the matrix
    y     %     Duplicate matrix
    tn2/  %     Duplicate, get half its number of elements. Gives non-integer value
    )     %     Get center entry of the matrix, using linear index with implicit rounding
    +     %     Add center entry to sum of previous vector
    7M    %     Push index of center entry again
    (     %     Assgined new value to center of the matrix
    6Lt   %     Array [2 j1-1], twice. This will be used to remove shell
    3$)   %     Apply row and col indices to remove outer shell of the matrix
    tnq   %     Duplicate, number of elements, subtract 1. Falsy if matrix has 1 entry
          %   End do...while implicitly. The loop is exited when matrix has 1 entry
          % End if implicitly
          % Display stack implicitly

4

पायथन 2.7, 229 बाइट्स

यह कुछ इस तरह का मेरा पहला प्रयास है, इसलिए उम्मीद है कि मैंने इस सबमिशन के साथ सभी नियमों का पालन किया। यह सिर्फ एक फ़ंक्शन है जो सूचियों की सूची में इसके पैरामीटर के रूप में लेता है। मुझे लगता है कि रकम और सूची की समझ शायद थोड़ी कम हो सकती है, लेकिन यह मेरे लिए बहुत कठिन था। : डी

def r(M):
  t=len(M)
  if t==1:return M[0][0]
  M[t/2][t/2]+=sum(a*b for k in [[l[x] for l in M]for x in range(0,t)]for a,b in enumerate(k,1))+sum([i*j for l in M for i,j in enumerate(l,1)])
  return r([p[+1:-1]for p in M[1:-1]])

कुछ बाइट्स से मुझे दाढ़ी बनाने में मदद करने के लिए Thx to ईस्टरली इरक।


1
आप ऑपरेटरों ( ...) + sum([i*j...-> ...)+sum([i*j...) के बीच कुछ रिक्त स्थान निकाल सकते हैं , लेकिन कुल मिलाकर, महान पहली पोस्ट !!!!
19

ऊह कि चूक हो गई। धन्यवाद!
जेरेमी

1
इसके अलावा, ...]for ...काम करता है। आप उस तरह से कम से कम 2 जगह हटा सकते हैं। (लूप के लिए सूची हिट की समाप्ति)
R of

3

सी #, 257 बाइट्स

यहाँ एक गैर esolang जवाब है

void f(int[][]p){while(p.Length>1){int a=p.Length;int r=0;for(int i=0;i<a;i++)for(int j=0;j<a;j++)r+=(i+j+2)*p[i][j];p[a/2][a/2]+=r;p=p.Where((i,n)=>n>0&&n<p.Length-1).Select(k=>k.Where((i,n)=>n>0&&n<p.Length-1).ToArray()).ToArray();}Console.Write(p[0][0]);

ungolfed:

void f(int[][]p)
    {
        while (p.Length>1)
        {
            int a=p.Length;
            int r=0; //integer for number to add to middle
            for (int i = 0; i < a; i++)
                for (int j = 0; j < a; j++)
                    r +=(i+j+2)*p[i][j]; //add each element to counter according to their 1 based index
            p[a / 2][a / 2] += r; //add counter to middle
            p = p.Where((i, n) => n > 0 && n < p.Length - 1).Select(k => k.Where((i, n) => n > 0 && n < p.Length - 1).ToArray()).ToArray(); //strip outer shell from array
        }
        Console.Write(p[0][0]); //print last and only value in array
    }

2
अरे अब, जम्मू एक एसोलंग नहीं है।
मील

यदि आप शामिल नहीं हैं using System.Linqऔर यह संकलित नहीं करता है using System। मुझे यकीन नहीं है कि यह नियमों द्वारा आवश्यक है, हालांकि।
यति

यह एक पूर्ण कार्यक्रम नहीं है, इसका केवल एक कार्य है तो यह ठीक है जहां तक ​​मैं जानता हूं। मेरा मतलब है, मैं भी App.config और संपत्तियों और makefile में सभी बाइट्स को शामिल करने की आवश्यकता होगी? नहीं
downrep_nation

@downrep_nation यह केवल अजीब है, क्योंकि मैंने देखा है कि कुछ लोगों ने उन्हें स्रोत में शामिल किया है जब यह केवल एक फ़ंक्शन रहा है और उन्होंने स्कोर पर बाइट्स को शामिल किया है।
यति

अब जब मैं इसके बारे में सोचता हूं, तो मैं इस लाइन पर हूं कि आपको कम से कम आयात करना चाहिए System.Linq। अन्य भाषाएं जिन्हें कुछ विशेषताओं का उपयोग करने के लिए आयात करने की आवश्यकता होती है, वे उसी प्रक्रिया से गुजरती हैं, इसलिए मुझे लगता है कि यह गलत है कि हर मॉड्यूल C # में मेमोरी में लोड हो।
यति

2

जे, 66 बाइट्स

([:}:@}."1@}:@}.]+(i.@,~=](]+*)<.@-:)@#*[:+/^:2#\*]+|:)^:(<.@-:@#)

चुनौती में वर्णित प्रक्रिया के आधार पर सीधे-आगे का दृष्टिकोण।

[:+/^:2#\*]+|:योग मिलता है। ]+(i.@,~=](]+*)<.@-:)@#*योग द्वारा केंद्र को बढ़ाने के लिए एक विशेष रूप से बदसूरत तरीका है। [:}:@}."1@}:@}.बाहरी आवरण को हटाता है। शायद ऐसा करने का एक बेहतर तरीका है।

प्रयोग

   f =: ([:}:@}."1@}:@}.]+(i.@,~=](]+*)<.@-:)@#*[:+/^:2#\*]+|:)^:(<.@-:@#)
   f _6
_6
   f _7 _1 8 , _4 _6 7 ,: _3 _6 6
2
   f 6 7 _2 5 1 , _2 6 _4 _2 3 , _1 _4 0 _2 _7 , 0 1 4 _4 8 ,: _8 _6 _5 0 2 
_365
   f 8 3 5 6 6 _7 5 , 6 2 4 _2 _1 8 3 , 2 1 _5 3 8 2 _3 , 3 _1 0 7 _6 7 _5 , 0 _8 _4 _9 _4 2 _8 ,8 _9 _3 5 7 8 5 ,: 8 _1 4 5 1 _4 8
17611
   f (13 13 $ _9 _7 2 1 1 _2 3 _7 _3 6 7 1 0 _7 _8 _9 _2 7 _2 5 4 7 _7 8 _9 8 _4 4 _1 0 1 5 _3 7 1 _2 _9 4 8 4 8 1 _1 0 7 4 6 _9 3 _9 3 _9 _6 _8 _4 _8 _9 2 1 1 _8 8 2 6 _4 _8 _5 1 1 2 _9 3 7 2 5 _6 _1 2 _8 _5 _7 _4 _9 _2 5 0 2 _4 2 0 _2 _3 _6 _3 2 _9 8 1 _5 5 0 _4 _1 _9 _9 _9 _8 0 _5 _7 1 _2 1 _4 _1 5 7 _6 _9 4 _2 8 7 _9 _5 3 _1 1 8 4 _6 6 _3 _4 3 5 6 8 _2 5 _1 _7 _9 _1 7 _9 4 6 7 6 _8 5 1 0 _3 0 _3 _2 5 _4 0 0 0 _1 7 4 _9 _4 2)
_28473770

2

ब्रेकीलॉग , 114 बाइट्स

{l1,?hh.|:{:Im:I:?:{[L:I:M]h:JmN,Ll:2/D(IJ,M{$\:?c:{:{:ImN,I:1+:N*.}f+.}a+.}:N+.;'(DIJ),N.)}f.}f:7a$\:7a&.}.
brbr.

मैं इस बात से हैरान हूं कि यह ईमानदार भी है। कम से कम मुझे एहसास हुआ कि वास्तव में Brachylog को एक अंतर्निहित "के रूप में" उस तत्व के "परिवर्तन मूल्य" की आवश्यकता है ...

उपयोग उदाहरण:

?- run_from_file('code.brachylog', '[[0:_2:_7:_7:_7]:[_3:_2:_2:_3:2]:[_8:4:139:_8:2]:[6:7:_1:8:4]:[5:7:8:7:_9]]', Z).
Z = 5321 .

व्याख्या

अधिक पठनीय (और लंबा) संस्करण:

{l1,?hh.|:2f:7a$\:7a&.}.
:Im:I:?:3f.
[L:I:M]h:JmN,Ll:2/D(IJ,M:4&:N+.;'(DIJ),N.)
$\:?c:5a+.
:6f+.
:ImN,I:1+:N*.
brbr.

मैं बस मोटे तौर पर व्याख्या करने वाला हूं कि प्रत्येक (जो प्रत्येक पंक्ति को छोड़कर पहले मुख्य है जो मुख्य है + विधेय 1)

  • मुख्य विधेय + विधेय 1 {l1,?hh.|:2f:7a$\:7a&.}.: यदि इनपुट में केवल एक पंक्ति है, तो एल्गोरिथ्म को समाप्त करें और एकमात्र मान लौटाएं। अन्य सभी पंक्तियों को खोजें जो 2 को पूरा करती हैं, फिर परिणामी मैट्रिक्स पर 7 समर्पित करें, फिर ट्रांसपोज़ेशन पर 7 की भविष्यवाणी करें, फिर पुनरावर्ती कॉल करें।

  • 2 को समर्पित करें :Im:I:?:3f.: Iमैट्रिक्स की वें पंक्ति को लें , उस पंक्ति के सभी मूल्यों को खोजें जो 3 को संतुष्ट करते हैं Iऔर मैट्रिक्स को अतिरिक्त इनपुट के रूप में।

  • विधेय 3 [L:I:M]h:JmN,Ll:2/D(IJ,M:4&:N+.;'(DIJ),N.): Lपंक्ति है, पंक्ति Iका सूचकांक Mहै, मैट्रिक्स है। Nका Jतत्व है L। यदि L2 से विभाजित की गई लंबाई दोनों के बराबर है Iऔर J, तो आउटपुट Nमैट्रिक्स पर 4 विधेय के परिणाम के साथ है। अन्यथा उत्पादन सिर्फ है N। यह अनिवार्य रूप से मैट्रिक्स को इस अपवाद के साथ फिर से जोड़ देता है कि केंद्र तत्व योग में जुड़ जाता है।

  • 4 को समर्पित $\:?c:5a+.करें: मैट्रिक्स की प्रत्येक पंक्ति और कॉलम पर 5 विधेय लागू करें, परिणाम के योग के साथ आउटपुट को एकीकृत करें।

  • :6f+.विधेय 5 : पंक्ति पर विधेय 6 के सभी मान्य आउटपुट खोजें, परिणामी सूची के योग के साथ आउटपुट को एकीकृत करें।

  • विधेय 6 :ImN,I:1+:N*.Nहै Iपंक्ति के वें मूल्य, के साथ उत्पादन यूनिफाई N * (I+1)

  • 7 की भविष्यवाणी करें brbr.: मैट्रिक्स की पहली और आखिरी पंक्ति निकालें।


2

एपीएल, 56 वर्ण

{{1 1↓¯1 ¯1↓⍵+(-⍴⍵)↑(⌈.5×⍴⍵)↑+/(⍵⍪⍉⍵)+.×⍳≢⍵}⍣(⌊.5×≢⍵)⊣⍵}

अंग्रेजी में:

  • ⍣(⌊.5×≢⍵) दोहराएं "आयाम का आधा आकार गोल"
  • (⍵⍪⍉⍵)+.×⍳≢⍵ मैट्रिक्स के आंतरिक उत्पाद और सूचकांक वेक्टर के साथ इसका संक्रमण
  • (-⍴⍵)↑(⌈.5×⍴⍵)↑ मैट्रिक्स में परिवर्तन परिणाम 0s के साथ गद्देदार
  • 1 1↓¯1 ¯1↓ बाहरी आवरण को हटाता है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.