aboutsummaryrefslogtreecommitdiff
path: root/challenge-170/sgreen/python/ch-2.py
diff options
context:
space:
mode:
authorMohammad S Anwar <Mohammad.Anwar@yahoo.com>2022-06-24 17:31:39 +0100
committerGitHub <noreply@github.com>2022-06-24 17:31:39 +0100
commit5d25c6e2b681143209bb64c08fb04a822e962133 (patch)
tree2a4775a308f3762ca6103bf25f3b5efef404ce84 /challenge-170/sgreen/python/ch-2.py
parent247e5a8ccbf2ca49929f435a6efc5e7f9c6e4e36 (diff)
parentcdd967fb112b2fe41e9b9909b43b35c2fce76dc7 (diff)
downloadperlweeklychallenge-club-5d25c6e2b681143209bb64c08fb04a822e962133.tar.gz
perlweeklychallenge-club-5d25c6e2b681143209bb64c08fb04a822e962133.tar.bz2
perlweeklychallenge-club-5d25c6e2b681143209bb64c08fb04a822e962133.zip
Merge pull request #6328 from simongreen-net/master
sgreen solutions to challenge 170
Diffstat (limited to 'challenge-170/sgreen/python/ch-2.py')
-rwxr-xr-xchallenge-170/sgreen/python/ch-2.py41
1 files changed, 41 insertions, 0 deletions
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])