aboutsummaryrefslogtreecommitdiff
path: root/challenge-266/packy-anderson/python
diff options
context:
space:
mode:
Diffstat (limited to 'challenge-266/packy-anderson/python')
-rw-r--r--challenge-266/packy-anderson/python/ch-1.py32
-rw-r--r--challenge-266/packy-anderson/python/ch-2.py85
2 files changed, 117 insertions, 0 deletions
diff --git a/challenge-266/packy-anderson/python/ch-1.py b/challenge-266/packy-anderson/python/ch-1.py
new file mode 100644
index 0000000000..ea2c608816
--- /dev/null
+++ b/challenge-266/packy-anderson/python/ch-1.py
@@ -0,0 +1,32 @@
+#!/usr/bin/env python
+
+from collections import Counter
+
+def occursOnce(line):
+ # create a Counter of all words
+ all = Counter(line.split())
+ # create a list of words that occur once in the Counter
+ return [ word for word in list(all) if all[word] == 1 ]
+
+def uncommonWords(line1, line2):
+ return occursOnce(
+ ' '.join(occursOnce(line1) + occursOnce(line2))
+ )
+
+def quoted_comma_join(arr):
+ return "'" + "', '".join(arr) + "'"
+
+def solution(line1, line2):
+ print(f"Input: $line1 = '{line1}'")
+ print(f" $line2 = '{line2}'")
+ uncommon = uncommonWords(line1, line2)
+ print(f'Output: ({quoted_comma_join(uncommon)})')
+
+print('Example 1:')
+solution('Mango is sweet', 'Mango is sour')
+
+print('\nExample 2:')
+solution('Mango Mango', 'Orange')
+
+print('\nExample 3:')
+solution('Mango is Mango', 'Orange is Orange')
diff --git a/challenge-266/packy-anderson/python/ch-2.py b/challenge-266/packy-anderson/python/ch-2.py
new file mode 100644
index 0000000000..dc2c0393bc
--- /dev/null
+++ b/challenge-266/packy-anderson/python/ch-2.py
@@ -0,0 +1,85 @@
+#!/usr/bin/env python
+
+def isDiagonal(x, y, N):
+ return (
+ N == 1 or N == 2 or x == y or x + y == N - 1
+ )
+
+def isXMatrix(matrix):
+ N = len(matrix)
+ for y, row in enumerate(matrix):
+ for x, value in enumerate(row):
+ # fail if diagonal values are zero or
+ # non-diagonal values are non-zero
+ if isDiagonal(x, y, N) != (value != 0):
+ return False
+ return True
+
+def formatMatrix(matrix, indent=17):
+ output = []
+ for row in matrix:
+ output_row = ' ' * indent + ' ['
+ output_row += ', '.join(map(lambda i: str(i), row))
+ output_row += ']'
+ output.append(output_row)
+
+ return(
+ "[\n" + ",\n".join(output) + "\n" +
+ ' ' * indent + ']'
+ )
+
+def solution(matrix):
+ print(f'Input: $matrix = {formatMatrix(matrix)}')
+ print(f'Output: {isXMatrix(matrix)}')
+
+print('Example 1:')
+solution([
+ [1, 0, 0, 2],
+ [0, 3, 4, 0],
+ [0, 5, 6, 0],
+ [7, 0, 0, 1],
+])
+
+print('\nExample 2:')
+solution([
+ [1, 2, 3],
+ [4, 5, 6],
+ [7, 8, 9],
+])
+
+print('\nExample 3:')
+solution([
+ [1, 0, 2],
+ [0, 3, 0],
+ [4, 0, 5],
+])
+
+print('\nExample 4:')
+solution([
+ [1, 0, 0, 0, 1],
+ [0, 1, 0, 1, 0],
+ [0, 0, 1, 0, 0],
+ [0, 1, 0, 1, 0],
+ [1, 0, 0, 0, 1],
+])
+
+print('\nExample 5:')
+solution([
+ [1, 0, 1, 0, 1],
+ [0, 1, 0, 1, 0],
+ [0, 0, 1, 0, 0],
+ [0, 1, 0, 1, 0],
+ [1, 0, 0, 0, 1],
+])
+
+print('\nExample 6:')
+solution([
+ [1, 1],
+ [1, 1]
+])
+
+print('\nExample 7:')
+solution([
+ [1, 0],
+ [1, 1]
+])