{-# LANGUAGE DeriveGeneric #-} module Main where import GHC.Generics import Data.Aeson import Data.Aeson.Types import Data.Maybe import System.Environment import qualified Data.ByteString.Lazy.Char8 as BS import System.IO import qualified Datatypes as DT import qualified VM import Opt import JSONDeser import SinglePasses import PowerPhrases main :: IO () main = do args <- getArgs opt <- parseArgs args filename <- return ((optFile opt) !! 0) file <- BS.readFile filename phrase <- return (fromJust $ optPowerPhrase opt) seedn <- return $ optSeedNumber opt (id, seedgame) <- return $ readInput file (seed,game) <- return $ unzip seedgame outputs <- return $ passes $ propagateCommand (game !! seedn) phrase BS.putStrLn $ encode outputs propagateCommand :: DT.Game -> String -> [(DT.Game, VM.Notes)] propagateCommand game str = (game,VM.OK):(propagateCommand0 game str) where propagateCommand0 game0 [] = [] propagateCommand0 game0 (c:cs) = res1:(propagateCommand0 game1 cs) where res1@(game1,note1) = VM.step game0 (fromJust $ charToCommand c)