You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.2 KiB

9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
  1. {-# LANGUAGE DeriveGeneric #-}
  2. module Main where
  3. import GHC.Generics
  4. import Data.Aeson
  5. import Data.Aeson.Types
  6. import Data.Maybe
  7. import System.Environment
  8. import qualified Data.ByteString.Lazy.Char8 as BS
  9. import System.IO
  10. import qualified Datatypes as DT
  11. import qualified VM
  12. import Opt
  13. import JSONDeser
  14. import SinglePasses
  15. import PowerPhrases
  16. main :: IO ()
  17. main = do args <- getArgs
  18. opt <- parseArgs args
  19. filename <- return ((optFile opt) !! 0)
  20. file <- BS.readFile filename
  21. phrase <- return (fromJust $ optPowerPhrase opt)
  22. seedn <- return $ optSeedNumber opt
  23. (id, seedgame) <- return $ readInput file
  24. (seed,game) <- return $ unzip seedgame
  25. outputs <- return $ passes $ propagateCommand (game !! seedn) phrase
  26. BS.putStrLn $ encode outputs
  27. propagateCommand :: DT.Game -> String -> [(DT.Game, VM.Notes)]
  28. propagateCommand game str = (game,VM.OK):(propagateCommand0 game str)
  29. where
  30. propagateCommand0 game0 [] = []
  31. propagateCommand0 game0 (c:cs) = res1:(propagateCommand0 game1 cs)
  32. where
  33. res1@(game1,note1) = VM.step game0 (fromJust $ charToCommand c)