J'écris un solveur Haskell pour un simple jeu de société. J'ai cette fonction :
bestMove :: Board -> (Int,Int)
bestMove brd = minimumBy (comparing $ length.choices brd) (remaining brd)
Fondamentalement, le meilleur coup est celui qui laisse le plus petit nombre de choix parmi les autres coups. Je sais cependant qu'aucun élément ne laisse moins d'un choix. Comment puis-je écrire cette fonction pour terminer la recherche du minimum si un tel coup est trouvé ?
En d'autres termes, je veux une fonction qui renvoie le minimum ou le premier élément rencontré qui est suffisamment petit (sans traverser le reste de la liste).
C'est mon premier programme Haskell, il est donc probablement très basique. Il s'agit d'un solveur backtracking, il est donc important de ne pas parcourir toute la liste dans une fonction qui est appelée des millions de fois.