| { | |
| "d0f5fe59": "def solve(grid):\n rows, cols = len(grid), len(grid[0])\n visited = set()\n count = 0\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] == 8 and (r,c) not in visited:\n count += 1\n stack = [(r,c)]\n while stack:\n cr, cc = stack.pop()\n if (cr,cc) in visited:\n continue\n visited.add((cr,cc))\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 grid[nr][nc]==8 and (nr,nc) not in visited:\n stack.append((nr,nc))\n return [[8 if i==j else 0 for j in range(count)] for i in range(count)]", | |
| "dc0a314f": "def solve(grid):\n rows, cols = len(grid), len(grid[0])\n cr, cc = (rows-1)/2.0, (cols-1)/2.0\n threes = [(r,c) for r in range(rows) for c in range(cols) if grid[r][c] == 3]\n min_r = min(r for r,c in threes)\n max_r = max(r for r,c in threes)\n min_c = min(c for r,c in threes)\n max_c = max(c for r,c in threes)\n output = []\n for r in range(min_r, max_r+1):\n row = []\n for c in range(min_c, max_c+1):\n sr, sc = round(2*cr - r), round(2*cc - c)\n row.append(grid[sr][sc])\n output.append(row)\n return output", | |
| "de1cd16c": "def solve(grid):\n from collections import defaultdict\n rows, cols = len(grid), len(grid[0])\n colors = set()\n for r in range(rows):\n for c in range(cols):\n colors.add(grid[r][c])\n visited = set()\n components = []\n for r in range(rows):\n for c in range(cols):\n if (r,c) not in visited:\n color = grid[r][c]\n cells = []\n stack = [(r,c)]\n while stack:\n cr, cc = stack.pop()\n if (cr,cc) in visited:\n continue\n visited.add((cr,cc))\n cells.append((cr, cc))\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 grid[nr][nc]==color and (nr,nc) not in visited:\n stack.append((nr,nc))\n components.append((color, len(cells), cells))\n color_total = defaultdict(int)\n for color, size, cells in components:\n color_total[color] += size\n noise_color = min(colors, key=lambda c: color_total[c])\n bg_regions = []\n seen_bg = set()\n for color in colors:\n if color == noise_color or color in seen_bg:\n continue\n seen_bg.add(color)\n all_cells = []\n for c2, s2, cells2 in components:\n if c2 == color:\n all_cells.extend(cells2)\n min_r = min(r for r,c in all_cells)\n max_r = max(r for r,c in all_cells)\n min_c = min(c for r,c in all_cells)\n max_c = max(c for r,c in all_cells)\n noise_count = 0\n for r in range(min_r, max_r+1):\n for c in range(min_c, max_c+1):\n if grid[r][c] == noise_color:\n noise_count += 1\n bg_regions.append((color, noise_count))\n bg_regions.sort(key=lambda x: -x[1])\n return [[bg_regions[0][0]]]", | |
| "e26a3af2": "def solve(grid):\n from collections import Counter\n rows, cols = len(grid), len(grid[0])\n col_colors = []\n col_agree = 0\n for c in range(cols):\n vals = [grid[r][c] for r in range(rows)]\n maj = Counter(vals).most_common(1)[0][0]\n col_colors.append(maj)\n col_agree += sum(1 for r in range(rows) if grid[r][c] == maj)\n row_colors = []\n row_agree = 0\n for r in range(rows):\n maj = Counter(grid[r]).most_common(1)[0][0]\n row_colors.append(maj)\n row_agree += sum(1 for c in range(cols) if grid[r][c] == maj)\n if col_agree >= row_agree:\n return [[col_colors[c] for c in range(cols)] for r in range(rows)]\n else:\n return [[row_colors[r] for c in range(cols)] for r in range(rows)]", | |
| "e509e548": "def solve(grid):\n rows, cols = len(grid), len(grid[0])\n output = [row[:] for row in grid]\n visited = set()\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] == 3 and (r,c) not in visited:\n cells = []\n stack = [(r,c)]\n while stack:\n cr, cc = stack.pop()\n if (cr,cc) in visited:\n continue\n visited.add((cr,cc))\n cells.append((cr, cc))\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 grid[nr][nc]==3 and (nr,nc) not in visited:\n stack.append((nr,nc))\n cell_set = set(cells)\n corners = 0\n t_junctions = 0\n for cr2, cc2 in cells:\n neighbors = [(cr2+dr,cc2+dc) for dr,dc in [(-1,0),(1,0),(0,-1),(0,1)] if (cr2+dr,cc2+dc) in cell_set]\n if len(neighbors) == 2:\n (r1,c1), (r2,c2) = neighbors\n if r1 != r2 and c1 != c2:\n corners += 1\n elif len(neighbors) == 3:\n t_junctions += 1\n if t_junctions >= 1:\n color = 2\n elif corners >= 2:\n color = 6\n else:\n color = 1\n for cr2, cc2 in cells:\n output[cr2][cc2] = color\n return output", | |
| "e6721834": "def solve(grid):\n from collections import Counter, defaultdict\n rows, cols = len(grid), len(grid[0])\n v_split = None\n for c in range(1, cols):\n all_diff = True\n for r in range(rows):\n if grid[r][c-1] == grid[r][c]:\n all_diff = False\n break\n if all_diff:\n v_split = c\n break\n h_split = None\n for r in range(1, rows):\n all_diff = True\n for c in range(cols):\n if grid[r-1][c] == grid[r][c]:\n all_diff = False\n break\n if all_diff:\n h_split = r\n break\n if h_split is not None:\n half1_bg = Counter(grid[0]).most_common(1)[0][0]\n half2_bg = Counter(grid[h_split]).most_common(1)[0][0]\n half1_nonbg = sum(1 for r in range(h_split) for c in range(cols) if grid[r][c] != half1_bg)\n half2_nonbg = sum(1 for r in range(h_split, rows) for c in range(cols) if grid[r][c] != half2_bg)\n if half1_nonbg > half2_nonbg:\n pat_r_range = (0, h_split)\n pat_bg = half1_bg\n mark_r_range = (h_split, rows)\n mark_bg = half2_bg\n else:\n pat_r_range = (h_split, rows)\n pat_bg = half2_bg\n mark_r_range = (0, h_split)\n mark_bg = half1_bg\n out_rows = mark_r_range[1] - mark_r_range[0]\n out_cols = cols\n output = [[mark_bg]*out_cols for _ in range(out_rows)]\n visited = set()\n patterns = []\n for r in range(pat_r_range[0], pat_r_range[1]):\n for c in range(cols):\n if grid[r][c] != pat_bg and (r,c) not in visited:\n cells = []\n stack = [(r,c)]\n while stack:\n cr, cc = stack.pop()\n if (cr,cc) in visited: continue\n visited.add((cr,cc))\n cells.append((cr,cc))\n for dr,dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n nr, nc = cr+dr, cc+dc\n if pat_r_range[0]<=nr<pat_r_range[1] and 0<=nc<cols and grid[nr][nc]!=pat_bg and (nr,nc) not in visited:\n stack.append((nr,nc))\n patterns.append(cells)\n markers = []\n for r in range(mark_r_range[0], mark_r_range[1]):\n for c in range(cols):\n if grid[r][c] != mark_bg:\n markers.append((r - mark_r_range[0], c, grid[r][c]))\n markers_by_color = defaultdict(list)\n for mr, mc, mcolor in markers:\n markers_by_color[mcolor].append((mr, mc))\n for pat in patterns:\n pat_marker_cells = []\n for r, c in pat:\n color = grid[r][c]\n if color in markers_by_color:\n pat_marker_cells.append((r, c, color))\n if not pat_marker_cells: continue\n pat_markers_by_color = defaultdict(list)\n for r, c, color in pat_marker_cells:\n pat_markers_by_color[color].append((r, c))\n for mcolor, mark_positions in markers_by_color.items():\n if mcolor not in pat_markers_by_color: continue\n pat_positions = pat_markers_by_color[mcolor]\n if len(mark_positions) == len(pat_positions):\n mark_sorted = sorted(mark_positions)\n pat_sorted = sorted(pat_positions)\n dr = mark_sorted[0][0] - (pat_sorted[0][0] - pat_r_range[0])\n dc = mark_sorted[0][1] - pat_sorted[0][1]\n match = True\n for k in range(1, len(mark_sorted)):\n expected_r = pat_sorted[k][0] - pat_r_range[0] + dr\n expected_c = pat_sorted[k][1] + dc\n if (expected_r, expected_c) != mark_sorted[k]:\n match = False\n break\n if match:\n for pr, pc in pat:\n nr = pr - pat_r_range[0] + dr\n nc = pc + dc\n if 0 <= nr < out_rows and 0 <= nc < out_cols:\n output[nr][nc] = grid[pr][pc]\n break\n return output\n else:\n half1_bg = Counter(grid[r][0] for r in range(rows)).most_common(1)[0][0]\n half2_bg = Counter(grid[r][v_split] for r in range(rows)).most_common(1)[0][0]\n half1_nonbg = sum(1 for r in range(rows) for c in range(v_split) if grid[r][c] != half1_bg)\n half2_nonbg = sum(1 for r in range(rows) for c in range(v_split, cols) if grid[r][c] != half2_bg)\n if half1_nonbg > half2_nonbg:\n pat_c_range = (0, v_split)\n pat_bg = half1_bg\n mark_c_range = (v_split, cols)\n mark_bg = half2_bg\n else:\n pat_c_range = (v_split, cols)\n pat_bg = half2_bg\n mark_c_range = (0, v_split)\n mark_bg = half1_bg\n out_rows = rows\n out_cols = mark_c_range[1] - mark_c_range[0]\n output = [[mark_bg]*out_cols for _ in range(out_rows)]\n visited = set()\n patterns = []\n for r in range(rows):\n for c in range(pat_c_range[0], pat_c_range[1]):\n if grid[r][c] != pat_bg and (r,c) not in visited:\n cells = []\n stack = [(r,c)]\n while stack:\n cr, cc = stack.pop()\n if (cr,cc) in visited: continue\n visited.add((cr,cc))\n cells.append((cr,cc))\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 pat_c_range[0]<=nc<pat_c_range[1] and grid[nr][nc]!=pat_bg and (nr,nc) not in visited:\n stack.append((nr,nc))\n patterns.append(cells)\n markers = []\n for r in range(rows):\n for c in range(mark_c_range[0], mark_c_range[1]):\n if grid[r][c] != mark_bg:\n markers.append((r, c - mark_c_range[0], grid[r][c]))\n markers_by_color = defaultdict(list)\n for mr, mc, mcolor in markers:\n markers_by_color[mcolor].append((mr, mc))\n for pat in patterns:\n pat_marker_cells = []\n for r, c in pat:\n color = grid[r][c]\n if color in markers_by_color:\n pat_marker_cells.append((r, c, color))\n if not pat_marker_cells: continue\n pat_markers_by_color = defaultdict(list)\n for r, c, color in pat_marker_cells:\n pat_markers_by_color[color].append((r, c))\n for mcolor, mark_positions in markers_by_color.items():\n if mcolor not in pat_markers_by_color: continue\n pat_positions = pat_markers_by_color[mcolor]\n if len(mark_positions) == len(pat_positions):\n mark_sorted = sorted(mark_positions)\n pat_sorted = sorted(pat_positions)\n dr = mark_sorted[0][0] - pat_sorted[0][0]\n dc = mark_sorted[0][1] - (pat_sorted[0][1] - pat_c_range[0])\n match = True\n for k in range(1, len(mark_sorted)):\n expected_r = pat_sorted[k][0] + dr\n expected_c = pat_sorted[k][1] - pat_c_range[0] + dc\n if (expected_r, expected_c) != mark_sorted[k]:\n match = False\n break\n if match:\n for pr, pc in pat:\n nr = pr + dr\n nc = (pc - pat_c_range[0]) + dc\n if 0 <= nr < out_rows and 0 <= nc < out_cols:\n output[nr][nc] = grid[pr][pc]\n break\n return output", | |
| "e73095fd": "def solve(grid):\n rows, cols = len(grid), len(grid[0])\n output = [row[:] for row in grid]\n fives = set()\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] == 5:\n fives.add((r,c))\n for r1 in range(rows):\n for r2 in range(r1+2, rows):\n for c1 in range(cols):\n for c2 in range(c1+2, cols):\n top_ok = all((r1, c) in fives for c in range(c1, c2+1))\n if not top_ok: continue\n bot_ok = all((r2, c) in fives for c in range(c1, c2+1))\n if not bot_ok: continue\n left_ok = all((r, c1) in fives for r in range(r1, r2+1))\n if not left_ok: continue\n right_ok = all((r, c2) in fives for r in range(r1, r2+1))\n if not right_ok: continue\n for r in range(r1+1, r2):\n for c in range(c1+1, c2):\n if output[r][c] == 0:\n output[r][c] = 4\n c = cols - 1\n for r1 in range(rows):\n if (r1, c) not in fives: continue\n for r2 in range(r1+2, rows):\n if (r2, c) not in fives: continue\n if not all((r, c-1) in fives for r in range(r1, r2+1)): continue\n if all(grid[r][c] == 0 for r in range(r1+1, r2)):\n for r in range(r1+1, r2):\n output[r][c] = 4\n c = 0\n for r1 in range(rows):\n if (r1, c) not in fives: continue\n for r2 in range(r1+2, rows):\n if (r2, c) not in fives: continue\n if not all((r, c+1) in fives for r in range(r1, r2+1)): continue\n if all(grid[r][c] == 0 for r in range(r1+1, r2)):\n for r in range(r1+1, r2):\n output[r][c] = 4\n r = 0\n for c1 in range(cols):\n if (r, c1) not in fives: continue\n for c2 in range(c1+2, cols):\n if (r, c2) not in fives: continue\n if not all((r+1, c) in fives for c in range(c1, c2+1)): continue\n if all(grid[r][c] == 0 for c in range(c1+1, c2)):\n for c in range(c1+1, c2):\n output[r][c] = 4\n r = rows - 1\n for c1 in range(cols):\n if (r, c1) not in fives: continue\n for c2 in range(c1+2, cols):\n if (r, c2) not in fives: continue\n if not all((r-1, c) in fives for c in range(c1, c2+1)): continue\n if all(grid[r][c] == 0 for c in range(c1+1, c2)):\n for c in range(c1+1, c2):\n output[r][c] = 4\n changed = True\n while changed:\n changed = False\n for r in range(rows):\n for c in range(cols):\n if output[r][c] == 0:\n enclosed = True\n for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n nr, nc = r+dr, c+dc\n if 0 <= nr < rows and 0 <= nc < cols:\n if output[nr][nc] == 0:\n enclosed = False\n break\n if enclosed:\n output[r][c] = 4\n changed = True\n return output", | |
| "eb281b96": "def solve(grid):\n n = len(grid)\n out_rows = 4*n - 3\n period = list(range(n)) + list(range(n-2, 0, -1))\n indices = []\n while len(indices) < out_rows:\n indices.extend(period)\n indices = indices[:out_rows]\n return [grid[i][:] for i in indices]" | |
| } |