diff options
| author | Paulo Custodio <pauloscustodio@gmail.com> | 2021-12-09 15:45:06 +0000 |
|---|---|---|
| committer | Paulo Custodio <pauloscustodio@gmail.com> | 2021-12-09 15:45:06 +0000 |
| commit | ca352d8cd7cca2853df072d214e0802aa1fd9fd9 (patch) | |
| tree | 2a492c7f5d63b499cd653b37b90e7f886c998205 /challenge-077/paulo-custodio/python | |
| parent | 4174c1724112a2200f3c5d001e9419fdffddafc8 (diff) | |
| download | perlweeklychallenge-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.py | 51 | ||||
| -rw-r--r-- | challenge-077/paulo-custodio/python/ch-2.py | 58 |
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) |
