結果

問題 No.82 市松模様
ユーザー dsplit
提出日時 2019-08-14 17:19:14
言語 Haskell
(8.6.2)
結果
AC  
実行時間 3 ms
コード長 764 Byte
コンパイル時間 989 ms
使用メモリ 8,916 KB
最終ジャッジ日時 2019-08-14 17:19:16

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
sample1.txt AC 3 ms
6,868 KB
sample2.txt AC 2 ms
6,872 KB
sample3.txt AC 2 ms
6,868 KB
test1.txt AC 2 ms
6,868 KB
test2.txt AC 3 ms
6,868 KB
test3.txt AC 1 ms
6,872 KB
test4.txt AC 2 ms
6,872 KB
test5.txt AC 3 ms
8,916 KB
test6.txt AC 3 ms
6,868 KB
test7.txt AC 2 ms
6,872 KB
テストケース一括ダウンロード
コンパイルメッセージ
[1 of 1] Compiling Main             ( Main.hs, Main.o )

Main.hs:22:13: warning: [-Wtabs]
    Tab character found here, and in 7 further locations.
    Please use spaces instead.
   |
22 |                         then putStrLn $ intersperse (f c) $ replicate ((w + 1) `div` 2) (g c)
   |             ^^^^
Linking a.out ...

ソースコード

diff #
import Data.List
import Control.Monad

f :: String -> Char
f "W" = 'B'
f "B" = 'W'
f  _  = '@'

g :: String -> Char
g "W" = 'W'
g "B" = 'B'
g  _  = '@'

main :: IO ()
main = do
    [a, b, c] <- words <$> getLine
    let w = (read :: String -> Int) a
        h = (read :: String -> Int) b
    forM_ [1..h] $ \i -> do
        if i `mod` 2 == 1
            then if w `mod` 2 == 1 
            		then putStrLn $ intersperse (f c) $ replicate ((w + 1) `div` 2) (g c)
            		else putStrLn $ (intersperse (f c) $ replicate (w `div` 2) (g c)) ++ [f c]
            else if w `mod` 2 == 1
            		then putStrLn $ intersperse (g c) $ replicate ((w + 1) `div` 2) (f c)
            		else putStrLn $ (intersperse (g c) $ replicate ((w + 1) `div` 2) (f c)) ++ [g c]
0