私はOCamlにかなり慣れていないので、フォーインアラインに似たゲームを実装したいと思っています。私が必要としているのは、ゲームの状態を維持するためのデータ構造です。ゲームボードは4x4の正方形で、合計16個のタイルがあります。私は、列全体、行、または対角線のすべての要素を簡単かつ迅速に取得(または何らかの操作を実行)できるようにするOCamlでのこの表現を探しています。このゲームでミニマックス検索を行うので、速度が重要です。
これまで、1次元のリストについて検討してきました。リストの問題は、どの要素が各行/列/対角線に属しているかを把握し、List.map
たとえばでそれらを取得するのが難しいことです。
I thought about using Array.make 4 (Array.make 4 Empty);;
. This is absolutely perfect when it comes to rows. Its easy to get them and do a pattern match on it. But it is a chore to do pattern matching on individual columns and diagonals.
What I would like to be able to do is have a function that takes a game board and returns a list of lists containing all the rows/columns/diagonals. I would then like to do, for example, match (rows,columns,diagonals) with (Empty, Empty, Empty, Empty) -> something
.