aboutsummaryrefslogtreecommitdiff
path: root/challenge-143/paulo-custodio/python
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-143/paulo-custodio/python')
-rw-r--r--challenge-143/paulo-custodio/python/ch-1.py72
-rw-r--r--challenge-143/paulo-custodio/python/ch-2.py42
2 files changed, 114 insertions, 0 deletions
diff --git a/challenge-143/paulo-custodio/python/ch-1.py b/challenge-143/paulo-custodio/python/ch-1.py
new file mode 100644
index 0000000000..a81c52fd0e
--- /dev/null
+++ b/challenge-143/paulo-custodio/python/ch-1.py
@@ -0,0 +1,72 @@
+#!/usr/bin/python3
+
+# TASK #1 > Calculator
+# Submitted by: Mohammad S Anwar
+# You are given a string, $s, containing mathematical expression.
+#
+# Write a script to print the result of the mathematical expression. To keep
+# it simple, please only accept + - * ().
+#
+# Example 1:
+# Input: $s = "10 + 20 - 5"
+# Output: 25
+# Example 2:
+# Input: $s = "(10 + 20 - 5) * 2"
+# Output: 50
+
+import sys
+import re
+
+def expr(input):
+ input, value = factor(input)
+ while True:
+ input = input.strip()+" "
+ if input[0]=='*':
+ input = input[1:]
+ input, b = factor(input)
+ value *= b
+ elif input[0]=='/':
+ input = input[1:]
+ input, b = factor(input)
+ value /= b
+ else:
+ return input, value
+
+def factor(input):
+ input, value = term(input)
+ while True:
+ input = input.strip()+" "
+ if input[0]=='+':
+ input = input[1:]
+ input, b = term(input)
+ value += b
+ elif input[0]=='-':
+ input = input[1:]
+ input, b = term(input)
+ value -= b
+ else:
+ return input, value
+
+def term(input):
+ input = input.strip()+" "
+ match = re.match(r"[-+]?\d+", input)
+ if match:
+ value = int(match.group(0))
+ input = input[match.end(0):]
+ return input, value
+ elif input[0]=='(':
+ input = input[1:]
+ input, value = expr(input)
+ input = input.strip()+" "
+ if input[0]!=')':
+ print("expected )")
+ sys.exit(1)
+ input = input[1:]
+ return input, value
+ else:
+ print("expected ( or number")
+ sys.exit(1)
+
+input = " ".join(sys.argv[1:])
+input, value = expr(input)
+print(value)
diff --git a/challenge-143/paulo-custodio/python/ch-2.py b/challenge-143/paulo-custodio/python/ch-2.py
new file mode 100644
index 0000000000..3d1976d3f0
--- /dev/null
+++ b/challenge-143/paulo-custodio/python/ch-2.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python3
+
+# TASK #2 > Stealthy Number
+# Submitted by: Mohammad S Anwar
+# You are given a positive number, $n.
+#
+# Write a script to find out if the given number is Stealthy Number.
+#
+# A positive integer N is stealthy, if there exist positive integers a, b, c, d
+# such that a * b = c * d = N and a + b = c + d + 1.
+#
+# Example 1
+# Input: $n = 36
+# Output: 1
+#
+# Since 36 = 4 (a) * 9 (b) = 6 (c) * 6 (d) and 4 (a) + 9 (b) = 6 (c) + 6 (d) + 1.
+# Example 2
+# Input: $n = 12
+# Output: 1
+#
+# Since 2 * 6 = 3 * 4 and 2 + 6 = 3 + 4 + 1
+# Example 3
+# Input: $n = 6
+# Output: 0
+#
+# Since 2 * 3 = 1 * 6 but 2 + 3 != 1 + 6 + 1
+
+import sys
+
+def is_stealthy(n):
+ for a in range(1, n+1):
+ if n%a==0:
+ b = n/a # a*b=n
+ for c in range(1, n+1):
+ if n%c==0:
+ d = n/c # c*d=n
+ if a+b==c+d+1:
+ return 1
+ return 0
+
+n = int(sys.argv[1])
+print(is_stealthy(n))