我正在为简单的棋盘游戏编写 Haskell 求解器。我有这个功能:
bestMove :: Board -> (Int,Int)
bestMove brd = minimumBy (comparing $ length.choices brd) (remaining brd)
基本上 bestMove 是一种在剩余移动中留下最少选择的移动。然而,我知道没有任何元素会留下少于一种选择。如果找到这样的移动,我该如何编写这个函数来终止搜索最小值?
换句话说,我想要一个返回最小或第一次遇到的元素的函数,该元素足够小(不遍历列表的其余部分)。
这是我的第一个 Haskell 程序,所以它可能非常基础。它是一个回溯求解器,因此不在一个被调用数百万次的函数中遍历整个列表很重要。