Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import System.Environment (getArgs)
- import Data.List (intersperse)
- gray :: Int -> [[Bool]]
- gray 0 = []
- gray 1 = pure <$> [True, False]
- gray n | n > 0 = ((True :) <$> g) ++ ((False :) <$> reverse g)
- where g = gray $ pred n
- getInts :: IO [Int]
- getInts = getArgs >>= mapM readIO
- printBits :: [Bool] -> IO ()
- printBits = putStrLn . map (\x -> if x then '0' else '1')
- printGray :: Int -> IO ()
- printGray = sequence_ . map printBits . gray
- printGrays :: [Int] -> IO ()
- printGrays = sequence_ . intersperse (putStrLn "") . map printGray
- main :: IO ()
- main = getInts >>= printGrays
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement