aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Shitov <andy@shitov.ru>2020-09-10 23:28:07 +0200
committerAndrew Shitov <andy@shitov.ru>2020-09-10 23:28:07 +0200
commit35adb782583a35b0ae54e249d33474a584a00c95 (patch)
treecd957459eae39a35229391d15ad406c475c0291c
parentdfef53750030612523a4edc1d63ce4f179745f7d (diff)
downloadperlweeklychallenge-club-35adb782583a35b0ae54e249d33474a584a00c95.tar.gz
perlweeklychallenge-club-35adb782583a35b0ae54e249d33474a584a00c95.tar.bz2
perlweeklychallenge-club-35adb782583a35b0ae54e249d33474a584a00c95.zip
77-2 in Python 3
-rw-r--r--challenge-077/ash/python/ch-2.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/challenge-077/ash/python/ch-2.py b/challenge-077/ash/python/ch-2.py
new file mode 100644
index 0000000000..d5b7b5e506
--- /dev/null
+++ b/challenge-077/ash/python/ch-2.py
@@ -0,0 +1,42 @@
+# Task 2 from
+# https://perlweeklychallenge.org/blog/perl-weekly-challenge-077/
+
+# Comments: https://andrewshitov.com/2020/09/08/lonely-x-the-weekly-challenge-77-task-2/
+
+# Output for the given example:
+#
+# $ python3 ch-2.py
+# Lonely X at position (0, 0).
+# Lonely X at position (2, 1).
+# Lonely X at position (0, 2).
+
+matrix = [
+ ['X', 'O', 'O'],
+ ['O', 'O', 'X'],
+ ['X', 'O', 'O'],
+]
+
+def is_O_cell(x, y):
+ if 0 <= x < len(matrix[0]) and 0 <= y < len(matrix):
+ return matrix[y][x] == 'O'
+ else:
+ return True
+
+x_cells = [
+ [col_i, row_i]
+ for row_i, row in enumerate(matrix)
+ for col_i, cell in enumerate(row)
+ if cell == 'X'
+]
+
+for x_cell in x_cells:
+ x, y = x_cell
+ if is_O_cell(x , y + 1) and \
+ is_O_cell(x , y - 1) and \
+ is_O_cell(x + 1, y ) and \
+ is_O_cell(x - 1, y ) and \
+ is_O_cell(x + 1, y + 1) and \
+ is_O_cell(x + 1, y - 1) and \
+ is_O_cell(x - 1, y + 1) and \
+ is_O_cell(x - 1, y - 1):
+ print(f"Lonely X at position ({x}, {y}).")