我对 OCaml 相当陌生,我想实现一个类似于四合一游戏。我需要一些数据结构来保持游戏状态。游戏板是一个 4x4 的正方形,共有 16 块瓷砖。我正在 OCaml 中为此寻找一种表示形式,它可以轻松快速地检索(或对其进行一些操作)整个列、行或对角线中的所有元素。我将在这个游戏上进行极小极大搜索,这就是为什么速度很重要。
到目前为止,我已经考虑了一个一维列表。列表的问题在于很难弄清楚哪些元素属于每一行/列/对角线,然后用List.map
例如检索它们。
我考虑过使用Array.make 4 (Array.make 4 Empty);;
. 当涉及到行时,这绝对是完美的。很容易得到它们并对其进行模式匹配。但是在单个列和对角线上进行模式匹配是一件苦差事。
我想做的是有一个函数,它接受一个游戏板并返回一个包含所有行/列/对角线的列表列表。然后我想做,例如,match (rows,columns,diagonals) with (Empty, Empty, Empty, Empty) -> something
。