| { | |
| "3bdb4ada": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n visited = [[False]*w for _ in range(h)]\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0 and not visited[r][c]:\n color = grid[r][c]\n r_min, r_max = r, r\n c_min, c_max = c, c\n while r_max + 1 < h and grid[r_max+1][c] == color:\n r_max += 1\n while c_max + 1 < w and grid[r][c_max+1] == color:\n c_max += 1\n for rr in range(r_min, r_max+1):\n for cc in range(c_min, c_max+1):\n visited[rr][cc] = True\n if r_max - r_min == 2:\n mid = r_min + 1\n for cc in range(c_min, c_max+1):\n if (cc - c_min) % 2 == 1:\n out[mid][cc] = 0\n return out\n", | |
| "3befdf3e": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n cells = [(r,c) for r in range(h) for c in range(w) if grid[r][c] != 0]\n r_min = min(r for r,c in cells)\n r_max = max(r for r,c in cells)\n c_min = min(c for r,c in cells)\n c_max = max(c for r,c in cells)\n border_color = grid[r_min][c_min]\n inner_color = None\n for r in range(r_min+1, r_max):\n for c in range(c_min+1, c_max):\n if grid[r][c] != border_color:\n inner_color = grid[r][c]\n break\n if inner_color: break\n inner_h = r_max - r_min - 1\n inner_w = c_max - c_min - 1\n for r in range(r_min, r_max+1):\n for c in range(c_min, c_max+1):\n out[r][c] = inner_color if grid[r][c] == border_color else border_color\n for dr in range(1, inner_h+1):\n for c in range(c_min, c_max+1):\n if r_min-dr >= 0: out[r_min-dr][c] = border_color\n if r_max+dr < h: out[r_max+dr][c] = border_color\n for dc in range(1, inner_w+1):\n for r in range(r_min, r_max+1):\n if c_min-dc >= 0: out[r][c_min-dc] = border_color\n if c_max+dc < w: out[r][c_max+dc] = border_color\n return out\n", | |
| "3de23699": "def solve(grid):\n h, w = len(grid), len(grid[0])\n color_positions = {}\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0:\n color_positions.setdefault(grid[r][c], []).append((r, c))\n marker_color = None\n for color, positions in color_positions.items():\n if len(positions) == 4:\n rows = set(r for r, c in positions)\n cols = set(c for r, c in positions)\n if len(rows) == 2 and len(cols) == 2:\n marker_color = color\n fill_color = next(c for c in color_positions if c != marker_color)\n mp = color_positions[marker_color]\n r_min, r_max = min(r for r,c in mp), max(r for r,c in mp)\n c_min, c_max = min(c for r,c in mp), max(c for r,c in mp)\n inner = []\n for r in range(r_min+1, r_max):\n row = []\n for c in range(c_min+1, c_max):\n row.append(marker_color if grid[r][c] == fill_color else 0)\n inner.append(row)\n return inner\n", | |
| "3e980e27": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n from collections import deque\n visited = [[False]*w for _ in range(h)]\n components = []\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0 and not visited[r][c]:\n q = deque([(r, c)])\n visited[r][c] = True\n cells = []\n while q:\n cr, cc = q.popleft()\n cells.append((cr, cc))\n for dr, dc in [(-1,0),(1,0),(0,-1),(0,1),(-1,-1),(-1,1),(1,-1),(1,1)]:\n nr, nc = cr+dr, cc+dc\n if 0<=nr<h and 0<=nc<w and not visited[nr][nc] and grid[nr][nc]!=0:\n visited[nr][nc] = True\n q.append((nr, nc))\n components.append(cells)\n lone_points = []\n templates_list = []\n for comp in components:\n colors = set(grid[r][c] for r, c in comp)\n if len(colors) > 1:\n templates_list.append(comp)\n elif len(comp) == 1:\n lone_points.append(comp[0])\n lone_colors = set(grid[r][c] for r, c in lone_points)\n template_info = {}\n for tmpl in templates_list:\n colors = set(grid[r][c] for r, c in tmpl)\n acs = colors & lone_colors\n if not acs: continue\n ac = acs.pop()\n anchor_pos = next((r,c) for r,c in tmpl if grid[r][c] == ac)\n shape = [(r-anchor_pos[0], c-anchor_pos[1], grid[r][c]) for r,c in tmpl]\n template_info[ac] = shape\n for lr, lc in lone_points:\n ac = grid[lr][lc]\n if ac in template_info:\n shape = template_info[ac]\n for dr, dc, color in shape:\n if ac == 2:\n nr, nc = lr + dr, lc - dc\n else:\n nr, nc = lr + dr, lc + dc\n if 0 <= nr < h and 0 <= nc < w:\n out[nr][nc] = color\n return out\n", | |
| "3eda0437": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n best = None\n best_area = 0\n for r1 in range(h):\n for r2 in range(r1+1, h):\n rh = r2 - r1 + 1\n if h > 2 and rh >= h:\n continue\n c = 0\n while c < w:\n if all(grid[r][c] == 0 for r in range(r1, r2+1)):\n c_start = c\n while c < w and all(grid[r][c] == 0 for r in range(r1, r2+1)):\n c += 1\n c_end = c - 1\n area = rh * (c_end - c_start + 1)\n if area > best_area:\n best_area = area\n best = (r1, r2, c_start, c_end)\n else:\n c += 1\n if best:\n for r in range(best[0], best[1]+1):\n for c in range(best[2], best[3]+1):\n out[r][c] = 6\n return out\n", | |
| "3f7978a0": "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 if not fives:\n return grid\n r_min = min(r for r,c in fives)\n r_max = max(r for r,c in fives)\n c_min = min(c for r,c in fives)\n c_max = max(c for r,c in fives)\n rect_r_min = r_min - 1\n rect_r_max = r_max + 1\n out = []\n for r in range(rect_r_min, rect_r_max + 1):\n row = []\n for c in range(c_min, c_max + 1):\n row.append(grid[r][c])\n out.append(row)\n return out\n", | |
| "40853293": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n color_positions = {}\n for r in range(h):\n for c in range(w):\n if grid[r][c] != 0:\n color_positions.setdefault(grid[r][c], []).append((r, c))\n h_lines = []\n v_lines = []\n for color, positions in color_positions.items():\n if len(positions) == 2:\n (r1, c1), (r2, c2) = positions\n if r1 == r2:\n h_lines.append((color, r1, min(c1,c2), max(c1,c2)))\n elif c1 == c2:\n v_lines.append((color, c1, min(r1,r2), max(r1,r2)))\n for color, row, c1, c2 in h_lines:\n for c in range(c1, c2+1):\n out[row][c] = color\n for color, col, r1, r2 in v_lines:\n for r in range(r1, r2+1):\n out[r][col] = color\n return out\n", | |
| "4093f84a": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n band_rows = [r for r in range(h) if all(grid[r][c] == 5 for c in range(w))]\n band_cols = [c for c in range(w) if all(grid[r][c] == 5 for r in range(h))]\n if band_rows:\n band_r_min = min(band_rows)\n band_r_max = max(band_rows)\n for c in range(w):\n above = sorted([r for r in range(band_r_min) if grid[r][c] != 0 and grid[r][c] != 5], reverse=True)\n target_row = band_r_min - 1\n for r in above:\n out[r][c] = 0\n out[target_row][c] = 5\n target_row -= 1\n below = sorted([r for r in range(band_r_max+1, h) if grid[r][c] != 0 and grid[r][c] != 5])\n target_row = band_r_max + 1\n for r in below:\n out[r][c] = 0\n out[target_row][c] = 5\n target_row += 1\n elif band_cols:\n band_c_min = min(band_cols)\n band_c_max = max(band_cols)\n for r in range(h):\n left = sorted([c for c in range(band_c_min) if grid[r][c] != 0 and grid[r][c] != 5], reverse=True)\n target_col = band_c_min - 1\n for c in left:\n out[r][c] = 0\n out[r][target_col] = 5\n target_col -= 1\n right = sorted([c for c in range(band_c_max+1, w) if grid[r][c] != 0 and grid[r][c] != 5])\n target_col = band_c_max + 1\n for c in right:\n out[r][c] = 0\n out[r][target_col] = 5\n target_col += 1\n return out\n", | |
| "41e4d17e": "def solve(grid):\n h, w = len(grid), len(grid[0])\n out = [row[:] for row in grid]\n from collections import deque\n visited = [[False]*w for _ in range(h)]\n rectangles = []\n for r in range(h):\n for c in range(w):\n if grid[r][c] == 1 and not visited[r][c]:\n q = deque([(r, c)])\n visited[r][c] = True\n cells = [(r, c)]\n while q:\n cr, cc = q.popleft()\n for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n nr, nc = cr+dr, cc+dc\n if 0<=nr<h and 0<=nc<w and not visited[nr][nc] and grid[nr][nc]==1:\n visited[nr][nc] = True\n q.append((nr, nc))\n cells.append((nr, nc))\n r_min = min(r for r,c in cells)\n r_max = max(r for r,c in cells)\n c_min = min(c for r,c in cells)\n c_max = max(c for r,c in cells)\n rectangles.append((r_min, r_max, c_min, c_max))\n for r_min, r_max, c_min, c_max in rectangles:\n center_r = (r_min + r_max) // 2\n center_c = (c_min + c_max) // 2\n for r in range(h):\n if grid[r][center_c] != 1:\n out[r][center_c] = 6\n for c in range(w):\n if grid[center_r][c] != 1:\n out[center_r][c] = 6\n return out\n", | |
| "4290ef0e": "def solve(grid):\n h, w = len(grid), len(grid[0])\n bg = grid[0][0]\n by_color = {}\n for r in range(h):\n for c in range(w):\n if grid[r][c] != bg:\n by_color.setdefault(grid[r][c], []).append((r, c))\n frames = []\n for color, cells in by_color.items():\n r_min = min(r for r, c in cells)\n r_max = max(r for r, c in cells)\n c_min = min(c for r, c in cells)\n c_max = max(c for r, c in cells)\n fh = r_max - r_min + 1\n fw = c_max - c_min + 1\n max_dim = max(fh, fw)\n if max_dim % 2 == 0:\n max_dim += 1\n if len(cells) == 1:\n corner = 0\n else:\n pattern = [[bg] * fw for _ in range(fh)]\n for r, c in cells:\n pattern[r - r_min][c - c_min] = color\n corner_h = 0\n for c in range(fw):\n if pattern[0][c] == color:\n corner_h += 1\n else:\n break\n corner_v = 0\n for r in range(fh):\n if pattern[r][0] == color:\n corner_v += 1\n else:\n break\n if fw <= fh:\n corner = corner_h\n else:\n corner = corner_v\n frames.append((max_dim, color, corner))\n frames.sort()\n if not frames:\n return grid\n max_size = frames[-1][0]\n out_size = max_size\n center = out_size // 2\n out = [[bg] * out_size for _ in range(out_size)]\n for ring_size, color, corner in reversed(frames):\n if ring_size == 1:\n out[center][center] = color\n continue\n half = ring_size // 2\n for dr in range(-half, half + 1):\n for dc in range(-half, half + 1):\n if max(abs(dr), abs(dc)) != half:\n continue\n r = center + dr\n c = center + dc\n colored = False\n if abs(dr) == half and abs(dc) == half:\n colored = True\n elif abs(dr) == half:\n colored = (abs(dc) >= half - corner + 1)\n elif abs(dc) == half:\n colored = (abs(dr) >= half - corner + 1)\n if colored:\n out[r][c] = color\n return out\n" | |
| } |