From 6b27128f6836e292c513c1998e15d39fa9c939ae Mon Sep 17 00:00:00 2001 From: Flavio Poletti Date: Sun, 23 May 2021 20:31:27 +0200 Subject: Add polettix's solutions for Raku --- challenge-113/polettix/raku/ch-1.raku | 16 +++++++++++++ challenge-113/polettix/raku/ch-2.raku | 45 +++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+) create mode 100644 challenge-113/polettix/raku/ch-1.raku create mode 100644 challenge-113/polettix/raku/ch-2.raku diff --git a/challenge-113/polettix/raku/ch-1.raku b/challenge-113/polettix/raku/ch-1.raku new file mode 100644 index 0000000000..7f0591c401 --- /dev/null +++ b/challenge-113/polettix/raku/ch-1.raku @@ -0,0 +1,16 @@ +#!/usr/bin/env raku +use v6; + +sub represent-integer (Int $n is copy, Int $d) { + return 0 if $n < $d; + return 1 if $n >= 10 * $d; + return 1 if $n ~~ m{$d}; + $n -= $d; + while $n > 0 { + return 1 if represent-integer($n, $d); + $n -= 10; + } + return 0; +} + +sub MAIN ($N = 25, $D = 7) { represent-integer($N, $D).say } diff --git a/challenge-113/polettix/raku/ch-2.raku b/challenge-113/polettix/raku/ch-2.raku new file mode 100644 index 0000000000..7b51166551 --- /dev/null +++ b/challenge-113/polettix/raku/ch-2.raku @@ -0,0 +1,45 @@ +#!/usr/bin/env raku +use v6; + +sub recreate-binary-tree ($tree is rw) { + my $sum = 0; + sub accumulate ($n) { $sum += $n }; + sub update ($n) { $n = $sum - $n }; + for &accumulate, &update -> $cb { + my @queue = $tree,; + while (@queue) { + my $node = @queue.shift // next; + $cb($node); + next unless $node:exists; + @queue.push($node.Slip); + } + } + return $tree; +} + +sub node ($value is copy, $left = Nil, $right = Nil) { + my $pleft = $left.gist; + my $pright = $right.gist; + my $retval = { value => $value }; + $retval = $left.defined || $right.defined + ?? ($left, $right) !! (); + return $retval; +} + +sub printout ($root, $indent = 0) { + my $value = $root.defined ?? $root !! ''; + say ' ' x $indent, "<$value>"; + return unless $root; + printout($_, $indent + 1) for $root.all; +} + +# 1 +# / \ +# 2 3 +# / / \ +# 4 5 6 +# \ +# 7 +my $T = + node(1, node(2, node(4, Nil, node(7))), node(3, node(5), node(6))); +printout(recreate-binary-tree($T)); -- cgit