Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- paint_interior_bricks :: [a] -> [[a]] -> [[a]]
- paint_interior_bricks _ [] = []
- paint_interior_bricks [] walls = walls
- paint_interior_bricks (colour:colours) (wall:walls) = [wall' | [wall', _] <- paint_wall (colour : colours) wall] ++ paint_interior_bricks colours' walls
- where colours' = [c | [_, cs] <- paint_wall (colour : colours) wall, c <- cs]
- paint_wall :: [a] -> [a] -> [[a]]
- paint_wall colours [brick] = [[brick], colours]
- paint_wall colours (brick:brick':[]) = [brick : [brick'], colours]
- paint_wall colours (brick:bricks) = [brick : [bricks' | [bs, _] <- paint_bricks colours bricks, bricks' <- bs], [colours' | [_, cs] <- paint_bricks colours bricks, colours' <- cs]]
- paint_bricks :: [a] -> [a] -> [[a]]
- paint_bricks colours [brick] = [[brick], colours]
- paint_bricks (colour:colours) (brick:bricks) = [colour : [bricks' | [bs, _] <- paint_bricks (colours ++ [colour]) bricks, bricks' <- bs], colours ++ [colour]]
- main :: IO ()
- main = putStrLn (show (paint_interior_bricks colours walls))
- where colours = [0,1,2]
- walls = [[3],[3,3],[3,3,3],[3,3,3],[3,3,3,3,3],[3,3,3,3,3,3]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement