Create a gist now

Instantly share code, notes, and snippets.

@yaf /MasterMind.hs
Last active Dec 29, 2015

What would you like to do?
import Test.HUnit
main = do runTestTT $ TestList [
juge [Rouge, Vert, Orange, Bleu] [Rouge, Vert, Orange, Bleu] ~?= End True
,juge [Rouge, Vert, Orange, Bleu] [Jaune, Vert, Jaune, Jaune] ~?= Retry (BienPlacé 1, MalPlacé 0)
,juge [Rouge, Vert, Orange, Bleu] [Jaune, Vert, Orange, Jaune] ~?= Retry (BienPlacé 2, MalPlacé 0)
,juge [Rouge, Vert, Orange, Bleu] [Vert, Jaune, Jaune, Jaune] ~?= Retry (BienPlacé 0, MalPlacé 1)
,juge [Rouge, Orange, Rouge, Rouge] [Orange, Orange, Orange, Orange] ~?= Retry (BienPlacé 1, MalPlacé 0)
data Couleur = Rouge | Vert | Orange | Bleu | Jaune
deriving (Eq)
data Resultat = End Bool | Retry (BienPlacé, MalPlacé)
deriving (Show, Eq)
data BienPlacé = BienPlacé Int
deriving (Show, Eq)
data MalPlacé = MalPlacé Int
deriving (Show, Eq)
type Secret = [Couleur]
type Proposition = [Couleur]
juge :: Secret -> Proposition -> Resultat
juge s p
| s == p = End True
| otherwise = Retry (BienPlacé bp, MalPlacé (min mp mp'))
compterLesTrue = length . filter (==True)
bp = compterLesTrue $ zipWith (==) s p
compterLesMalPlacé x y = (compterLesTrue $ map (`elem` x) y) - bp
mp = compterLesMalPlacé s p
mp' = compterLesMalPlacé p s

DjebbZ commented Nov 27, 2013

Je crois qu'il manque un autre fichier, celui où tu as juste fait run qqchoz, non ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment