diff options
| author | Mark Anderson <mark@frontrangerunner.com> | 2020-04-19 18:17:57 -0600 |
|---|---|---|
| committer | Mark Anderson <mark@frontrangerunner.com> | 2020-04-19 18:17:57 -0600 |
| commit | ddd09bb2eab9b82fad66a1df6d72d7385e897010 (patch) | |
| tree | a48b8c30d14ca54f7478164dc0745d033075f492 | |
| parent | 7c0d91eac24ee1f024fd63baa8d79f042621a7ee (diff) | |
| download | perlweeklychallenge-club-ddd09bb2eab9b82fad66a1df6d72d7385e897010.tar.gz perlweeklychallenge-club-ddd09bb2eab9b82fad66a1df6d72d7385e897010.tar.bz2 perlweeklychallenge-club-ddd09bb2eab9b82fad66a1df6d72d7385e897010.zip | |
ch-2.p6 again
| -rw-r--r-- | challenge-056/mark-anderson/raku/ch-2.p6 | 30 |
1 files changed, 10 insertions, 20 deletions
diff --git a/challenge-056/mark-anderson/raku/ch-2.p6 b/challenge-056/mark-anderson/raku/ch-2.p6 index b0859436e2..a8d76eed2e 100644 --- a/challenge-056/mark-anderson/raku/ch-2.p6 +++ b/challenge-056/mark-anderson/raku/ch-2.p6 @@ -1,41 +1,31 @@ #!/usr/bin/env raku class node { - has UInt $.value; - has node $.left is rw; - has node $.right is rw; - has node $.parent is rw; + has UInt $.value; + has Array $.parents is rw; + has node $.left is rw; + has node $.right is rw; } sub traverse($node) { + my @parents = [$node.value, |$node.parents]; + if $node.left { - $node.left.parent = $node; + $node.left.parents = @parents; traverse($node.left); } if $node.right { - $node.right.parent = $node; + $node.right.parents = @parents; traverse($node.right); } unless $node.left or $node.right { - sum_path($node); - } -} - -sub sum_path($node is copy) { - my @path; - - loop { - @path.push($node.value); - last unless $node.parent; - $node = $node.parent; + say @parents.reverse.join(" -> ") ~ " == 22" if @parents.sum == 22; } - - say @path.reverse.join(" -> ") ~ " == 22" if @path.sum == 22; } -my $root = node.new(value => 5, parent => Nil); +my $root = node.new(value => 5, parents => []); $root.left = node.new(value => 4); $root.right = node.new(value => 8); |
