{ "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= 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= 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 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