{ "80af3007": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n # Find bounding box of 5s\n min_r = min_c = float('inf')\n max_r = max_c = 0\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] != 0:\n min_r = min(min_r, r)\n max_r = max(max_r, r)\n min_c = min(min_c, c)\n max_c = max(max_c, c)\n\n h = max_r - min_r + 1\n w = max_c - min_c + 1\n ch = h // 3\n cw = w // 3\n\n # Build meta-grid\n meta = [[0]*3 for _ in range(3)]\n for mr in range(3):\n for mc in range(3):\n if grid[min_r + mr*ch][min_c + mc*cw] == 5:\n meta[mr][mc] = 1\n\n # Build output: fractal self-similarity\n output = [[0]*9 for _ in range(9)]\n for r in range(9):\n for c in range(9):\n if meta[r//3][c//3] and meta[r%3][c%3]:\n output[r][c] = 5\n\n return output", "83302e8f": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n from collections import Counter\n cnt = Counter(grid[r][c] for r in range(rows) for c in range(cols))\n line_color = max((c for c in cnt if c != 0), key=lambda c: cnt[c])\n\n # Find grid line rows and columns\n line_rows = []\n for r in range(rows):\n count = sum(1 for c in range(cols) if grid[r][c] == line_color)\n if count > cols * 0.5:\n line_rows.append(r)\n\n line_cols = []\n for c in range(cols):\n count = sum(1 for r in range(rows) if grid[r][c] == line_color)\n if count > rows * 0.5:\n line_cols.append(c)\n\n # Define cell boundaries\n all_rows = [-1] + line_rows + [rows]\n all_cols = [-1] + line_cols + [cols]\n\n # First, determine fill color for each cell region\n cell_colors = {}\n for ri in range(len(all_rows) - 1):\n for ci in range(len(all_cols) - 1):\n r_start = all_rows[ri] + 1\n r_end = all_rows[ri + 1]\n c_start = all_cols[ci] + 1\n c_end = all_cols[ci + 1]\n\n if r_start >= r_end or c_start >= c_end:\n continue\n\n has_gap = False\n\n if all_rows[ri] >= 0:\n r = all_rows[ri]\n for c in range(c_start, c_end):\n if grid[r][c] != line_color:\n has_gap = True\n break\n\n if not has_gap and all_rows[ri + 1] < rows:\n r = all_rows[ri + 1]\n for c in range(c_start, c_end):\n if grid[r][c] != line_color:\n has_gap = True\n break\n\n if not has_gap and all_cols[ci] >= 0:\n c = all_cols[ci]\n for r in range(r_start, r_end):\n if grid[r][c] != line_color:\n has_gap = True\n break\n\n if not has_gap and all_cols[ci + 1] < cols:\n c = all_cols[ci + 1]\n for r in range(r_start, r_end):\n if grid[r][c] != line_color:\n has_gap = True\n break\n\n fill_color = 4 if has_gap else 3\n cell_colors[(ri, ci)] = fill_color\n\n output = [row[:] for row in grid]\n\n # Fill cell interiors\n for (ri, ci), fill_color in cell_colors.items():\n r_start = all_rows[ri] + 1\n r_end = all_rows[ri + 1]\n c_start = all_cols[ci] + 1\n c_end = all_cols[ci + 1]\n\n for r in range(r_start, r_end):\n for c in range(c_start, c_end):\n output[r][c] = fill_color\n\n # Fill gap cells on lines with 4\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] == 0 and output[r][c] == 0:\n output[r][c] = 4\n\n return output", "855e0971": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n out = [row[:] for row in grid]\n\n # Check row-based bands (each row has one dominant color)\n row_colors = []\n for r in range(rows):\n colors = set(grid[r]) - {0}\n if len(colors) == 1:\n row_colors.append(colors.pop())\n else:\n row_colors.append(None)\n\n col_colors = []\n for c in range(cols):\n colors = set(grid[r][c] for r in range(rows)) - {0}\n if len(colors) == 1:\n col_colors.append(colors.pop())\n else:\n col_colors.append(None)\n\n if all(c is not None for c in row_colors):\n # Row-based bands\n bands = []\n i = 0\n while i < rows:\n color = row_colors[i]\n j = i\n while j < rows and row_colors[j] == color:\n j += 1\n bands.append((i, j, color))\n i = j\n\n for start, end, color in bands:\n zeros = []\n for r in range(start, end):\n for c in range(cols):\n if grid[r][c] == 0:\n zeros.append((r, c))\n for _, c in zeros:\n for r in range(start, end):\n out[r][c] = 0\n return out\n\n if all(c is not None for c in col_colors):\n # Column-based bands\n bands = []\n i = 0\n while i < cols:\n color = col_colors[i]\n j = i\n while j < cols and col_colors[j] == color:\n j += 1\n bands.append((i, j, color))\n i = j\n\n for start, end, color in bands:\n zeros = []\n for c in range(start, end):\n for r in range(rows):\n if grid[r][c] == 0:\n zeros.append((r, c))\n for r, _ in zeros:\n for c in range(start, end):\n out[r][c] = 0\n return out\n\n return out", "8731374e": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n from collections import Counter\n\n # Find all rectangular regions and pick the one with most uniform color\n # We need to find the rectangle dimensions first by trying all possible sizes\n # Actually, find the rectangle by looking for the largest rectangular area\n # where cells are predominantly one color\n\n # Strategy: try to find a rectangular region with high uniformity\n # For each possible color, find the largest rectangle of that color\n\n # Count all colors\n all_colors = Counter(grid[r][c] for r in range(rows) for c in range(cols))\n\n # Try each color as potential bg_color\n best_rect = None\n best_score = 0\n best_bg = None\n\n for bg_color in all_colors:\n # Find contiguous rows/cols where this color appears frequently\n # Scan for rectangular region\n for sr in range(rows):\n for sc in range(cols):\n if grid[sr][sc] != bg_color:\n continue\n # Try expanding from this point\n for er in range(sr + 3, min(sr + 20, rows + 1)):\n for ec in range(sc + 3, min(sc + 20, cols + 1)):\n h = er - sr\n w = ec - sc\n count = sum(1 for r in range(sr, er) for c in range(sc, ec) if grid[r][c] == bg_color)\n total = h * w\n # Need high percentage (> 80%) and decent size\n if count > total * 0.8 and count > best_score and total >= 20:\n # Check that anomaly color is consistent\n anomaly_colors = set()\n for r in range(sr, er):\n for c in range(sc, ec):\n if grid[r][c] != bg_color:\n anomaly_colors.add(grid[r][c])\n if len(anomaly_colors) <= 1 and anomaly_colors:\n best_score = count\n best_rect = (sr, sc, er, ec)\n best_bg = bg_color\n\n if best_rect is None:\n return grid\n\n sr, sc, er, ec = best_rect\n oh = er - sr\n ow = ec - sc\n bg = best_bg\n\n # Find anomalies\n anomalies = []\n fg = None\n for r in range(sr, er):\n for c in range(sc, ec):\n if grid[r][c] != bg:\n anomalies.append((r - sr, c - sc))\n fg = grid[r][c]\n\n if fg is None:\n return [[bg]*ow for _ in range(oh)]\n\n # Build output with row+col lines through anomaly positions\n output = [[bg]*ow for _ in range(oh)]\n for ar, ac in anomalies:\n for c in range(ow):\n output[ar][c] = fg\n for r in range(oh):\n output[r][ac] = fg\n\n return output", "8a004b2b": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n # Find 4-corner positions\n fours = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == 4]\n min_r4 = min(r for r, c in fours)\n max_r4 = max(r for r, c in fours)\n min_c4 = min(c for r, c in fours)\n max_c4 = max(c for r, c in fours)\n\n frame_h = max_r4 - min_r4 + 1\n frame_w = max_c4 - min_c4 + 1\n\n # Get colored blocks inside frame\n blocks = {}\n for r in range(min_r4, max_r4 + 1):\n for c in range(min_c4, max_c4 + 1):\n v = grid[r][c]\n if v not in (0, 4):\n if v not in blocks:\n blocks[v] = []\n blocks[v].append((r - min_r4, c - min_c4))\n\n # Determine block_size\n block_size = 1\n for color, positions in blocks.items():\n min_br = min(r for r, c in positions)\n max_br = max(r for r, c in positions)\n block_size = max(block_size, max_br - min_br + 1)\n break\n\n # Get key pattern (non-0, non-4 cells outside frame)\n key_cells = []\n for r in range(rows):\n for c in range(cols):\n v = grid[r][c]\n if v != 0 and v != 4 and (r < min_r4 or r > max_r4 or c < min_c4 or c > max_c4):\n key_cells.append((r, c, v))\n\n if not key_cells:\n return grid\n\n min_kr = min(r for r, c, v in key_cells)\n min_kc = min(c for r, c, v in key_cells)\n max_kr = max(r for r, c, v in key_cells)\n max_kc = max(c for r, c, v in key_cells)\n\n key_h = max_kr - min_kr + 1\n key_w = max_kc - min_kc + 1\n key_grid = [[0] * key_w for _ in range(key_h)]\n for r, c, v in key_cells:\n key_grid[r - min_kr][c - min_kc] = v\n\n # Find offset by matching first block position to key position\n first_color = list(blocks.keys())[0]\n first_pos = blocks[first_color][0]\n\n for kr in range(key_h):\n for kc in range(key_w):\n if key_grid[kr][kc] == first_color:\n offset_r = first_pos[0] - kr * block_size\n offset_c = first_pos[1] - kc * block_size\n\n # Build prediction with this offset\n pred = [[0] * frame_w for _ in range(frame_h)]\n pred[0][0] = 4\n pred[0][frame_w - 1] = 4\n pred[frame_h - 1][0] = 4\n pred[frame_h - 1][frame_w - 1] = 4\n\n for kr2 in range(key_h):\n for kc2 in range(key_w):\n if key_grid[kr2][kc2] != 0:\n for dr in range(block_size):\n for dc in range(block_size):\n pr = offset_r + kr2 * block_size + dr\n pc = offset_c + kc2 * block_size + dc\n if 0 <= pr < frame_h and 0 <= pc < frame_w:\n pred[pr][pc] = key_grid[kr2][kc2]\n\n # Verify corners match\n if (pred[0][0] == 4 and pred[0][frame_w-1] == 4 and\n pred[frame_h-1][0] == 4 and pred[frame_h-1][frame_w-1] == 4):\n return pred\n\n return grid", "8e1813be": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n # Find 5-block\n five_cells = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == 5]\n if not five_cells:\n return grid\n\n min_r5 = min(r for r, c in five_cells)\n max_r5 = max(r for r, c in five_cells)\n min_c5 = min(c for r, c in five_cells)\n max_c5 = max(c for r, c in five_cells)\n block_h = max_r5 - min_r5 + 1\n block_w = max_c5 - min_c5 + 1\n\n # Find all unique non-0, non-5 colors\n colors = set()\n for r in range(rows):\n for c in range(cols):\n v = grid[r][c]\n if v not in (0, 5):\n colors.add(v)\n\n all_lines = []\n\n for color in colors:\n positions = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == color]\n row_set = set(r for r, c in positions)\n col_set = set(c for r, c in positions)\n\n if len(row_set) <= 2:\n avg_row = sum(row_set) / len(row_set)\n all_lines.append(('h', avg_row, color))\n elif len(col_set) <= 2:\n avg_col = sum(col_set) / len(col_set)\n all_lines.append(('v', avg_col, color))\n\n all_lines.sort(key=lambda x: x[1])\n\n h_only = [c for d, p, c in all_lines if d == 'h']\n v_only = [c for d, p, c in all_lines if d == 'v']\n\n if v_only and not h_only:\n return [[v_only[c] for c in range(len(v_only))] for _ in range(block_h)]\n elif h_only and not v_only:\n return [[h_only[r]] * block_w for r in range(len(h_only))]\n else:\n return [[h_only[r]] * block_w for r in range(len(h_only))]", "8eb1be9a": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n # Find non-zero rows\n nz_rows = [r for r in range(rows) if any(v != 0 for v in grid[r])]\n pattern = [grid[r] for r in nz_rows]\n ph = len(pattern)\n start = nz_rows[0]\n\n output = [[0] * cols for _ in range(rows)]\n for r in range(rows):\n idx = (r - start) % ph\n output[r] = pattern[idx][:]\n\n return output", "8efcae92": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n visited = [[False] * cols for _ in range(rows)]\n rects = []\n\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] != 0 and not visited[r][c]:\n queue = [(r, c)]\n visited[r][c] = True\n cells = [(r, c)]\n while queue:\n cr, cc = queue.pop(0)\n for dr, dc in [(-1, 0), (1, 0), (0, -1), (0, 1)]:\n nr, nc = cr + dr, cc + dc\n if 0 <= nr < rows and 0 <= nc < cols and not visited[nr][nc] and grid[nr][nc] != 0:\n visited[nr][nc] = True\n queue.append((nr, nc))\n cells.append((nr, nc))\n\n min_r = min(r for r, c in cells)\n max_r = max(r for r, c in cells)\n min_c = min(c for r, c in cells)\n max_c = max(c for r, c in cells)\n\n rect = []\n for rr in range(min_r, max_r + 1):\n row = []\n for cc in range(min_c, max_c + 1):\n row.append(grid[rr][cc])\n rect.append(row)\n\n twos = sum(1 for rr in rect for v in rr if v == 2)\n rects.append((rect, twos))\n\n rects.sort(key=lambda x: x[1], reverse=True)\n return rects[0][0]", "890034e9": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n from collections import Counter\n cnt = Counter(grid[r][c] for r in range(rows) for c in range(cols))\n\n for color in cnt:\n if color == 0:\n continue\n\n cells = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == color]\n if len(cells) < 8:\n continue\n\n min_r = min(r for r, c in cells)\n max_r = max(r for r, c in cells)\n min_c = min(c for r, c in cells)\n max_c = max(c for r, c in cells)\n h = max_r - min_r + 1\n w = max_c - min_c + 1\n\n if h < 3 or w < 3:\n continue\n\n is_border = True\n for c in range(min_c, max_c + 1):\n if grid[min_r][c] != color or grid[max_r][c] != color:\n is_border = False\n break\n if not is_border:\n continue\n\n for r in range(min_r, max_r + 1):\n if grid[r][min_c] != color or grid[r][max_c] != color:\n is_border = False\n break\n if not is_border:\n continue\n\n for r in range(min_r + 1, max_r):\n for c in range(min_c + 1, max_c):\n if grid[r][c] != 0:\n is_border = False\n break\n if not is_border:\n break\n if not is_border:\n continue\n\n rect_color = color\n rect_r, rect_c = min_r, min_c\n rect_h, rect_w = h, w\n\n output = [row[:] for row in grid]\n\n for sr in range(rows - rect_h + 1):\n for sc in range(cols - rect_w + 1):\n if sr == rect_r and sc == rect_c:\n continue\n\n all_zero = True\n for r in range(sr + 1, sr + rect_h - 1):\n for c in range(sc + 1, sc + rect_w - 1):\n if grid[r][c] != 0:\n all_zero = False\n break\n if not all_zero:\n break\n\n if all_zero:\n for r in range(rect_h):\n for c in range(rect_w):\n if grid[rect_r + r][rect_c + c] == rect_color:\n output[sr + r][sc + c] = rect_color\n return output\n\n return output\n\n return grid" }