【发布时间】:2020-02-27 12:40:03
【问题描述】:
我正在涉足一些 Haskell,但偶然发现了路上的颠簸
我想编写一个 AI 用来在简单棋盘游戏中选择行的函数。所述游戏中的棋盘由整数列表表示。像这样:
board = [1,2,3,4,5]
棋盘行中数字的索引 + 1 和Int 本身就是所述行中剩余的棋子数。我的目标是如何让这个函数工作,首先在列表中找到最大的数字,然后以IO Int 的形式返回这个数字的(索引+1)。
这是我苦苦挣扎的地方,因为我似乎无法在网上找到任何好的答案
这是我目前正在使用的:
-- Returns index of row with largest number along the number itself
aiHelper :: Board -> (Int, Int)
aiHelper xs = maximumBy (comparing fst) (zip xs [1..])
-- Returns row with largest number as IO Int
aiRow :: Board -> IO Int
aiRow xs = do
let y = snd $ aiHelper xs
return $ y
我不太确定这段代码是否符合我的要求,我的代码是否有更简单、更简洁的解决方案?
【问题讨论】: