arrays - Haskell 数组(矩阵)元素访问

标签 arrays haskell matrix element

我目前在一个项目中,需要访问 Haskell 中的 Array-Matrix 中的元素。所以,我试着用谷歌搜索它,到处搜索。

函数应该是这样的:

getElementIndex :: Int -> Array (Int,Int) Int -> (Int,Int)

并且它必须返回矩阵中元素的IJ索引。

最佳答案

要在 Haskell 中从 Array 类型中读取元素,请使用 (!) 运算符,如下所示:

Prelude Data.Array> let v = listArray (0,9) [1..10]
Prelude Data.Array> v ! 3
4

所以,现在您需要做的就是遍历索引空间、行和列。我喜欢这种任务的列表推导:

assocs' x y arr = [ ((i,j), arr ! (i,j))
                  | i <- [0..x-1]
                  , j <- [0..y-1]
                  ]

这只是 Data.Array.assocs 的一个特殊版本:

assocs :: Ix i => Array i e -> [(i, e)]

它返回索引和元素的惰性列表。所以,调用 assocs,然后取第一个匹配的元素。

关于arrays - Haskell 数组(矩阵)元素访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5941127/

相关文章:

Haskell 构造类似于 Rust 特征对象

arrays - 稀疏向量之和 : bug or feature?

haskell - 什么是 '[] and ' : in Haskell?

python - 如何将输出文件转换为数组

haskell - 在函数签名中隐藏多参数类型类的类型参数之一

C语言: bug = different matrix values when i print it in the main function

c++ - 给定一个大的二维矩阵,我可以唯一地适合多少个较小尺寸 n 的二维矩阵?

java - 假设列大小相同,如何在没有数组复制的情况下在 Java 中追加和前置 2D 数组?

c - 使用结构数组的学生信息数据库(C语言)

c# - 在整数数组中找到具有最大乘积的连续序列