Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
pp:l09 [2020/04/25 19:25] pdmatei |
pp:l09 [2020/04/25 19:31] (current) pdmatei |
||
---|---|---|---|
Line 76: | Line 76: | ||
</code> | </code> | ||
- | 11. Define a function which computes, for a given position, the list of valid //next positions// (a valid position is one that is on the map, and it is not a //wall//, i.e. a ''#''). | + | 11. Define a function which computes, for a given position, the list of valid //next positions// (a valid position is one that is on the map, and it is not a //wall//, i.e. a ''#''). Hint, use the list ''[(x-1,y-1),(x-1,y),(x-1,y+1),(x,y-1),(x,y+1),(x+1,y-1),(x+1,y),(x+1,y+1)]''. |
+ | |||
+ | 12. Implement the type ''Tree a'' of trees with arbitrary number of children nodes. | ||
+ | |||
+ | 13. Enrol ''Tree'' in class ''Functor'' (see classes), and define the function ''fmap''. | ||
+ | |||
+ | 14. Write a function which takes a (possibly infinite) tree and returns the sub-tree where each branch is of length at most ''k'': | ||
+ | <code haskell> | ||
+ | take_t :: Integer -> Tree a -> Tree a | ||
+ | </code> | ||
+ | |||
+ | 15. Implement the infinite tree of valid positions, starting from an initial one. In this tree, paths represent trails exploring the map. | ||
+ | <code haskell> | ||
+ | make_st_tree :: Map -> State -> Tree State | ||
+ | </code> | ||
+ | 16. Implement the function ''toMap'' which //draws// a position on the map (using the character ''.''). | ||
+ | <code haskell> | ||
+ | toMap :: State -> Map -> Map | ||
+ | </code> | ||
+ | |||
+ | 17. Implement the tree of possible //trails// through the map: | ||
+ | <code haskell> | ||
+ | make_map_tree :: Map -> State -> Tree Map | ||
+ | </code> |