diff options
| author | 冯昶 <seaker@qq.com> | 2020-09-07 18:36:14 +0800 |
|---|---|---|
| committer | 冯昶 <seaker@qq.com> | 2020-09-07 18:36:14 +0800 |
| commit | e72449873973888be9e9a55c8ad998367ad9e989 (patch) | |
| tree | 41eb3dbbbe693fee91aac0f20a851f4ee8b68ae6 | |
| parent | edf6471d905ff6305ff216d3dcdc5e598484aee6 (diff) | |
| download | perlweeklychallenge-club-e72449873973888be9e9a55c8ad998367ad9e989.tar.gz perlweeklychallenge-club-e72449873973888be9e9a55c8ad998367ad9e989.tar.bz2 perlweeklychallenge-club-e72449873973888be9e9a55c8ad998367ad9e989.zip | |
challenge 077, raku #1
| -rwxr-xr-x | challenge-077/feng-chang/raku/ch-1.raku | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/challenge-077/feng-chang/raku/ch-1.raku b/challenge-077/feng-chang/raku/ch-1.raku new file mode 100755 index 0000000000..18676223f9 --- /dev/null +++ b/challenge-077/feng-chang/raku/ch-1.raku @@ -0,0 +1,29 @@ +#!/bin/env raku + +my Bool $found = False; +my $Num; + +sub fib-sum(Int:D $N, @fibs, @num) { + if $N == 0 { + say "{ @num.join(' + ') } = $Num"; + $found = True; + return; + } + return unless @fibs; + return if $N < @fibs[0]; + + my @F = @fibs; + my @N = @num; + @N.push(@F.shift); + fib-sum($N - @fibs[0], @F, @N); + + fib-sum($N, @F, @num); +} + +sub MAIN(Int:D $N) { + my Int @fibs = 1, 2, * + * ...^ * > $N; + $Num = $N; + + fib-sum($N, @fibs, Array.new); + 0.say unless $found; +} |
