Advertisement
Guest User

Untitled

a guest
May 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.69 KB | None | 0 0
  1. module PlayAsWhite where
  2.  
  3. import State
  4.  
  5. import Data.Tree (Tree, unfoldTree, flatten)
  6. import Move
  7. import Data.Function (on)
  8. import Data.List (sortBy)
  9.  
  10. -- import Data.List
  11. -- import Debug.Trace (trace)
  12. makeMove :: State -> Lookahead -> Moves
  13. makeMove (State s b t m w b2 w1 b1) l = (greedyBot (legalMovesTree (State s b t m w b2 w1 b1)))
  14.  
  15.  
  16.  
  17. -- 2 -> legalMoves (State s b t m w b2 w1 b1)
  18. -- 4 -> legalMoves (State s b t m w b2 w1 b1) ++ legalMoves (State s b t m w b2 w1 b1)
  19.  
  20. -- ((firstMove s)) ++ (secondMove(performSingleMove s (firstMove s) ))
  21. -- where
  22. -- firstMove :: State -> Move
  23. -- firstMove s = case (legalMoves s) of
  24. -- x: xs -> [x]
  25. -- x -> [x]
  26. --
  27. -- secondMove :: State -> Move
  28. -- secondMove s = case (legalMoves s) of
  29. -- x: xs -> [x]
  30. -- x -> [x]
  31.  
  32.  
  33. -- | primesUnder (l * l) < 0 = []
  34. -- | otherwise =
  35. -- concat $ replicate 4 $ reverse [(x, y) | x <- [0 .. 24], y <- [1 .. 6]]
  36.  
  37. legalMoveBot :: State -> Moves
  38. legalMoveBot s = case (legalMoves s) of
  39. [] -> []
  40. x:xs -> x : legalMoveBot (performSingleMove s (x))
  41.  
  42. greedyBot :: Tree (State, Move) -> [(State, Move)]
  43. greedyBot treeOfLegalOptions = lowestState (flatten treeOfLegalOptions)
  44.  
  45. differenceInPips :: (State , Move) -> Int
  46. differenceInPips ((State s b t m wP bP wS bS), move) = abs (wP - bP)
  47.  
  48. lowestState :: [(State, Move)] -> [(State, Move)]
  49. lowestState listOfLegalStates = sortBy (compare `on` differenceInPips) listOfLegalStates
  50.  
  51.  
  52. primesUnder :: Int -> Int
  53. primesUnder n = length $ filterPrime [2 .. n]
  54. where
  55. filterPrime [] = []
  56. filterPrime (p:xs) = p : filterPrime [x | x <- xs, x `mod` p /= 0]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement