Я играю на каком-то Хаскеле и наткнулся на неровности дороги
Я хочу написать функцию, которую ИИ использует для выбора ряда в простой настольной игре. Доска в указанной игре представлена списком целых чисел. Например:
board = [1,2,3,4,5]
Индекс + 1 чисел в ряду на доске и сам Int
- это количество фигур, оставшихся в указанном ряду. Я стремлюсь заставить эту функцию работать, сначала найти наибольшее число в списке, а затем вернуть (индекс + 1) этого числа в виде IO Int
.
Вот где я изо всех сил, так как я не могу найти хорошего ответа на этот вопрос в Интернете
Это то, с чем я работаю до сих пор:
-- 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
Я не совсем уверен, что этот код выполняет то, что я ищу, и есть ли более простое и понятное решение для моего кода?