From 35adb782583a35b0ae54e249d33474a584a00c95 Mon Sep 17 00:00:00 2001 From: Andrew Shitov Date: Thu, 10 Sep 2020 23:28:07 +0200 Subject: 77-2 in Python 3 --- challenge-077/ash/python/ch-2.py | 42 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 challenge-077/ash/python/ch-2.py (limited to 'challenge-077/ash/python/ch-2.py') 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}).") -- cgit