짝수 행과 열이있는 행렬에 각 2x2 부분 행렬의 합계가 있으면 목록을 가져와야합니다.행렬의 모든 2x2 부분 행렬의 각 원소의 합
예를 들어, 4x4 매트릭스 (1)가 있다고 가정하십시오.
(1): [ [1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10,11,12],
[13,14,15,16] ]
sum2x2 of (1):
1. 1+2+5+6 = 14
2. 3+4+7+8 = 22
3. 9+10+13+14 = 46
.
.
result: [14, 22, 46, ...]
내가
Data.Matrix를 사용하려면
및 submatrix
가 만드는 : 함수는 (난 그냥 주어진 행렬은 n과 m도을있는 모든 N × M 개의 행렬이 될 수 있습니다 싶습니다 ) 다음처럼 계산한다 이 목록. 그리고 함수는 다음 패턴해야한다 :이 기능을 쓰기 시작했다
sum2x2 :: Matrix Double -> [Double]
을, 그러나 나는 여기에서 진행하는 방법을 알고하지 않습니다
sum2x2 :: Matrix Double -> [Double]
sum2x2 m = if even (ncols m) && even (nrows m)
then what?
else error "sum2x2 takes only even matrices"
submatrix
작품을 다음과 같이 :
-- | /O(1)/. Extract a submatrix given row and column limits.
-- Example:
--
-- > (1 2 3)
-- > (4 5 6) (2 3)
-- > submatrix 1 2 2 3 (7 8 9) = (5 6)
submatrix :: Int --^Starting row
-> Int --^Ending row
-> Int --^Starting column
-> Int --^Ending column
-> Matrix a
-> Matrix a
그래서 개념이 있습니다. 목록 이해력을 사용하여 Haskell에서 이것을 어떻게 구현합니까?
'Data.Matrix' 패키지 좋은 [분할 블록 (https://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html#g:8) 기능을 포함 '서브 매트릭스 '처럼. 그것들은이 직업에 아주 편리한 도구입니다. – Redu