Submission #8877978


Source Code Expand

import Data.List

main :: IO ()
main = do
  [h,w] <- map read . words <$> getLine :: IO [Int]
  l <- lines <$> getContents 
  let bs = concat $ map (\g -> boms (fst g) (snd g)) $ zip [1..h] l 
  let grid =  [((i,j),v) | i <- [1..h], j <- [1..w], let v = (l !! (i-1)) !! (j-1)]
  putStr $ split (makeLine grid bs)  w
 
boms :: Int -> String -> [(Int, Int)]
boms h l = map (\i -> (h,i+1)) $ elemIndices '#' l

around :: (Int, Int) -> [(Int,Int)]
around (i,j) = [(i-1,j-1), (i-1,j), (i-1,j+1), (i,j-1), (i,j+1), (i+1,j-1), (i+1,j), (i+1,j+1)]

makeLine :: [((Int,Int),Char)] -> [(Int,Int)]-> String
makeLine [] _ = ""
makeLine (x:xs) bs
  |snd x == '#'= ['#'] ++ (makeLine xs bs)
  |otherwise =
    let number = length $ filter (`elem` bs) $ around (fst x) 
      in show number ++ makeLine xs bs

  
split :: String -> Int -> String
split "" _ = ""
split xs w = take w xs ++ "\n" ++ split (drop w xs) w

Submission Info

Submission Time
Task B - Minesweeper
User cashitsuki
Language Haskell (GHC 7.10.3)
Score 200
Code Size 927 Byte
Status AC
Exec Time 162 ms
Memory 1276 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 200 / 200
Status
AC × 3
AC × 15
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask_1_1.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_2.txt, subtask_1_3.txt, subtask_1_4.txt, subtask_1_5.txt, subtask_1_6.txt, subtask_1_7.txt, subtask_1_8.txt, subtask_1_9.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 508 KB
sample_02.txt AC 1 ms 508 KB
sample_03.txt AC 2 ms 508 KB
subtask_1_1.txt AC 162 ms 1276 KB
subtask_1_10.txt AC 3 ms 1020 KB
subtask_1_11.txt AC 2 ms 1020 KB
subtask_1_12.txt AC 1 ms 508 KB
subtask_1_2.txt AC 1 ms 508 KB
subtask_1_3.txt AC 27 ms 1020 KB
subtask_1_4.txt AC 2 ms 508 KB
subtask_1_5.txt AC 2 ms 508 KB
subtask_1_6.txt AC 2 ms 508 KB
subtask_1_7.txt AC 2 ms 508 KB
subtask_1_8.txt AC 9 ms 892 KB
subtask_1_9.txt AC 1 ms 508 KB