File size: 9,150 Bytes
ecaa927
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
{
  "25ff71a9": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    out = [[0]*cols for _ in range(rows)]\n    for r in range(rows):\n        for c in range(cols):\n            if grid[r][c] != 0:\n                nr = r + 1\n                if nr < rows:\n                    out[nr][c] = grid[r][c]\n    return out",
  "27a28665": "def solve(grid):\n    def canonical(pattern):\n        def rotate90(m):\n            n = len(m)\n            return [[m[n-1-c][r] for c in range(n)] for r in range(n)]\n        def flip(m):\n            return [row[::-1] for row in m]\n        forms = []\n        m = [row[:] for row in pattern]\n        for _ in range(4):\n            forms.append(tuple(tuple(r) for r in m))\n            forms.append(tuple(tuple(r) for r in flip(m)))\n            m = rotate90(m)\n        return min(forms)\n    lookup = {\n        ((0, 1, 0), (1, 0, 1), (0, 1, 1)): 1,\n        ((1, 0, 1), (0, 1, 0), (1, 0, 1)): 2,\n        ((0, 0, 1), (1, 1, 0), (1, 1, 0)): 3,\n        ((0, 1, 0), (1, 1, 1), (0, 1, 0)): 6,\n    }\n    binary = [[1 if grid[r][c]!=0 else 0 for c in range(3)] for r in range(3)]\n    key = canonical(binary)\n    return [[lookup[key]]]",
  "28bf18c6": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    min_r, max_r, min_c, max_c = rows, 0, cols, 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    shape = []\n    for r in range(min_r, max_r+1):\n        row = []\n        for c in range(min_c, max_c+1):\n            row.append(grid[r][c])\n        shape.append(row)\n    result = []\n    for row in shape:\n        result.append(row + row)\n    return result",
  "28e73c20": "def solve(grid):\n    n = len(grid)\n    out = [[0]*n for _ in range(n)]\n    for layer in range(0, (n+1)//2):\n        if layer % 2 == 0:\n            top = layer; bot = n-1-layer; left = layer; right = n-1-layer\n            for c in range(left, right+1): out[top][c] = 3\n            for r in range(top, bot+1): out[r][right] = 3\n            for c in range(left, right+1): out[bot][c] = 3\n            for r in range(top, bot+1): out[r][left] = 3\n    num_flips = n//2 if n % 4 != 2 else n//2 - 1\n    for d in range(num_flips):\n        r, c = d+1, d\n        out[r][c] = 0 if out[r][c] == 3 else 3\n    return out",
  "29623171": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    div_rows = set(r for r in range(rows) if all(v == 5 for v in grid[r]))\n    div_cols = set(c for c in range(cols) if all(grid[r][c] == 5 for r in range(rows)))\n    row_bounds = [0] + sorted([r+1 for r in div_rows]) + [rows]\n    col_bounds = [0] + sorted([c+1 for c in div_cols]) + [cols]\n    sections = {}\n    color = 0\n    for si in range(len(row_bounds)-1):\n        for sj in range(len(col_bounds)-1):\n            r1, r2 = row_bounds[si], row_bounds[si+1]\n            c1, c2 = col_bounds[sj], col_bounds[sj+1]\n            count = 0\n            for r in range(r1, r2):\n                for c in range(c1, c2):\n                    if grid[r][c] != 0 and grid[r][c] != 5:\n                        count += 1\n                        color = grid[r][c]\n            sections[(si,sj)] = (count, r1, r2, c1, c2)\n    max_count = max(v[0] for v in sections.values())\n    out = [[0]*cols for _ in range(rows)]\n    for r in div_rows:\n        for c in range(cols):\n            out[r][c] = 5\n    for c in div_cols:\n        for r in range(rows):\n            out[r][c] = 5\n    for k, (count, r1, r2, c1, c2) in sections.items():\n        if count == max_count:\n            for r in range(r1, r2):\n                for c in range(c1, c2):\n                    if r not in div_rows and c not in div_cols:\n                        out[r][c] = color\n    return out",
  "29c11459": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    out = [row[:] for row in grid]\n    for r in range(rows):\n        nonzero = [(c, grid[r][c]) for c in range(cols) if grid[r][c] != 0]\n        if len(nonzero) == 2:\n            (c1, v1), (c2, v2) = nonzero\n            mid = (c1 + c2) // 2\n            for c in range(c1, mid):\n                out[r][c] = v1\n            out[r][mid] = 5\n            for c in range(mid+1, c2+1):\n                out[r][c] = v2\n    return out",
  "2bcee788": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    twos = []\n    shape_cells = []\n    shape_color = 0\n    for r in range(rows):\n        for c in range(cols):\n            if grid[r][c] == 2:\n                twos.append((r,c))\n            elif grid[r][c] != 0:\n                shape_cells.append((r,c))\n                shape_color = grid[r][c]\n    out = [[3]*cols for _ in range(rows)]\n    for r,c in shape_cells:\n        out[r][c] = shape_color\n    if len(twos) == 1 or all(r == twos[0][0] for r,c in twos):\n        two_r = twos[0][0]\n        shape_rows = [r for r,c in shape_cells]\n        if two_r > max(shape_rows):\n            mirror = (max(shape_rows) + two_r) / 2.0\n        else:\n            mirror = (min(shape_rows) + two_r) / 2.0\n        for r,c in shape_cells:\n            nr = int(2 * mirror - r)\n            if 0 <= nr < rows:\n                out[nr][c] = shape_color\n    else:\n        two_c = twos[0][1]\n        shape_cols = [c for r,c in shape_cells]\n        if two_c > max(shape_cols):\n            mirror = (max(shape_cols) + two_c) / 2.0\n        else:\n            mirror = (min(shape_cols) + two_c) / 2.0\n        for r,c in shape_cells:\n            nc = int(2 * mirror - c)\n            if 0 <= nc < cols:\n                out[r][nc] = shape_color\n    return out",
  "2bee17df": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    row_zeros = [sum(1 for v in grid[r] if v == 0) for r in range(rows)]\n    col_zeros = [sum(1 for r in range(rows) if grid[r][c] == 0) for c in range(cols)]\n    max_rz = max(row_zeros)\n    max_cz = max(col_zeros)\n    max_rows = set(r for r in range(rows) if row_zeros[r] == max_rz)\n    max_cols = set(c for c in range(cols) if col_zeros[c] == max_cz)\n    out = [row[:] for row in grid]\n    for r in max_rows:\n        for c in range(cols):\n            if grid[r][c] == 0:\n                out[r][c] = 3\n    for c in max_cols:\n        for r in range(rows):\n            if grid[r][c] == 0:\n                out[r][c] = 3\n    return out",
  "2c608aff": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    from collections import Counter\n    flat = [v for row in grid for v in row]\n    bg = Counter(flat).most_common(1)[0][0]\n    non_bg = {}\n    for r in range(rows):\n        for c in range(cols):\n            if grid[r][c] != bg:\n                non_bg.setdefault(grid[r][c], []).append((r,c))\n    rect_color = max(non_bg, key=lambda k: len(non_bg[k]))\n    rect_cells = non_bg[rect_color]\n    rect_r1 = min(r for r,c in rect_cells)\n    rect_r2 = max(r for r,c in rect_cells)\n    rect_c1 = min(c for r,c in rect_cells)\n    rect_c2 = max(c for r,c in rect_cells)\n    out = [row[:] for row in grid]\n    for color, cells in non_bg.items():\n        if color == rect_color:\n            continue\n        for r, c in cells:\n            in_row = rect_r1 <= r <= rect_r2\n            in_col = rect_c1 <= c <= rect_c2\n            if in_row and not in_col:\n                if c > rect_c2:\n                    for cc in range(rect_c2 + 1, c + 1):\n                        out[r][cc] = color\n                else:\n                    for cc in range(c, rect_c1):\n                        out[r][cc] = color\n            elif in_col and not in_row:\n                if r > rect_r2:\n                    for rr in range(rect_r2 + 1, r + 1):\n                        out[rr][c] = color\n                elif r < rect_r1:\n                    for rr in range(r, rect_r1):\n                        out[rr][c] = color\n    return out",
  "2dc579da": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    bg = grid[0][0]\n    div_row = None\n    div_col = None\n    div_color = None\n    for r in range(rows):\n        vals = set(grid[r][c] for c in range(cols))\n        if len(vals) == 1 and grid[r][0] != bg:\n            div_row = r\n            div_color = grid[r][0]\n            break\n    for c in range(cols):\n        vals = set(grid[r][c] for r in range(rows))\n        if len(vals) == 1 and grid[0][c] != bg:\n            div_col = c\n            break\n    quads = [\n        (0, div_row, 0, div_col),\n        (0, div_row, div_col+1, cols),\n        (div_row+1, rows, 0, div_col),\n        (div_row+1, rows, div_col+1, cols),\n    ]\n    for r1, r2, c1, c2 in quads:\n        has_anomaly = False\n        for r in range(r1, r2):\n            for c in range(c1, c2):\n                if grid[r][c] != bg and grid[r][c] != div_color:\n                    has_anomaly = True\n        if has_anomaly:\n            return [[grid[r][c] for c in range(c1, c2)] for r in range(r1, r2)]\n    return grid"
}