Submission #2242873
Source Code Expand
import System.Environment import Data.Maybe import Data.List import Control.Exception main :: IO () main = do isTest <- getEnv "TEST" `catch` (\(SomeException _) -> return "") if isTest == "1" then do testFile <- readFile "tests" putStrLn $ tests testFile else do input <- getContents putStrLn $ trim (solve (trim input)) --処理 solve :: String -> String solve [x, _, y] | x > y = ">" | x < y = "<" | x == y = "=" tests :: String -> String tests text = case testParse text of Right bodys -> unlines (fmap (\(i, body) -> test i body) (zip [1 ..] bodys)) Left msg -> "Test file parse error:" ++ msg test :: Int -> (String, String) -> String test n (input, outputRight) | output == outputRight = header ++ "Passed" | otherwise = header ++ "Faild\n" ++ "Right:" ++ show outputRight ++ "\nOutput:" ++ show output where header = "test" ++ show n ++ ":" output = trim $ solve input testParse :: String -> Either String [(String, String)] testParse s = case lines s of (sp1:sp2:bodys) -> testBodysParse sp1 sp2 bodys _ -> Left "testParse" testBodysParse :: String -> String -> [String] -> Either String [(String, String)] testBodysParse sp1 sp2 = (traverse . testBodyParse) sp2 . (split sp1) testBodyParse :: String -> [String] -> Either String (String, String) testBodyParse sp body = case fmap (trim . unlines) (split sp body) of [input, output] -> Right (input, output) _ -> Left "testBodyParse" split :: Eq a => a -> [a] -> [[a]] split spratar = foldr f [[]] where f x (p:ps) | x == spratar = [] : p : ps | otherwise = (x : p) : ps f _ _ = undefined trimHead :: String -> String trimHead = dropWhile (\s -> isJust (elemIndex s [' ', '\t', '\n', '\r'])) trim :: String -> String trim = reverse . trimHead . reverse . trimHead
Submission Info
Submission Time | |
---|---|
Task | A - HEX |
User | kgtkr |
Language | Haskell (GHC 7.10.3) |
Score | 100 |
Code Size | 1968 Byte |
Status | AC |
Exec Time | 1 ms |
Memory | 380 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 100 / 100 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | example_0, example_1, example_2 |
All | example_0, example_1, example_2, rand_0, rand_1, rand_2, rand_3, rand_4, rand_5, rand_6, rand_7, rand_8 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
example_0 | AC | 1 ms | 380 KB |
example_1 | AC | 1 ms | 380 KB |
example_2 | AC | 1 ms | 380 KB |
rand_0 | AC | 1 ms | 380 KB |
rand_1 | AC | 1 ms | 380 KB |
rand_2 | AC | 1 ms | 380 KB |
rand_3 | AC | 1 ms | 380 KB |
rand_4 | AC | 1 ms | 380 KB |
rand_5 | AC | 1 ms | 380 KB |
rand_6 | AC | 1 ms | 380 KB |
rand_7 | AC | 1 ms | 380 KB |
rand_8 | AC | 1 ms | 380 KB |