Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.10 KB | None | 0 0
  1. paint_interior_bricks :: [a] -> [[a]] -> [[a]]
  2. paint_interior_bricks _ [] = []
  3. paint_interior_bricks [] walls = walls
  4. paint_interior_bricks (colour:colours) (wall:walls) = [wall' | [wall', _] <- paint_wall (colour : colours) wall] ++ paint_interior_bricks colours' walls
  5. where colours' = [c | [_, cs] <- paint_wall (colour : colours) wall, c <- cs]
  6.  
  7. paint_wall :: [a] -> [a] -> [[a]]
  8. paint_wall colours [brick] = [[brick], colours]
  9. paint_wall colours (brick:brick':[]) = [brick : [brick'], colours]
  10. paint_wall colours (brick:bricks) = [brick : [bricks' | [bs, _] <- paint_bricks colours bricks, bricks' <- bs], [colours' | [_, cs] <- paint_bricks colours bricks, colours' <- cs]]
  11.  
  12. paint_bricks :: [a] -> [a] -> [[a]]
  13. paint_bricks colours [brick] = [[brick], colours]
  14. paint_bricks (colour:colours) (brick:bricks) = [colour : [bricks' | [bs, _] <- paint_bricks (colours ++ [colour]) bricks, bricks' <- bs], colours ++ [colour]]
  15.  
  16. main :: IO ()
  17. main = putStrLn (show (paint_interior_bricks colours walls))
  18. where colours = [0,1,2]
  19. 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