1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
my %tree =
5 => {
4 => {
11 => {
7 => Any,
2 => Any
},
},
8 => {
9 => {
1 => Any
},
7 => {
2 => Any
},
13 => Any,
}
};
.join('→').say
for find-path-sum( %tree, 22 );
multi sub find-path-sum( Hash:D $tree, Int $n )
{
multi sub find-path-sum( Hash:D $tree, Int $n, Array $path ) {
find-path-sum( $tree{ $_ }, $n - $_, $path.clone.push($_) )
for $tree.keys; }
multi sub find-path-sum( Any, Int $n, Array $path ) {
take $path if $n == 0; }
gather find-path-sum( $tree, $n, [] );
}
|