대각선의 내적


10

이 도전은 매우 간단합니다. 당신은 제정신의 방식으로 표현 된 정사각 행렬의 입력으로 주어지며, 행렬의 대각선의 내적을 출력해야합니다.

구체적으로 대각선은 왼쪽 상단에서 오른쪽 하단으로, 오른쪽 상단에서 왼쪽 하단으로가는 대각선입니다.

테스트 사례

[[-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

답변:





2

J, 21 19 바이트

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

직접적인 접근.

@ Lynn 덕분에 2 바이트를 절약했습니다 .

용법

입력 배열은를 사용하여 형성됩니다 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

설명

[:+/(<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)is 19 bytes
Lynn


1

자바 스크립트 (ES6), 45 바이트

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)


1

매스 매 티카, 17 바이트

Tr[#~Reverse~2#]&


0

클로저, 57 바이트

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


0

J, 18 바이트

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

설명 :

           (     ) | 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 바이트

í*Å\O

온라인으로 시도 하거나 모든 테스트 사례를 확인하십시오 .

설명:

í        # 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.