2013-06-13 2 views
4
난이

현명한

1 1 2 = 4

2 2 1 = 5

3/3 = 1 (7)와 같은 배열의 합 할

6 6 4

= = =

난 자바 SCRI 사용 어레이의 합과 같은 인쇄하려는 pt in html. 첫번째 작은 조각으로 문제를 분해하여

+2

어떤 는 M × N 매트릭스에서 작동? 행이 아주 간단해야하고, 열이 더 힘들어되지 않을 것 ... –

+0

이 당신이 – Dineshkani

+0

그냥 루프, 하나 중첩의 몇 소요에 대한 숙제가 각 행에 하나의 각 셀을 통해 어떤 반복되는 각 열의 각 셀을 반복합니다. – nondefault

답변

13

시작. 기본보다 add 함수를 사용하여 정의 된 기본 sum 함수를 정의했습니다. 입력 배열에서 mapsum은 수평 합계를 제공합니다.

수직 금액은 조금 더 까다로운,하지만 너무 힘든되지 않습니다. 우리의 행렬을 회전시키는 함수 transpose을 정의했습니다. 우리가 회전하면 sum 행을 같은 방법으로 처리 할 수 ​​있습니다.

이 솔루션은 당신은 아무것도를 시도

// generic, reusable functions 
 
const add = (x,y) => x + y 
 
const sum = xs => xs.reduce(add, 0) 
 
const head = ([x,...xs]) => x 
 
const tail = ([x,...xs]) => xs 
 

 
const transpose = ([xs, ...xxs]) => { 
 
    const aux = ([x,...xs]) => 
 
    x === undefined 
     ? transpose (xxs) 
 
     : [ [x, ...xxs.map(head)], ...transpose ([xs, ...xxs.map(tail)])] 
 
    return xs === undefined ? [] : aux(xs) 
 
} 
 

 
// sample data 
 
let numbers = [ 
 
    [1,1,1], 
 
    [2,2,2], 
 
    [3,3,3], 
 
    [4,4,4] 
 
] 
 

 
// rows 
 
console.log(numbers.map(sum)) 
 
// [ 3, 6, 9, 12 ] 
 

 
// columns 
 
console.log(transpose(numbers).map(sum)) 
 
// [ 10, 10, 10 ]

+0

고마워요.하지만 다른 방법으로 해결할 수 있습니다. – dilshad

+3

@dilshad, 그래요. 그렇지만 for 루프 솔루션은 동굴 벽에 마킹처럼 원유입니다. – naomik

+0

나는 OP가 특정 시나리오를 요구한다는 것을 알고 있지만 코드는 NxN 배열에서만 작동합니다. –