如何在OCaml中找到矩阵中与单元格相邻的单元格?

时间:2014-03-24 17:28:00

标签: matrix ocaml

例如,我得到一个列表[3;5;6;2;10;4;9;1;3],它映射到这样的矩阵:

3 5 6
2 10 4
9 1 3

我已经编码了一个function "find_size",它会找到给定列表的矩阵的大小(对于这个例子,它会给我int 3)

以及function "find_position"会告诉我矩阵10中的位置(所以这里,它会给我元组(1,1)因为它在第二行和第二列)

我认为解决这个问题的最佳方法是使用折叠函数迭代列表,该函数将给定函数应用于每个元素并跟踪结果。因此,我的目标是创建一个函数,告诉我矩阵中的某个元素是否与OCaml中的10相邻(如果是,我会告诉fold函数将该元素添加到答案列表中)。

对此的最终答案是[5;2;4;1],因为这些元素与10相邻。

1 个答案:

答案 0 :(得分:1)

您可以相当轻松地将您的大小和位置值转换为相邻位置的列表作为元组。您可以将大小和元组转换为单个列表索引。使用排序的索引列表,您可以折叠列表并提取给定索引处的元素。

如果您使用一组数字,这可能会更容易,因为它值得。

如果没有看到您尝试过的某些代码,并且听到它对您有效或无效,那么很难说出更多。