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

{-# 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)