diff options
| -rw-r--r-- | challenge-056/mark-anderson/perl/ch-2.pl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/challenge-056/mark-anderson/perl/ch-2.pl b/challenge-056/mark-anderson/perl/ch-2.pl new file mode 100644 index 0000000000..ac414bb808 --- /dev/null +++ b/challenge-056/mark-anderson/perl/ch-2.pl @@ -0,0 +1,23 @@ +#!/usr/bin/env perl +use Modern::Perl; +use List::Util 'sum'; +use Tree::DAG_Node; + +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 { + my($node, $options) = @_; + + unless ($node->daughters) { + my @nodes = reverse ($node->name, (map { $_->name } $node->ancestors)); + say join(" + ", @nodes), " == 22" if (sum @nodes) == 22; + } + + return 1; +} |
