aboutsummaryrefslogtreecommitdiff
path: root/challenge-056/mark-anderson/perl/ch-2.pl
blob: 4045c7dae72d49f745290b6729c7d0888087e4d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env perl
use Modern::Perl;
use List::Util qw/sum/;
use Tree::DAG_Node;
use feature qw/signatures/;
no warnings qw/experimental::signatures/;

my $lol = [ [ [ [7], [2], 11 ], 4 ], [ [13], [ [1], 9 ], 8 ], 5 ];

my $tree = Tree::DAG_Node->lol_to_tree($lol);

$tree->walk_down({callback => \&traverse});

say for $tree->draw_ascii_tree->@*;

sub traverse($node, $options) {
    unless ($node->daughters) {
        my @nodes = reverse ($node->name, (map { $_->name } $node->ancestors));
        say join(" + ", @nodes), " == 22" if (sum @nodes) == 22;
    }
 
    return 1; 
}