File size: 8,333 Bytes
0e1abf4
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
{
  "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"
}