From 610ff9605ec7b308051a8f04f9b21d6f4060a8cd Mon Sep 17 00:00:00 2001 From: Abigail Date: Mon, 19 Apr 2021 20:16:47 +0200 Subject: Solutions in 29 languages for week 109, part 1. --- challenge-109/abigail/python/ch-1.py | 39 ++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 challenge-109/abigail/python/ch-1.py (limited to 'challenge-109/abigail/python') diff --git a/challenge-109/abigail/python/ch-1.py b/challenge-109/abigail/python/ch-1.py new file mode 100644 index 0000000000..6600bda6d5 --- /dev/null +++ b/challenge-109/abigail/python/ch-1.py @@ -0,0 +1,39 @@ +#!/opt/local/bin/python + +# +# See ../README.md +# + +# +# Run as: python ch-1.py [plain | compute] +# + +import sys + +COUNT = 20 +PLAIN = 0 +COMPUTE = 1 + +def divisor_sum (n): + sum = 0 + for i in range (2, n): + if n % i == 0: + sum = sum + i + return (sum) + +type = PLAIN + +if len (sys . argv) > 1 and sys . argv [1] == "compute": + type = COMPUTE + + +if type == PLAIN: + print ("0, 0, 0, 2, 0, 5, 0, 6, 3, 7, 0, 15, 0, 9, 8, 14, 0, 20, 0, 21") + + +if type == COMPUTE: + for n in range (1, COUNT + 1): + if n > 1: + print (", ", end = '') + print (divisor_sum (n), end = '') + print ("") -- cgit From 7b4fbbe6505b63d2faa62ad34939b6e830ea692b Mon Sep 17 00:00:00 2001 From: Abigail Date: Tue, 20 Apr 2021 20:52:57 +0200 Subject: When looping over possible divisors, stop at n / 2. --- challenge-109/abigail/python/ch-1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'challenge-109/abigail/python') diff --git a/challenge-109/abigail/python/ch-1.py b/challenge-109/abigail/python/ch-1.py index 6600bda6d5..f9e51a0897 100644 --- a/challenge-109/abigail/python/ch-1.py +++ b/challenge-109/abigail/python/ch-1.py @@ -16,7 +16,7 @@ COMPUTE = 1 def divisor_sum (n): sum = 0 - for i in range (2, n): + for i in range (2, n / 2 + 1): if n % i == 0: sum = sum + i return (sum) -- cgit From 5aa51940f1fa28317d7fd16b1850bb8f0a00fe60 Mon Sep 17 00:00:00 2001 From: Abigail Date: Sat, 24 Apr 2021 17:58:13 +0200 Subject: Python solution for week 109, part 2 --- challenge-109/abigail/python/ch-2.py | 66 ++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 challenge-109/abigail/python/ch-2.py (limited to 'challenge-109/abigail/python') diff --git a/challenge-109/abigail/python/ch-2.py b/challenge-109/abigail/python/ch-2.py new file mode 100644 index 0000000000..c17ac94211 --- /dev/null +++ b/challenge-109/abigail/python/ch-2.py @@ -0,0 +1,66 @@ +#!/opt/local/bin/python + +# +# See ../README.md +# + +# +# Run as: python ch-2.py < input-file +# + +import fileinput + +SIZE = 7 + +fmt = "{:d} {:d} {:d} {:d} {:d} {:d} {:d}" + +# +# Brute forcing all possiblities, with an early return +# +for line in fileinput . input (): + numbers = list (map (lambda x: int (x), line . split ())) + + for a_i in range (0, SIZE): + for b_i in range (0, SIZE): + if a_i == b_i: + continue + target = numbers [a_i] + numbers [b_i] + + for c_i in range (0, SIZE): + if c_i == a_i or c_i == b_i: + continue + + for d_i in range (0, SIZE): + if d_i == a_i or d_i == b_i or d_i == c_i: + continue + + if target != numbers [b_i] + numbers [c_i] + numbers [d_i]: + continue + + for e_i in range (0, SIZE): + if e_i == a_i or e_i == b_i or e_i == c_i or \ + e_i == d_i: + continue + + for f_i in range (0, SIZE): + if f_i == a_i or f_i == b_i or f_i == c_i or \ + f_i == d_i or f_i == e_i: + continue + if target != numbers [d_i] + numbers [e_i] + \ + numbers [f_i]: + continue + + for g_i in range (0, SIZE): + if g_i == a_i or g_i == b_i or g_i == c_i or \ + g_i == d_i or g_i == e_i or g_i == f_i: + continue + if target != numbers [f_i] + numbers [g_i]: + continue + + print (fmt . format (numbers [a_i], + numbers [b_i], + numbers [c_i], + numbers [d_i], + numbers [e_i], + numbers [f_i], + numbers [g_i])) -- cgit