From cdd967fb112b2fe41e9b9909b43b35c2fce76dc7 Mon Sep 17 00:00:00 2001 From: Simon Green Date: Fri, 24 Jun 2022 23:17:16 +1000 Subject: sgreen solutions to challenge 170 --- challenge-170/sgreen/python/ch-1.py | 36 ++++++++++++++++++++++++++++++++ challenge-170/sgreen/python/ch-2.py | 41 +++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100755 challenge-170/sgreen/python/ch-1.py create mode 100755 challenge-170/sgreen/python/ch-2.py (limited to 'challenge-170/sgreen/python') diff --git a/challenge-170/sgreen/python/ch-1.py b/challenge-170/sgreen/python/ch-1.py new file mode 100755 index 0000000000..356393c2b4 --- /dev/null +++ b/challenge-170/sgreen/python/ch-1.py @@ -0,0 +1,36 @@ +#!/usr/bin/env python + +import math + + +def is_prime(number): + '''Return true or false if the number is a prime''' + if number < 2: + return False + + for i in range(2, int(math.sqrt(number)) + 1): + if number % i == 0: + return False + + # It's a prime + return True + + +def main(): + solutions = [1] + value = 1 + counter = 0 + + # We need 10 solutions + while len(solutions) < 10: + counter += 1 + if is_prime(counter): + # Multiple the solution by this number + value *= counter + solutions.append(value) + + print(*solutions, sep=', ') + + +if __name__ == '__main__': + main() diff --git a/challenge-170/sgreen/python/ch-2.py b/challenge-170/sgreen/python/ch-2.py new file mode 100755 index 0000000000..fc0700a967 --- /dev/null +++ b/challenge-170/sgreen/python/ch-2.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python + +import sys +import yaml + + +def check_array(a): + ''' Check that all rows in the array are the same length''' + for i in range(1, len(a)): + if (len(a[0]) != len(a[i])): + raise ValueError('mismatched array width') + + return a + + +def main(file_name): + # Read the supplied file in YAML format + with open(file_name, 'r') as file: + arrays = yaml.safe_load(file) + + if len(arrays) != 2: + raise ValueError('Expecting two arrays') + + array1 = check_array(arrays[0]) + array2 = check_array(arrays[1]) + + solution = [] + for row in array1: + for second_row in array2: + solution.append(list( str(c1 * c2) for c1 in row for c2 in second_row)) + + # Format each row uniformly. + max_length = max(max(len(col) for col in row) for row in solution) + fmt = '[' + (' {:>' + str(max_length) + 's}') * len(solution[0]) + ' ]' + + for row in solution: + print(fmt.format(*row)) + + +if __name__ == '__main__': + main(sys.argv[1]) -- cgit