aboutsummaryrefslogtreecommitdiff
path: root/challenge-077/paulo-custodio/python
diff options
context:
space:
mode:
authorPaulo Custodio <pauloscustodio@gmail.com>2021-12-09 15:45:06 +0000
committerPaulo Custodio <pauloscustodio@gmail.com>2021-12-09 15:45:06 +0000
commitca352d8cd7cca2853df072d214e0802aa1fd9fd9 (patch)
tree2a492c7f5d63b499cd653b37b90e7f886c998205 /challenge-077/paulo-custodio/python
parent4174c1724112a2200f3c5d001e9419fdffddafc8 (diff)
downloadperlweeklychallenge-club-ca352d8cd7cca2853df072d214e0802aa1fd9fd9.tar.gz
perlweeklychallenge-club-ca352d8cd7cca2853df072d214e0802aa1fd9fd9.tar.bz2
perlweeklychallenge-club-ca352d8cd7cca2853df072d214e0802aa1fd9fd9.zip
Add Python solution to challenge 77
Diffstat (limited to 'challenge-077/paulo-custodio/python')
-rw-r--r--challenge-077/paulo-custodio/python/ch-1.py51
-rw-r--r--challenge-077/paulo-custodio/python/ch-2.py58
2 files changed, 109 insertions, 0 deletions
diff --git a/challenge-077/paulo-custodio/python/ch-1.py b/challenge-077/paulo-custodio/python/ch-1.py
new file mode 100644
index 0000000000..92fcacda04
--- /dev/null
+++ b/challenge-077/paulo-custodio/python/ch-1.py
@@ -0,0 +1,51 @@
+#!/usr/bin/python3
+
+# Challenge 077
+#
+# TASK #1 > Fibonacci Sum
+# Submitted by: Mohammad S Anwar
+# You are given a positive integer $N.
+#
+# UPDATE: 2020-09-07 09:00:00
+# Write a script to find out all possible combination of Fibonacci Numbers
+# required to get $N on addition.
+#
+# You are NOT allowed to repeat a number. Print 0 if none found.
+#
+# Example 1:
+# Input: $N = 6
+#
+# Output:
+# 1 + 2 + 3 = 6
+# 1 + 5 = 6
+# Example 2:
+# Input: $N = 9
+#
+# Output:
+# 1 + 8 = 9
+# 1 + 3 + 5 = 9
+
+import sys
+from itertools import combinations
+
+# compute list of Fibonacci numbers up to input
+fib = [0, 1]
+
+def compute_fib(target):
+ global fib
+ while fib[-1] < target:
+ fib.append(fib[-1]+fib[-2])
+
+N = int(sys.argv[1])
+compute_fib(N)
+
+# terms for addition are the Fibonacci numbers except the first two terms (0,1)
+terms = fib[2:]
+output = []
+for k in range(1, len(terms)+1):
+ for combin in combinations(terms, k):
+ if sum(combin)==N:
+ combin = sorted(list(combin))
+ output.append(" + ".join([str(x) for x in combin])+" = "+str(N))
+output.sort()
+print(*output,sep="\n")
diff --git a/challenge-077/paulo-custodio/python/ch-2.py b/challenge-077/paulo-custodio/python/ch-2.py
new file mode 100644
index 0000000000..eb485e1e70
--- /dev/null
+++ b/challenge-077/paulo-custodio/python/ch-2.py
@@ -0,0 +1,58 @@
+#!/usr/bin/python3
+
+# Challenge 077
+#
+# TASK #2 > Lonely X
+# Submitted by: Mohammad S Anwar
+# You are given m x n character matrix consists of O and X only.
+#
+# Write a script to count the total number of X surrounded by O only.
+# Print 0 if none found.
+#
+# Example 1:
+# Input: [ O O X ]
+# [ X O O ]
+# [ X O O ]
+#
+# Output: 1 as there is only one X at the first row last column surrounded by
+# only O.
+# Example 2:
+# Input: [ O O X O ]
+# [ X O O O ]
+# [ X O O X ]
+# [ O X O O ]
+#
+# Output: 2
+#
+# a) First X found at Row 1 Col 3.
+#
+# b) Second X found at Row 3 Col 4.
+
+import sys
+import fileinput
+
+def read_input():
+ lines = []
+ for line in fileinput.input():
+ lines.append(line)
+ return lines
+
+m = read_input()
+for i in range(len(m)):
+ m[i] = [x for x in m[i].rstrip("\n")]
+
+lonely = 0
+for row in range(len(m)):
+ for col in range(len(m[row])):
+ if m[row][col]=='X':
+ neigh = 0
+ for dr in range(-1,2):
+ for dc in range(-1,2):
+ if dr!=0 or dc!=0:
+ if row+dr>=0 and row+dr<len(m):
+ if col+dc>=0 and col+dc<len(m[row]):
+ if m[row+dr][col+dc]=='X':
+ neigh += 1
+ if neigh==0:
+ lonely += 1
+print(lonely)