{ "05269061": "def solve(grid):\n h, w = len(grid), len(grid[0])\n colors = [0, 0, 0]\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0:\n idx = (r + c) % 3\n colors[idx] = grid[r][c]\n out = [[0]*w for _ in range(h)]\n for r in range(h):\n for c in range(w):\n out[r][c] = colors[(r + c) % 3]\n return out", "05f2a901": "def solve(grid):\n h, w = len(grid), len(grid[0])\n r2, c2, r8, c8 = [], [], [], []\n for r in range(h):\n for c in range(w):\n if grid[r][c] == 2:\n r2.append(r); c2.append(c)\n elif grid[r][c] == 8:\n r8.append(r); c8.append(c)\n r2_min, r2_max = min(r2), max(r2)\n c2_min, c2_max = min(c2), max(c2)\n r8_min, r8_max = min(r8), max(r8)\n c8_min, c8_max = min(c8), max(c8)\n dr, dc = 0, 0\n if r2_max < r8_min:\n dr = r8_min - r2_max - 1\n elif r2_min > r8_max:\n dr = r8_max - r2_min + 1\n if c2_max < c8_min:\n dc = c8_min - c2_max - 1\n elif c2_min > c8_max:\n dc = c8_max - c2_min + 1\n out = [[0]*w for _ in range(h)]\n for r in range(h):\n for c in range(w):\n if grid[r][c] == 8:\n out[r][c] = 8\n for r in range(h):\n for c in range(w):\n if grid[r][c] == 2:\n nr, nc = r + dr, c + dc\n if 0 <= nr < h and 0 <= nc < w:\n out[nr][nc] = 2\n return out", "09629e4f": "def solve(grid):\n h, w = len(grid), len(grid[0])\n block_rows = [(0,3), (4,7), (8,11)]\n block_cols = [(0,3), (4,7), (8,11)]\n key_bi, key_bj = -1, -1\n for bi, (r1, r2) in enumerate(block_rows):\n for bj, (c1, c2) in enumerate(block_cols):\n has8 = any(grid[r][c] == 8 for r in range(r1, r2) for c in range(c1, c2))\n if not has8:\n key_bi, key_bj = bi, bj\n kr1, kr2 = block_rows[key_bi]\n kc1, kc2 = block_cols[key_bj]\n out = [[0]*w for _ in range(h)]\n for r in range(h):\n for c in range(w):\n if grid[r][c] == 5:\n out[r][c] = 5\n for r in range(kr1, kr2):\n for c in range(kc1, kc2):\n v = grid[r][c]\n if v != 0 and v != 5:\n lr, lc = r - kr1, c - kc1\n br1, br2 = block_rows[lr]\n bc1, bc2 = block_cols[lc]\n for rr in range(br1, br2):\n for cc in range(bc1, bc2):\n out[rr][cc] = v\n return out", "0962bcdd": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0:\n center_color = grid[r][c]\n arm_positions = [(r-1,c),(r+1,c),(r,c-1),(r,c+1)]\n arm_colors = set()\n valid = True\n for nr, nc in arm_positions:\n if 0 <= nr < h and 0 <= nc < w and grid[nr][nc] != 0 and grid[nr][nc] != center_color:\n arm_colors.add(grid[nr][nc])\n else:\n if not (0 <= nr < h and 0 <= nc < w and grid[nr][nc] != 0):\n valid = False\n if valid and len(arm_colors) == 1:\n arm_color = arm_colors.pop()\n for dr in range(-2, 3):\n for dc in range(-2, 3):\n nr, nc = r + dr, c + dc\n if 0 <= nr < h and 0 <= nc < w:\n if dr == 0 and dc == 0:\n out[nr][nc] = center_color\n elif dr == 0 or dc == 0:\n out[nr][nc] = arm_color\n elif abs(dr) == abs(dc):\n out[nr][nc] = center_color\n return out", "10fcaaa3": "def solve(grid):\n h, w = len(grid), len(grid[0])\n oh, ow = h * 2, w * 2\n tiled = [[grid[r % h][c % w] for c in range(ow)] for r in range(oh)]\n out = [row[:] for row in tiled]\n for r in range(oh):\n for c in range(ow):\n if tiled[r][c] == 0:\n for dr, dc in [(-1,-1),(-1,1),(1,-1),(1,1)]:\n nr, nc = r + dr, c + dc\n if 0 <= nr < oh and 0 <= nc < ow and tiled[nr][nc] != 0:\n out[r][c] = 8\n break\n return out", "11852cab": "def solve(grid):\n h, w = len(grid), len(grid[0])\n cells = [(r, c, grid[r][c]) for r in range(h) for c in range(w) if grid[r][c] != 0]\n cr = round(sum(r for r, c, v in cells) / len(cells))\n cc = round(sum(c for r, c, v in cells) / len(cells))\n out = [row[:] for row in grid]\n for r, c, v in cells:\n dr, dc = r - cr, c - cc\n for _ in range(4):\n nr, nc = cr + dr, cc + dc\n if 0 <= nr < h and 0 <= nc < w and out[nr][nc] == 0:\n out[nr][nc] = v\n dr, dc = dc, -dr\n return out", "1190e5a7": "def solve(grid):\n h, w = len(grid), len(grid[0])\n colors = set(v for row in grid for v in row)\n sep_color = None\n bg_color = None\n for color in colors:\n full_rows = [r for r in range(h) if all(grid[r][c] == color for c in range(w))]\n full_cols = [c for c in range(w) if all(grid[r][c] == color for r in range(h))]\n if full_rows or full_cols:\n sep_color = color\n for color in colors:\n if color != sep_color:\n bg_color = color\n row_groups = 0\n in_group = False\n for r in range(h):\n is_sep = all(grid[r][c] == sep_color for c in range(w))\n if not is_sep:\n if not in_group:\n row_groups += 1\n in_group = True\n else:\n in_group = False\n col_groups = 0\n in_group = False\n for c in range(w):\n is_sep = all(grid[r][c] == sep_color for r in range(h))\n if not is_sep:\n if not in_group:\n col_groups += 1\n in_group = True\n else:\n in_group = False\n return [[bg_color] * col_groups for _ in range(row_groups)]", "137eaa0f": "def solve(grid):\n h, w = len(grid), len(grid[0])\n fives = [(r, c) for r in range(h) for c in range(w) if grid[r][c] == 5]\n cells = [(r, c, grid[r][c]) for r in range(h) for c in range(w) if grid[r][c] not in (0, 5)]\n out = [[0]*3 for _ in range(3)]\n out[1][1] = 5\n for r, c, v in cells:\n best_dist = float('inf')\n best_five = None\n for fr, fc in fives:\n d = abs(r - fr) + abs(c - fc)\n if d < best_dist:\n best_dist = d\n best_five = (fr, fc)\n dr = r - best_five[0]\n dc = c - best_five[1]\n or_, oc = 1 + dr, 1 + dc\n if 0 <= or_ < 3 and 0 <= oc < 3:\n out[or_][oc] = v\n return out", "017c7c7b": "def solve(grid):\n h, w = len(grid), len(grid[0])\n oh = h + h // 2\n out = [[0]*w for _ in range(oh)]\n for c in range(w):\n col = [grid[r][c] for r in range(h)]\n best_period = h\n for period in range(1, h+1):\n if all(col[j] == col[j % period] for j in range(h)):\n best_period = period\n break\n for r in range(oh):\n v = col[r % best_period]\n out[r][c] = 2 if v == 1 else v\n return out", "025d127b": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [[0]*w for _ in range(h)]\n color_cells = {}\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0:\n color = grid[r][c]\n if color not in color_cells:\n color_cells[color] = []\n color_cells[color].append((r, c))\n for color, cells in color_cells.items():\n max_r = max(r for r, c in cells)\n max_c = max(c for r, c in cells)\n for r, c in cells:\n if r == max_r:\n out[r][c] = color\n else:\n new_c = min(c + 1, max_c)\n out[r][new_c] = color\n return out" }