有了数字矩阵,如何使用Haskell从中提取切片?
示例:
Int -> Int -> Int -> Int -> [Int] -> Int -> Int -> [Int]
getTile height width x y xs matrix_height matrix_width = ...
getTile 2 2 1 1 [1,2,3,4,5,
6,7,8,9,10] 2 5 = [2,3
7,8]
答案 0 :(得分:0)
您可能希望使用住宿加早餐套餐中的Numeric.Matrix。它的效率更高,并且有一种构建子矩阵的好方法(固定,选择不合适)。
getTile height width x y m = matrix getElem (height,width) where
getElem (i,j) = m `at` (i+x-1, j+y-1)
Numeric.Matrix使用基于1的索引,因此可能会使问题复杂化。
答案 1 :(得分:0)
import Data.Matrix
let flat_matrix=[1,2,3,4,5,6,7,8,9,10]
let mat = Data.Matrix.fromList width height flat_matrix
let tile = submatrix start_row end_row start_column end_column mat