List rooted trees: Difference between revisions
m
→{{header|Haskell}}: Simplified the Data.Tree version a little
m (→{{header|Haskell}}: Data.Tree variant – tidying.) |
m (→{{header|Haskell}}: Simplified the Data.Tree version a little) |
||
Line 562:
A variant expressed in terms of Data.Tree
<lang haskell>import Data.List (foldl', nub,
import Data.Ord (comparing)
import Data.Tree (Tree (..), foldTree)
Line 571:
bagPatterns n =
nub $
foldTree▼
(\_ xs -> '(' : (concat xs <> ")"))▼
. foldTree
. treeFromParentIndices
<$> parentIndexPermutations n
Line 581 ⟶ 584:
----------------------- DEFINITIONS ----------------------
▲ in Node
▲ (succ $ foldr ((+) . rootLabel) 0 xs)
▲ foldTree
▲ (\_ xs -> '(' : (concat xs <> ")"))
parentIndexPermutations :: Int -> [[Int]]
Line 621 ⟶ 608:
{{Out}}
<pre>(()()()())
((())(()))
(()((())
((()()()))
(((()())))
((((()))))</pre>
|