Punktprodukt von Diagonalen


10

Diese Herausforderung ist sehr einfach. Als Eingabe erhalten Sie eine quadratische Matrix, die auf eine beliebige Weise dargestellt wird, und Sie müssen das Punktprodukt der Diagonalen der Matrix ausgeben.

Die Diagonalen im Einzelnen sind die Diagonalen, die von links oben nach rechts unten und von rechts oben nach links unten verlaufen.

Testfälle

[[-1, 1], [-2, 1]]  ->  -3
[[824, -65], [-814, -741]]  ->  549614
[[-1, -8, 4], [4, 0, -5], [-3, 5, 2]]  ->  -10
[[0, -1, 0], [1, 0, 2], [1, 0, 1]]  ->  1

Antworten:




2

Python, 47 Bytes

lambda x:sum(r[i]*r[~i]for i,r in enumerate(x))

Testen Sie es auf Ideone .


2

J, 21 19 Bytes

[:+/(<0 1)|:(*|."1)

Einfacher Ansatz.

2 Bytes dank @ Lynn gespeichert .

Verwendungszweck

Das Eingabearray wird mit geformt dimensions $ values.

   f =: [:+/(<0 1)|:(*|."1)
   f (2 2 $ _1 1 _2 1)
_3
   f (2 2 $ 824 _65 _814 _741)
549614
   f (3 3 $ _1 _8 4 4 0 _5 _3 5 2)
_10
   f (3 3 $ 0 _1 0 1 0 2 1 0 1)
1

Erläuterung

[:+/(<0 1)|:(*|."1)    Input: matrix M
              |."1     Reverse each row of M
             *         Multiply element-wise M and the row-reversed M
    (<0 1)|:           Take the diagonal of that matrix
[:+/                   Sum that diagonal and return it=

[:+/(<0 1)|:(*|."1)ist 19 Bytes
Lynn


1

JavaScript (ES6), 45 Byte

a=>a.reduce((r,b,i)=>r+b[i]*b.slice(~i)[0],0)
a=>a.reduce((r,b,i)=>r+b[i]*b[b.length+~i],0)




0

Clojure, 57 Bytes

#(apply +(map(fn[i r](*(r i)(nth(reverse r)i)))(range)%))


0

J, 18 Bytes

<:@#{+//.@:(*|."1)

Erklärung:

           (     ) | Monadic hook
            *      | Argument times...
             |."1  | The argument mirrored around the y axis
     +//.@:        | Make a list by summing each of the diagonals of the matrix
    {              | Takes element number...
<:@#               | Calculates the correct index (size of the array - 1)

0

05AB1E , 5 Bytes

í*Å\O

Probieren Sie es online aus oder überprüfen Sie alle Testfälle .

Erläuterung:

í        # Reverse each row of the (implicit) input-matrix
         #  i.e. [[-1,-8,4],[4,0,-5],[-3,5,2]] → [[4,-8,-1],[-5,0,4],[2,5,-3]]
 *       # Multiply it with the (implicit) input-matrix (at the same positions)
         #  i.e. [[-1,-8,4],[4,0,-5],[-3,5,2]] and [[4,-8,-1],[-5,0,4],[2,5,-3]]
         #   → [[-4,64,-4],[-20,0,-20],[-6,25,-6]]
  Å\     # Get the diagonal-list from the top-left corner towards the bottom-right
         #  i.e. [[-4,64,-4],[-20,0,-20],[-6,25,-6]] → [-4,0,-6]
    O    # Sum it (and output implicitly)
         #  i.e. [-4,0,-6] → -10
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.