aboutsummaryrefslogtreecommitdiff
path: root/challenge-077
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-08 03:22:10 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2020-09-08 03:22:10 +0100
commit41baccbf1440fcd9cd88abc370bec2cb462ae278 (patch)
treeeced56fadfc8cadb53d29476dc08dfc4a6767e68 /challenge-077
parent1fa8221462a52d748a8ec44461e4e8a5ba0ef431 (diff)
downloadperlweeklychallenge-club-41baccbf1440fcd9cd88abc370bec2cb462ae278.tar.gz
perlweeklychallenge-club-41baccbf1440fcd9cd88abc370bec2cb462ae278.tar.bz2
perlweeklychallenge-club-41baccbf1440fcd9cd88abc370bec2cb462ae278.zip
- Raku solution to "Fibonacci Sum" task of week #077.
Diffstat (limited to 'challenge-077')
-rw-r--r--challenge-077/mohammad-anwar/raku/ch-1.raku44
-rw-r--r--challenge-077/mohammad-anwar/raku/ch-1.t45
2 files changed, 89 insertions, 0 deletions
diff --git a/challenge-077/mohammad-anwar/raku/ch-1.raku b/challenge-077/mohammad-anwar/raku/ch-1.raku
new file mode 100644
index 0000000000..b2e6783c94
--- /dev/null
+++ b/challenge-077/mohammad-anwar/raku/ch-1.raku
@@ -0,0 +1,44 @@
+#!/usr/bin/env raku
+
+#
+# Perl Weekly Challenge - 077
+#
+# Task #1: Fibonacci Sum
+#
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-077
+#
+
+use v6.d;
+
+sub MAIN(Int :$N where $N > 0) {
+ fibonacci-sum($N).join("\n").say;
+}
+
+#
+#
+# METHODS
+
+sub fibonacci-sum(Int $sum where $sum > 0) {
+
+ my @fibonacci = fibonacci-series-upto($sum);
+ my @fibonacci_sum = Empty;
+ for 1 .. $sum -> $i {
+ last if $i > @fibonacci.elems;
+ for @fibonacci.combinations: $i -> $comb {
+ my $_sum = [+] $comb;
+ @fibonacci_sum.push: $comb if $_sum == $sum;
+ }
+ }
+
+ return |@fibonacci_sum;
+}
+
+sub fibonacci-series-upto(Int $num where $num > 0) {
+
+ my @fibonacci = (1, 2);
+ while @fibonacci.[*-1] + @fibonacci.[*-2] <= $num {
+ @fibonacci.push: @fibonacci.[*-1] + @fibonacci.[*-2];
+ }
+
+ return @fibonacci;
+}
diff --git a/challenge-077/mohammad-anwar/raku/ch-1.t b/challenge-077/mohammad-anwar/raku/ch-1.t
new file mode 100644
index 0000000000..2bf6f7d292
--- /dev/null
+++ b/challenge-077/mohammad-anwar/raku/ch-1.t
@@ -0,0 +1,45 @@
+#!/usr/bin/env raku
+
+#
+# Perl Weekly Challenge - 077
+#
+# Task #1: Fibonacci Sum
+#
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-077
+#
+
+use Test;
+
+is-deeply fibonacci-sum(6), ((1,5), (1,2,3)), "fibonacci sum = 6";
+is-deeply fibonacci-sum(9), ((1,8), (1,3,5)), "fibonacci sum = 9";
+
+done-testing;
+
+#
+#
+# METHODS
+
+sub fibonacci-sum(Int $sum where $sum > 0) {
+
+ my @fibonacci = fibonacci-series-upto($sum);
+ my @fibonacci_sum = Empty;
+ for 1 .. $sum -> $i {
+ last if $i > @fibonacci.elems;
+ for @fibonacci.combinations: $i -> $comb {
+ my $_sum = [+] $comb;
+ @fibonacci_sum.push: $comb if $_sum == $sum;
+ }
+ }
+
+ return |@fibonacci_sum;
+}
+
+sub fibonacci-series-upto(Int $num where $num > 0) {
+
+ my @fibonacci = (1, 2);
+ while @fibonacci.[*-1] + @fibonacci.[*-2] <= $num {
+ @fibonacci.push: @fibonacci.[*-1] + @fibonacci.[*-2];
+ }
+
+ return @fibonacci;
+}