私はOCamlをかなり新しく使いました。私は4行に似たゲームを実装したいと思います。 私が必要とするのは、ゲームの状態を維持するためのデータ構造です。ゲームボードは、合計16タイルの4x4正方形です。 OCamlでこれを表現すると、列、行、または対角線全体のすべての要素を簡単かつ迅速に取得(または何らかの操作を行う)することができます。 私はこのゲームでミニマックス検索をしています。それがスピードが重要な理由です。OCamlでゲームボードを追跡するためのデータ構造
これまでのところ、私は1次元のリストを考えました。リストの問題は、どの要素が各行/列/対角線に属するのか把握するのが難しく、次にList.map
で検索することが難しいことです。
私はArray.make 4 (Array.make 4 Empty);;
を使用することを考えました。これは行になると絶対に完璧です。簡単にそれらを取得し、それにパターンマッチを行います。しかし、個々の列と対角線にパターンマッチングを行うのは雑用です。
私ができることを望むのは、ゲームボードを取り、すべての行/列/対角線を含むリストのリストを返す機能です。私は、例えば、match (rows,columns,diagonals) with (Empty, Empty, Empty, Empty) -> something
のようにしたいと思います。
あなたは優雅さや生のスピードのために行くされていますか?生の速度であれば、ゲームボード全体が32ビットに収まるように思えます。 OCamlを学びたいなら、優雅さはおそらくもっと良いでしょう。すべての言語で同様の扱いをします。 –