aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad S Anwar <mohammad.anwar@yahoo.com>2021-10-27 14:06:56 +0100
committerMohammad S Anwar <mohammad.anwar@yahoo.com>2021-10-27 14:06:56 +0100
commit25db027e9aedfb5562c848c692c8b79200cb94e4 (patch)
treeb8ab5b39ed2fa23aed2aa4241de9483a22f951b4
parentc37cbaffe8969079d1ed5c5fe0b0c94f8ef9f080 (diff)
downloadperlweeklychallenge-club-25db027e9aedfb5562c848c692c8b79200cb94e4.tar.gz
perlweeklychallenge-club-25db027e9aedfb5562c848c692c8b79200cb94e4.tar.bz2
perlweeklychallenge-club-25db027e9aedfb5562c848c692c8b79200cb94e4.zip
- Added Python solution to "Fibonacci Sequence" task of week 136.
-rw-r--r--challenge-136/mohammad-anwar/python/ch-2.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/challenge-136/mohammad-anwar/python/ch-2.py b/challenge-136/mohammad-anwar/python/ch-2.py
new file mode 100644
index 0000000000..046d88ed53
--- /dev/null
+++ b/challenge-136/mohammad-anwar/python/ch-2.py
@@ -0,0 +1,63 @@
+#!/usr/bin/python3
+
+'''
+
+Week 136:
+
+ https://theweeklychallenge.org/blog/perl-weekly-challenge-136
+
+Task #2: Fibonacci Sequence
+
+ You are given a positive number $n.
+
+ Write a script to find how many different sequences you can create using Fibonacci numbers where the sum of unique numbers in each sequence are the same as the given number.
+
+'''
+
+import sys
+import unittest
+from itertools import combinations
+
+#
+#
+# This is translated from my Perl solution for the same task:
+#
+# https://github.com/manwar/perlweeklychallenge-club/blob/master/challenge-136/mohammad-anwar/perl/ch-2.pl
+
+def fibonacci_series_upto(_sum):
+ fibonacci_series = [1, 2]
+ while fibonacci_series[-1] + fibonacci_series[-2] <= _sum:
+ fibonacci_series.append(fibonacci_series[-1] + fibonacci_series[-2])
+
+ return fibonacci_series
+
+def fibonacci_sequence(_sum):
+ fibonacci_series = fibonacci_series_upto(_sum)
+ fibonacci_sum = []
+
+ for i in range(1, _sum):
+ if i > len(fibonacci_series):
+ break
+
+ for comb in combinations(fibonacci_series, i):
+ if sum(comb) == _sum:
+ fibonacci_sum.append(comb)
+
+ return len(fibonacci_sum)
+
+#
+#
+# Unit test class
+
+class TestFibonacciSequence(unittest.TestCase):
+
+ def test_example_1(self):
+ self.assertEqual(fibonacci_sequence(16), 4, 'Example 1')
+
+ def test_example_2(self):
+ self.assertEqual(fibonacci_sequence(9), 2, 'Example 2')
+
+ def test_example_3(self):
+ self.assertEqual(fibonacci_sequence(15), 2, 'Example 3')
+
+unittest.main()