From 06f67e704e1bb59b63da4a8557179062656d56ed Mon Sep 17 00:00:00 2001 From: "exercism-solutions-syncer[bot]" <211797793+exercism-solutions-syncer[bot]@users.noreply.github.com> Date: Wed, 6 Aug 2025 09:47:03 +0000 Subject: [PATCH] [Sync Iteration] python/flower-field/1 --- .../python/flower-field/1/flower_field.py | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 solutions/python/flower-field/1/flower_field.py diff --git a/solutions/python/flower-field/1/flower_field.py b/solutions/python/flower-field/1/flower_field.py new file mode 100644 index 0000000..d735544 --- /dev/null +++ b/solutions/python/flower-field/1/flower_field.py @@ -0,0 +1,29 @@ +def annotate(garden): + if not garden: + return [] + valid_chars = [" ", "*"] + rows, cols = len(garden), len(garden[0]) + for r in garden: + if len(r) != cols: + raise ValueError("The board is invalid with current input.") + + deltas = [(-1,-1),(-1,0),(-1,1),(0,-1),(0,1),(1,-1),(1,0),(1,1)] + output = [] + + for i in range(rows): + new_row = [] + for j in range(cols): + if not (garden[i][j] in valid_chars): + raise ValueError("The board is invalid with current input.") + if garden[i][j] == "*": + new_row.append("*") + else: + count = 0 + for di, dj in deltas: + ni, nj = i + di, j + dj + if 0 <= ni < rows and 0 <= nj < cols and garden[ni][nj] == "*": + count += 1 + new_row.append(str(count) if count else " ") + output.append("".join(new_row)) + + return output