|
|
- {-# LANGUAGE DeriveGeneric #-}
- module Main where
-
- import GHC.Generics
- import Data.Aeson
- import Data.Aeson.Types
-
- import System.Environment
- import qualified Data.ByteString.Lazy.Char8 as BS
- import System.IO
- import Datatypes
- import Opt
- import JSONDeser
- import Strategy0
- import VM (Command, cmdToString)
-
- data JSONSer = JSONSer { problemId :: Int,
- seed :: Int,
- tag :: String,
- solution :: String
- } deriving (Show, Generic)
-
- instance FromJSON JSONSer
- instance ToJSON JSONSer
-
- main :: IO ()
- main = do args <- getArgs
- opt <- parseArgs args
- file <- return ((optFile opt) !! 0)
- str <- BS.readFile file
- (id, gmseed) <- return (readInput str)
- commandspoints <- return (map (\(seed,game) -> strat0 game) gmseed)
- (commands,points) <- return $ unzip commandspoints
- seeds <- return ((map (\(seed, _) -> seed)) gmseed)
- writeFile ("scores") (scoredata id (fst $ unzip gmseed) points)
- BS.putStrLn $ encode $ (packAll id seeds commands)
-
- packAll :: Int -> [Int] -> [[Command]] -> [JSONSer]
- packAll id seeds commandLists = zipWith (\x y -> JSONSer id x "lilik0" y) seeds commandStrings
- where
- commandStrings = map cmdToString commandLists
-
- scoredata :: Int -> [Int] -> [Int] -> String
- scoredata id seeds points = pretty
- where
- pretty = foldl (\x (a,b,c) -> (show a) ++ " " ++ (show b) ++ (show c) ++ "\n" ++ x) "" zipdata
- zipdata = zip3 ids seeds points
- ids = replicate (length seeds) id
-
|