From da070373c4ff340135306b593a16d601daabc6ea Mon Sep 17 00:00:00 2001 From: Paulo Custodio Date: Wed, 3 Nov 2021 11:07:35 +0000 Subject: Add Python solution to challenge 116 --- challenge-116/paulo-custodio/python/ch-1.py | 52 +++++++++++++++++++++++++++++ challenge-116/paulo-custodio/python/ch-2.py | 37 ++++++++++++++++++++ 2 files changed, 89 insertions(+) create mode 100644 challenge-116/paulo-custodio/python/ch-1.py create mode 100644 challenge-116/paulo-custodio/python/ch-2.py (limited to 'challenge-116/paulo-custodio/python') diff --git a/challenge-116/paulo-custodio/python/ch-1.py b/challenge-116/paulo-custodio/python/ch-1.py new file mode 100644 index 0000000000..4dd2b06e2c --- /dev/null +++ b/challenge-116/paulo-custodio/python/ch-1.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 + +# Challenge 116 +# +# TASK #1 - Number Sequence +# Submitted by: Mohammad S Anwar +# You are given a number $N >= 10. +# +# Write a script to split the given number such that the difference between two +# consecutive numbers is always 1 and it shouldn't have leading 0. +# +# Print the given number if it impossible to split the number. +# +# Example +# Input: $N = 1234 +# Output: 1,2,3,4 +# +# Input: $N = 91011 +# Output: 9,10,11 +# +# Input: $N = 10203 +# Output: 10203 as it is impossible to split satisfying the conditions. + +import sys +import re + +def print_sequences(rest): + def worker(rest, prev): + found_solution = False + if rest=='': + if not found_solution: + print(",".join(prev)) + found_solution = True + else: + for i in range(1, len(rest)+1): + pref = rest[:i] + suff = rest[i:] + if not re.match(r"^0", suff): + if len(prev) > 0: + if int(prev[-1])+1 == int(pref): + if not found_solution: + if worker(suff, [*prev, pref]): + found_solution = True + else: + if not found_solution: + if worker(suff, [*prev, pref]): + found_solution = True + return found_solution + + return worker(rest, []) + +print_sequences(sys.argv[1]) diff --git a/challenge-116/paulo-custodio/python/ch-2.py b/challenge-116/paulo-custodio/python/ch-2.py new file mode 100644 index 0000000000..5d538ff59e --- /dev/null +++ b/challenge-116/paulo-custodio/python/ch-2.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +# Challenge 116 +# +# TASK #2 - Sum of Squares +# Submitted by: Mohammad Meraj Zia +# You are given a number $N >= 10. +# +# Write a script to find out if the given number $N is such that sum of squares +# of all digits is a perfect square. Print 1 if it is otherwise 0. +# +# Example +# Input: $N = 34 +# Ouput: 1 as 3^2 + 4^2 => 9 + 16 => 25 => 5^2 +# +# Input: $N = 50 +# Output: 1 as 5^2 + 0^2 => 25 + 0 => 25 => 5^2 +# +# Input: $N = 52 +# Output: 0 as 5^2 + 2^2 => 25 + 4 => 29 + +import sys +import math + +def sum_of_squares_is_perfect_square(num): + if num < 10: + return False + sum = 0 + for digit in [int(x) for x in str(num)]: + sum += digit**2 + sqint = int(math.sqrt(sum)) + return sqint**2 == sum + +if sum_of_squares_is_perfect_square(int(sys.argv[1])): + print(1) +else: + print(0) -- cgit