File size: 8,483 Bytes
4d05d5c
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
{
  "2dee498d": "def solve(grid):\n    from collections import Counter\n    h, w = len(grid), len(grid[0])\n    n = 3\n    tw = w // n\n    out = [[0]*tw for _ in range(h)]\n    for r in range(h):\n        for c in range(tw):\n            vals = [grid[r][j*tw + c] for j in range(n)]\n            cnt = Counter(vals)\n            out[r][c] = cnt.most_common(1)[0][0]\n    return out",
  "31aa019c": "def solve(grid):\n    from collections import Counter\n    h, w = len(grid), len(grid[0])\n    counts = Counter()\n    for r in range(h):\n        for c in range(w):\n            if grid[r][c] != 0:\n                counts[grid[r][c]] += 1\n    unique_pos = None\n    unique_color = None\n    for r in range(h):\n        for c in range(w):\n            v = grid[r][c]\n            if v != 0 and counts[v] == 1:\n                unique_color = v\n                unique_pos = (r, c)\n    out = [[0]*w for _ in range(h)]\n    if unique_pos:\n        ur, uc = unique_pos\n        out[ur][uc] = unique_color\n        for dr in [-1, 0, 1]:\n            for dc in [-1, 0, 1]:\n                nr, nc = ur+dr, uc+dc\n                if 0 <= nr < h and 0 <= nc < w and (dr != 0 or dc != 0):\n                    out[nr][nc] = 2\n    return out",
  "321b1fc6": "def solve(grid):\n    h, w = len(grid), len(grid[0])\n    visited = [[False]*w for _ in range(h)]\n    def flood(r, c):\n        cells = []\n        stack = [(r, c)]\n        while stack:\n            cr, cc = stack.pop()\n            if 0 <= cr < h and 0 <= cc < w and not visited[cr][cc] and grid[cr][cc] == 8:\n                visited[cr][cc] = True\n                cells.append((cr, cc))\n                for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n                    stack.append((cr+dr, cc+dc))\n        return cells\n    eight_groups = []\n    for r in range(h):\n        for c in range(w):\n            if grid[r][c] == 8 and not visited[r][c]:\n                eight_groups.append(flood(r, c))\n    template_cells = [(r, c, grid[r][c]) for r in range(h) for c in range(w) if grid[r][c] != 0 and grid[r][c] != 8]\n    template_norm = {}\n    if template_cells:\n        min_r = min(r for r, c, v in template_cells)\n        min_c = min(c for r, c, v in template_cells)\n        template_norm = {(r - min_r, c - min_c): v for r, c, v in template_cells}\n    out = [[0]*w for _ in range(h)]\n    for group in eight_groups:\n        min_r = min(r for r, c in group)\n        min_c = min(c for r, c in group)\n        for r, c in group:\n            dr, dc = r - min_r, c - min_c\n            if (dr, dc) in template_norm:\n                out[r][c] = template_norm[(dr, dc)]\n    return out",
  "3618c87e": "def solve(grid):\n    h, w = len(grid), len(grid[0])\n    out = [row[:] for row in grid]\n    for c in range(w):\n        for r in range(h):\n            if grid[r][c] == 1:\n                out[r][c] = 0\n                out[h-1][c] = 1\n    return out",
  "363442ee": "def solve(grid):\n    h, w = len(grid), len(grid[0])\n    out = [row[:] for row in grid]\n    pattern = [grid[r][:3] for r in range(3)]\n    for r in range(h):\n        for c in range(4, w):\n            if grid[r][c] == 1:\n                br = (r // 3) * 3\n                bc = ((c - 4) // 3) * 3 + 4\n                for dr in range(3):\n                    for dc in range(3):\n                        out[br + dr][bc + dc] = pattern[dr][dc]\n    return out",
  "36d67576": "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    def flood4(r, c):\n        cells = []\n        stack = [(r, c)]\n        while stack:\n            cr, cc = stack.pop()\n            if 0 <= cr < h and 0 <= cc < w and not visited[cr][cc] and grid[cr][cc] == 4:\n                visited[cr][cc] = True\n                cells.append((cr, cc))\n                for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n                    stack.append((cr+dr, cc+dc))\n        return cells\n    groups = []\n    for r in range(h):\n        for c in range(w):\n            if grid[r][c] == 4 and not visited[r][c]:\n                groups.append(sorted(flood4(r, c)))\n    template_idx = None\n    for gi, g in enumerate(groups):\n        for r, c in g:\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 and grid[nr][nc] in (1, 3):\n                        template_idx = gi\n                        break\n                if template_idx is not None: break\n            if template_idx is not None: break\n        if template_idx is not None: break\n    def find_adj_2(g):\n        for r, c in g:\n            for dr, dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n                nr, nc = r+dr, c+dc\n                if 0 <= nr < h and 0 <= nc < w and grid[nr][nc] == 2:\n                    return (nr, nc)\n        return None\n    tg = groups[template_idx]\n    t2 = find_adj_2(tg)\n    t_rel = tuple(sorted((r - t2[0], c - t2[1]) for r, c in tg))\n    t_decos = []\n    for r in range(h):\n        for c in range(w):\n            if grid[r][c] in (1, 3):\n                if any(abs(r-gr) <= 2 and abs(c-gc) <= 2 for gr, gc in tg):\n                    t_decos.append((r - t2[0], c - t2[1], grid[r][c]))\n    transforms = [\n        lambda r,c: (r,c), lambda r,c: (c,-r), lambda r,c: (-r,-c), lambda r,c: (-c,r),\n        lambda r,c: (r,-c), lambda r,c: (-r,c), lambda r,c: (c,r), lambda r,c: (-c,-r),\n    ]\n    for gi, g in enumerate(groups):\n        if gi == template_idx: continue\n        g2 = find_adj_2(g)\n        g_rel = tuple(sorted((r - g2[0], c - g2[1]) for r, c in g))\n        for fn in transforms:\n            transformed = tuple(sorted(fn(r,c) for r,c in t_rel))\n            if transformed == g_rel:\n                for dr, dc, v in t_decos:\n                    nr, nc = fn(dr, dc)\n                    ar, ac = nr + g2[0], nc + g2[1]\n                    if 0 <= ar < h and 0 <= ac < w:\n                        out[ar][ac] = v\n                break\n    return out",
  "39a8645d": "def solve(grid):\n    from collections import defaultdict\n    h, w = len(grid), len(grid[0])\n    visited = [[False]*w for _ in range(h)]\n    color_groups = defaultdict(list)\n    def flood(r, c, color):\n        cells = []\n        stack = [(r, c)]\n        while stack:\n            cr, cc = stack.pop()\n            if 0 <= cr < h and 0 <= cc < w and not visited[cr][cc] and grid[cr][cc] == color:\n                visited[cr][cc] = True\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                    stack.append((cr+dr, cc+dc))\n        return cells\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                color_groups[color].append(flood(r, c, color))\n    best_color = max(color_groups.keys(), key=lambda c: len(color_groups[c]))\n    g = color_groups[best_color][0]\n    mr = min(r for r, c in g)\n    mc = min(c for r, c in g)\n    max_r = max(r for r, c in g) - mr\n    max_c = max(c for r, c in g) - mc\n    out = [[0]*(max_c+1) for _ in range(max_r+1)]\n    for r, c in g:\n        out[r-mr][c-mc] = best_color\n    return out",
  "3ac3eb23": "def solve(grid):\n    h, w = len(grid), len(grid[0])\n    out = [row[:] for row in grid]\n    for c0 in range(w):\n        if grid[0][c0] != 0:\n            color = grid[0][c0]\n            for r in range(h):\n                if r % 2 == 0:\n                    out[r][c0] = color\n                else:\n                    if c0 - 1 >= 0:\n                        out[r][c0 - 1] = color\n                    if c0 + 1 < w:\n                        out[r][c0 + 1] = color\n    return out",
  "3af2c5a8": "def solve(grid):\n    h, w = len(grid), len(grid[0])\n    out = [[0]*(2*w) for _ in range(2*h)]\n    for r in range(h):\n        for c in range(w):\n            out[r][c] = grid[r][c]\n            out[r][2*w-1-c] = grid[r][c]\n            out[2*h-1-r][c] = grid[r][c]\n            out[2*h-1-r][2*w-1-c] = grid[r][c]\n    return out",
  "3bd67248": "def solve(grid):\n    h, w = len(grid), len(grid[0])\n    out = [row[:] for row in grid]\n    for r in range(h - 1):\n        c = w - 1 - r\n        if c > 0:\n            out[r][c] = 2\n    for c in range(1, w):\n        out[h-1][c] = 4\n    return out"
}