diff options
| author | Mohammad S Anwar <Mohammad.Anwar@yahoo.com> | 2020-06-28 21:11:53 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-06-28 21:11:53 +0100 |
| commit | a4ef8153a7df3aaebe5ec3c28b508041175e4dd2 (patch) | |
| tree | 41a11f52647ca2310f554dce80e18131b8442de0 /challenge-066 | |
| parent | d05736d272d9e28442f1ea13f2b8a584772e6633 (diff) | |
| parent | d5cb0f767f6dd17e0179632d1fabc66221604744 (diff) | |
| download | perlweeklychallenge-club-a4ef8153a7df3aaebe5ec3c28b508041175e4dd2.tar.gz perlweeklychallenge-club-a4ef8153a7df3aaebe5ec3c28b508041175e4dd2.tar.bz2 perlweeklychallenge-club-a4ef8153a7df3aaebe5ec3c28b508041175e4dd2.zip | |
Merge pull request #1878 from waltman/branch-for-challenge-066
Branch for challenge 066
Diffstat (limited to 'challenge-066')
| -rw-r--r-- | challenge-066/walt-mankowski/python/.python-version | 1 | ||||
| -rw-r--r-- | challenge-066/walt-mankowski/python/ch-1.py | 26 | ||||
| -rw-r--r-- | challenge-066/walt-mankowski/python/ch-2.py | 24 |
3 files changed, 51 insertions, 0 deletions
diff --git a/challenge-066/walt-mankowski/python/.python-version b/challenge-066/walt-mankowski/python/.python-version new file mode 100644 index 0000000000..269aa9c86d --- /dev/null +++ b/challenge-066/walt-mankowski/python/.python-version @@ -0,0 +1 @@ +3.8.3 diff --git a/challenge-066/walt-mankowski/python/ch-1.py b/challenge-066/walt-mankowski/python/ch-1.py new file mode 100644 index 0000000000..1e0fc5ea5d --- /dev/null +++ b/challenge-066/walt-mankowski/python/ch-1.py @@ -0,0 +1,26 @@ +from sys import argv + +def divide(m, n): + # handle 0 values first + if n == 0: + raise ZeroDivisionError('integer division or modulo by zero') + if m == 0: + return 0 + + # sign of the result + sign = -1 if (m < 0 and n > 0) or (m > 0 and n < 0) else 1 + + # now count how many times we can subtract abs(n) from abs(m) + (m, n) = tuple(abs(x) for x in (m,n)) + count = 0 + while m >= n: + m -= n + count += 1 + + if sign == -1 and m > 0: + return -(count + 1) + else: + return count * sign + +m, n = tuple(int(x) for x in argv[1:3]) +print(divide(m, n)) diff --git a/challenge-066/walt-mankowski/python/ch-2.py b/challenge-066/walt-mankowski/python/ch-2.py new file mode 100644 index 0000000000..301fad1eda --- /dev/null +++ b/challenge-066/walt-mankowski/python/ch-2.py @@ -0,0 +1,24 @@ +from sys import argv +from math import log, sqrt, floor + +# check if n is within EPS of being a whole number +def is_whole(n): + EPS = 1e-10 + round = int(f'{n:.0f}') + return abs(round - n) < EPS + +# My algorithm is this: +# Loop over all the m's from 2 to sqrt(N) +# If m can be raised to an integer power to equal N, then log_m N is an integer + +N = int(argv[1]) +logn = log(N) +found = False +for m in range(2, int(sqrt(N))+1): + n = logn / log(m) + if is_whole(n): + print(f'{m}^{n:.0f}') + found = True + +if not found: + print(0) |
