我對OCaml相當陌生,我想實現類似於四線遊戲的遊戲。 我需要的是一些數據結構來保持遊戲狀態。遊戲板是一個4×4的廣場,總共有16塊瓷磚。 我正在尋找OCaml中的這種表示方法,它可以方便快捷地檢索(或者做一些操作)整個列,行或對角線上的所有元素。 我會在這個遊戲上做極限微型搜索,這就是爲什麼速度很重要。用於跟蹤OCaml中的遊戲板的數據結構
到目前爲止,我已經考慮了一維列表。列表的問題在於,很難確定哪些元素屬於每行/每列/對角線,然後使用例如List.map
來檢索它們。
我想過使用Array.make 4 (Array.make 4 Empty);;
。當涉及到行時,這絕對是完美的。它很容易得到它們並在其上進行模式匹配。但在單獨的列和對角線上進行模式匹配是一件苦差事。
我希望能夠做的是有一個函數,需要一個遊戲板並返回包含所有行/列/對角線的列表列表。然後我想要做,例如,match (rows,columns,diagonals) with (Empty, Empty, Empty, Empty) -> something
。
你要高雅或原始速度?如果是原始速度,在我看來你的整個遊戲棋盤都適合32位。但如果你想學習OCaml,優雅可能會更好。處理位在每種語言中看起來都很相似 –