|
|
- module Strategy2 where
-
- import Datatypes
- import Test.QuickCheck (generate, elements)
- import VM
- import System.Random
-
- pick :: Int -> [a] -> a
- pick n vector = vector !! (n `mod` (length vector))
-
- strat2 :: Game -> ([Command],Int)
- strat2 game = if new_notes == GameOver
- then (new_command : [], score new_game)
- else (new_command : (fst $ strat2 new_game), snd $ strat2 new_game)
- where
- commands = [MoveSE, MoveSW, MoveE, MoveW, RotateClockwise, RotateCounterclockwise]
- new_games = map (\cmd -> (step game cmd, cmd)) commands
- ok_games = filter (is_ok.snd.fst) new_games
- where is_ok (OK) = True
- is_ok _ = False
-
- locked_games = filter (is_locked.snd.fst) new_games
- where is_locked (Lock _) = True
- is_locked _ = False
- over_games = filter (is_over.snd.fst) new_games
- where is_over (GameOver) = True
- is_over _ = False
-
- ((new_game,new_notes),new_command) = if (length ok_games) > 0
- then pick 741 ok_games
- else if (length locked_games) > 0
- then pick 568 locked_games
- else pick 412 over_games
-
-
|