From 6d634caf5c73be5aa96578ce440aa45dafaaab9c Mon Sep 17 00:00:00 2001 From: wambash Date: Tue, 8 Sep 2020 17:40:23 +0200 Subject: Solution challenge 077-1 --- challenge-077/wambash/raku/ch-1.raku | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100755 challenge-077/wambash/raku/ch-1.raku diff --git a/challenge-077/wambash/raku/ch-1.raku b/challenge-077/wambash/raku/ch-1.raku new file mode 100755 index 0000000000..0d3b0934b6 --- /dev/null +++ b/challenge-077/wambash/raku/ch-1.raku @@ -0,0 +1,38 @@ +#!/usr/bin/env raku + +constant @fib := 1,2 , * + * ... *; + +multi iter ( Capture $c ( :$sum, :@pos, :@used ) ) { + \( sum => $sum + @pos.head, pos => @pos.skip, used => (|@used, @pos.head) ), + \( |$c, pos => @pos.skip) +}; + +multi iter ( Seq(Any) $a ) { + $a.map: |*.&iter +} + + +sub fib-sum ( $sum ) { + state @fib-sum = \( :0sum, pos => @fib ), *.&iter.cache ... *; + my $stop-index = @fib.first: * > $sum, :k; + + @fib-sum + andthen .[$stop-index] + andthen .grep: { . == $sum } +} + +sub MAIN ( :$test!, :$log ) { + use Test; + + my $wi = &iter.wrap: { + say .," ",., " ",..cache.head when Capture; + callsame + } if $log; + + is-deeply fib-sum(9).map( *.), ((1,3,5),(1,8)),; + is-deeply fib-sum(6).map( *.), ((1,2,3),(1,5)),; + + $wi.restore if $log; + + done-testing() +} -- cgit From 5a0cd8b82adc82d7ea5c0c147772b7324986e115 Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 13 Sep 2020 09:15:14 +0200 Subject: solution week 077-1 --- challenge-077/wambash/raku/ch-1.raku | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/challenge-077/wambash/raku/ch-1.raku b/challenge-077/wambash/raku/ch-1.raku index 0d3b0934b6..49444f5912 100755 --- a/challenge-077/wambash/raku/ch-1.raku +++ b/challenge-077/wambash/raku/ch-1.raku @@ -1,19 +1,20 @@ #!/usr/bin/env raku -constant @fib := 1,2 , * + * ... *; +constant @fib := 1, 2, * + * ... *; multi iter ( Capture $c ( :$sum, :@pos, :@used ) ) { \( sum => $sum + @pos.head, pos => @pos.skip, used => (|@used, @pos.head) ), - \( |$c, pos => @pos.skip) + \( |$c, pos => @pos.skip) }; -multi iter ( Seq(Any) $a ) { +multi next-level ( List $a ) { $a.map: |*.&iter } +constant @fib-sum := (\( :0sum, pos => @fib ),), *.&next-level.cache ... *; + sub fib-sum ( $sum ) { - state @fib-sum = \( :0sum, pos => @fib ), *.&iter.cache ... *; my $stop-index = @fib.first: * > $sum, :k; @fib-sum @@ -25,7 +26,7 @@ sub MAIN ( :$test!, :$log ) { use Test; my $wi = &iter.wrap: { - say .," ",., " ",..cache.head when Capture; + say ., " ", ., " ", ..cache.head; callsame } if $log; -- cgit From ef95b38fe3ad41d3256aad6026cd00445b8287aa Mon Sep 17 00:00:00 2001 From: Jan Krňávek Date: Sun, 13 Sep 2020 09:15:14 +0200 Subject: solution week 077-1 --- challenge-077/wambash/raku/ch-1.raku | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/challenge-077/wambash/raku/ch-1.raku b/challenge-077/wambash/raku/ch-1.raku index 0d3b0934b6..49444f5912 100755 --- a/challenge-077/wambash/raku/ch-1.raku +++ b/challenge-077/wambash/raku/ch-1.raku @@ -1,19 +1,20 @@ #!/usr/bin/env raku -constant @fib := 1,2 , * + * ... *; +constant @fib := 1, 2, * + * ... *; multi iter ( Capture $c ( :$sum, :@pos, :@used ) ) { \( sum => $sum + @pos.head, pos => @pos.skip, used => (|@used, @pos.head) ), - \( |$c, pos => @pos.skip) + \( |$c, pos => @pos.skip) }; -multi iter ( Seq(Any) $a ) { +multi next-level ( List $a ) { $a.map: |*.&iter } +constant @fib-sum := (\( :0sum, pos => @fib ),), *.&next-level.cache ... *; + sub fib-sum ( $sum ) { - state @fib-sum = \( :0sum, pos => @fib ), *.&iter.cache ... *; my $stop-index = @fib.first: * > $sum, :k; @fib-sum @@ -25,7 +26,7 @@ sub MAIN ( :$test!, :$log ) { use Test; my $wi = &iter.wrap: { - say .," ",., " ",..cache.head when Capture; + say ., " ", ., " ", ..cache.head; callsame } if $log; -- cgit