File size: 18,253 Bytes
64614ac
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
{
  "80af3007": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    # Find bounding box of 5s\n    min_r = min_c = float('inf')\n    max_r = max_c = 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\n    h = max_r - min_r + 1\n    w = max_c - min_c + 1\n    ch = h // 3\n    cw = w // 3\n\n    # Build meta-grid\n    meta = [[0]*3 for _ in range(3)]\n    for mr in range(3):\n        for mc in range(3):\n            if grid[min_r + mr*ch][min_c + mc*cw] == 5:\n                meta[mr][mc] = 1\n\n    # Build output: fractal self-similarity\n    output = [[0]*9 for _ in range(9)]\n    for r in range(9):\n        for c in range(9):\n            if meta[r//3][c//3] and meta[r%3][c%3]:\n                output[r][c] = 5\n\n    return output",
  "83302e8f": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    from collections import Counter\n    cnt = Counter(grid[r][c] for r in range(rows) for c in range(cols))\n    line_color = max((c for c in cnt if c != 0), key=lambda c: cnt[c])\n\n    # Find grid line rows and columns\n    line_rows = []\n    for r in range(rows):\n        count = sum(1 for c in range(cols) if grid[r][c] == line_color)\n        if count > cols * 0.5:\n            line_rows.append(r)\n\n    line_cols = []\n    for c in range(cols):\n        count = sum(1 for r in range(rows) if grid[r][c] == line_color)\n        if count > rows * 0.5:\n            line_cols.append(c)\n\n    # Define cell boundaries\n    all_rows = [-1] + line_rows + [rows]\n    all_cols = [-1] + line_cols + [cols]\n\n    # First, determine fill color for each cell region\n    cell_colors = {}\n    for ri in range(len(all_rows) - 1):\n        for ci in range(len(all_cols) - 1):\n            r_start = all_rows[ri] + 1\n            r_end = all_rows[ri + 1]\n            c_start = all_cols[ci] + 1\n            c_end = all_cols[ci + 1]\n\n            if r_start >= r_end or c_start >= c_end:\n                continue\n\n            has_gap = False\n\n            if all_rows[ri] >= 0:\n                r = all_rows[ri]\n                for c in range(c_start, c_end):\n                    if grid[r][c] != line_color:\n                        has_gap = True\n                        break\n\n            if not has_gap and all_rows[ri + 1] < rows:\n                r = all_rows[ri + 1]\n                for c in range(c_start, c_end):\n                    if grid[r][c] != line_color:\n                        has_gap = True\n                        break\n\n            if not has_gap and all_cols[ci] >= 0:\n                c = all_cols[ci]\n                for r in range(r_start, r_end):\n                    if grid[r][c] != line_color:\n                        has_gap = True\n                        break\n\n            if not has_gap and all_cols[ci + 1] < cols:\n                c = all_cols[ci + 1]\n                for r in range(r_start, r_end):\n                    if grid[r][c] != line_color:\n                        has_gap = True\n                        break\n\n            fill_color = 4 if has_gap else 3\n            cell_colors[(ri, ci)] = fill_color\n\n    output = [row[:] for row in grid]\n\n    # Fill cell interiors\n    for (ri, ci), fill_color in cell_colors.items():\n        r_start = all_rows[ri] + 1\n        r_end = all_rows[ri + 1]\n        c_start = all_cols[ci] + 1\n        c_end = all_cols[ci + 1]\n\n        for r in range(r_start, r_end):\n            for c in range(c_start, c_end):\n                output[r][c] = fill_color\n\n    # Fill gap cells on lines with 4\n    for r in range(rows):\n        for c in range(cols):\n            if grid[r][c] == 0 and output[r][c] == 0:\n                output[r][c] = 4\n\n    return output",
  "855e0971": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n    out = [row[:] for row in grid]\n\n    # Check row-based bands (each row has one dominant color)\n    row_colors = []\n    for r in range(rows):\n        colors = set(grid[r]) - {0}\n        if len(colors) == 1:\n            row_colors.append(colors.pop())\n        else:\n            row_colors.append(None)\n\n    col_colors = []\n    for c in range(cols):\n        colors = set(grid[r][c] for r in range(rows)) - {0}\n        if len(colors) == 1:\n            col_colors.append(colors.pop())\n        else:\n            col_colors.append(None)\n\n    if all(c is not None for c in row_colors):\n        # Row-based bands\n        bands = []\n        i = 0\n        while i < rows:\n            color = row_colors[i]\n            j = i\n            while j < rows and row_colors[j] == color:\n                j += 1\n            bands.append((i, j, color))\n            i = j\n\n        for start, end, color in bands:\n            zeros = []\n            for r in range(start, end):\n                for c in range(cols):\n                    if grid[r][c] == 0:\n                        zeros.append((r, c))\n            for _, c in zeros:\n                for r in range(start, end):\n                    out[r][c] = 0\n        return out\n\n    if all(c is not None for c in col_colors):\n        # Column-based bands\n        bands = []\n        i = 0\n        while i < cols:\n            color = col_colors[i]\n            j = i\n            while j < cols and col_colors[j] == color:\n                j += 1\n            bands.append((i, j, color))\n            i = j\n\n        for start, end, color in bands:\n            zeros = []\n            for c in range(start, end):\n                for r in range(rows):\n                    if grid[r][c] == 0:\n                        zeros.append((r, c))\n            for r, _ in zeros:\n                for c in range(start, end):\n                    out[r][c] = 0\n        return out\n\n    return out",
  "8731374e": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    from collections import Counter\n\n    # Find all rectangular regions and pick the one with most uniform color\n    # We need to find the rectangle dimensions first by trying all possible sizes\n    # Actually, find the rectangle by looking for the largest rectangular area\n    # where cells are predominantly one color\n\n    # Strategy: try to find a rectangular region with high uniformity\n    # For each possible color, find the largest rectangle of that color\n\n    # Count all colors\n    all_colors = Counter(grid[r][c] for r in range(rows) for c in range(cols))\n\n    # Try each color as potential bg_color\n    best_rect = None\n    best_score = 0\n    best_bg = None\n\n    for bg_color in all_colors:\n        # Find contiguous rows/cols where this color appears frequently\n        # Scan for rectangular region\n        for sr in range(rows):\n            for sc in range(cols):\n                if grid[sr][sc] != bg_color:\n                    continue\n                # Try expanding from this point\n                for er in range(sr + 3, min(sr + 20, rows + 1)):\n                    for ec in range(sc + 3, min(sc + 20, cols + 1)):\n                        h = er - sr\n                        w = ec - sc\n                        count = sum(1 for r in range(sr, er) for c in range(sc, ec) if grid[r][c] == bg_color)\n                        total = h * w\n                        # Need high percentage (> 80%) and decent size\n                        if count > total * 0.8 and count > best_score and total >= 20:\n                            # Check that anomaly color is consistent\n                            anomaly_colors = set()\n                            for r in range(sr, er):\n                                for c in range(sc, ec):\n                                    if grid[r][c] != bg_color:\n                                        anomaly_colors.add(grid[r][c])\n                            if len(anomaly_colors) <= 1 and anomaly_colors:\n                                best_score = count\n                                best_rect = (sr, sc, er, ec)\n                                best_bg = bg_color\n\n    if best_rect is None:\n        return grid\n\n    sr, sc, er, ec = best_rect\n    oh = er - sr\n    ow = ec - sc\n    bg = best_bg\n\n    # Find anomalies\n    anomalies = []\n    fg = None\n    for r in range(sr, er):\n        for c in range(sc, ec):\n            if grid[r][c] != bg:\n                anomalies.append((r - sr, c - sc))\n                fg = grid[r][c]\n\n    if fg is None:\n        return [[bg]*ow for _ in range(oh)]\n\n    # Build output with row+col lines through anomaly positions\n    output = [[bg]*ow for _ in range(oh)]\n    for ar, ac in anomalies:\n        for c in range(ow):\n            output[ar][c] = fg\n        for r in range(oh):\n            output[r][ac] = fg\n\n    return output",
  "8a004b2b": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    # Find 4-corner positions\n    fours = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == 4]\n    min_r4 = min(r for r, c in fours)\n    max_r4 = max(r for r, c in fours)\n    min_c4 = min(c for r, c in fours)\n    max_c4 = max(c for r, c in fours)\n\n    frame_h = max_r4 - min_r4 + 1\n    frame_w = max_c4 - min_c4 + 1\n\n    # Get colored blocks inside frame\n    blocks = {}\n    for r in range(min_r4, max_r4 + 1):\n        for c in range(min_c4, max_c4 + 1):\n            v = grid[r][c]\n            if v not in (0, 4):\n                if v not in blocks:\n                    blocks[v] = []\n                blocks[v].append((r - min_r4, c - min_c4))\n\n    # Determine block_size\n    block_size = 1\n    for color, positions in blocks.items():\n        min_br = min(r for r, c in positions)\n        max_br = max(r for r, c in positions)\n        block_size = max(block_size, max_br - min_br + 1)\n        break\n\n    # Get key pattern (non-0, non-4 cells outside frame)\n    key_cells = []\n    for r in range(rows):\n        for c in range(cols):\n            v = grid[r][c]\n            if v != 0 and v != 4 and (r < min_r4 or r > max_r4 or c < min_c4 or c > max_c4):\n                key_cells.append((r, c, v))\n\n    if not key_cells:\n        return grid\n\n    min_kr = min(r for r, c, v in key_cells)\n    min_kc = min(c for r, c, v in key_cells)\n    max_kr = max(r for r, c, v in key_cells)\n    max_kc = max(c for r, c, v in key_cells)\n\n    key_h = max_kr - min_kr + 1\n    key_w = max_kc - min_kc + 1\n    key_grid = [[0] * key_w for _ in range(key_h)]\n    for r, c, v in key_cells:\n        key_grid[r - min_kr][c - min_kc] = v\n\n    # Find offset by matching first block position to key position\n    first_color = list(blocks.keys())[0]\n    first_pos = blocks[first_color][0]\n\n    for kr in range(key_h):\n        for kc in range(key_w):\n            if key_grid[kr][kc] == first_color:\n                offset_r = first_pos[0] - kr * block_size\n                offset_c = first_pos[1] - kc * block_size\n\n                # Build prediction with this offset\n                pred = [[0] * frame_w for _ in range(frame_h)]\n                pred[0][0] = 4\n                pred[0][frame_w - 1] = 4\n                pred[frame_h - 1][0] = 4\n                pred[frame_h - 1][frame_w - 1] = 4\n\n                for kr2 in range(key_h):\n                    for kc2 in range(key_w):\n                        if key_grid[kr2][kc2] != 0:\n                            for dr in range(block_size):\n                                for dc in range(block_size):\n                                    pr = offset_r + kr2 * block_size + dr\n                                    pc = offset_c + kc2 * block_size + dc\n                                    if 0 <= pr < frame_h and 0 <= pc < frame_w:\n                                        pred[pr][pc] = key_grid[kr2][kc2]\n\n                # Verify corners match\n                if (pred[0][0] == 4 and pred[0][frame_w-1] == 4 and\n                    pred[frame_h-1][0] == 4 and pred[frame_h-1][frame_w-1] == 4):\n                    return pred\n\n    return grid",
  "8e1813be": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    # Find 5-block\n    five_cells = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == 5]\n    if not five_cells:\n        return grid\n\n    min_r5 = min(r for r, c in five_cells)\n    max_r5 = max(r for r, c in five_cells)\n    min_c5 = min(c for r, c in five_cells)\n    max_c5 = max(c for r, c in five_cells)\n    block_h = max_r5 - min_r5 + 1\n    block_w = max_c5 - min_c5 + 1\n\n    # Find all unique non-0, non-5 colors\n    colors = set()\n    for r in range(rows):\n        for c in range(cols):\n            v = grid[r][c]\n            if v not in (0, 5):\n                colors.add(v)\n\n    all_lines = []\n\n    for color in colors:\n        positions = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == color]\n        row_set = set(r for r, c in positions)\n        col_set = set(c for r, c in positions)\n\n        if len(row_set) <= 2:\n            avg_row = sum(row_set) / len(row_set)\n            all_lines.append(('h', avg_row, color))\n        elif len(col_set) <= 2:\n            avg_col = sum(col_set) / len(col_set)\n            all_lines.append(('v', avg_col, color))\n\n    all_lines.sort(key=lambda x: x[1])\n\n    h_only = [c for d, p, c in all_lines if d == 'h']\n    v_only = [c for d, p, c in all_lines if d == 'v']\n\n    if v_only and not h_only:\n        return [[v_only[c] for c in range(len(v_only))] for _ in range(block_h)]\n    elif h_only and not v_only:\n        return [[h_only[r]] * block_w for r in range(len(h_only))]\n    else:\n        return [[h_only[r]] * block_w for r in range(len(h_only))]",
  "8eb1be9a": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    # Find non-zero rows\n    nz_rows = [r for r in range(rows) if any(v != 0 for v in grid[r])]\n    pattern = [grid[r] for r in nz_rows]\n    ph = len(pattern)\n    start = nz_rows[0]\n\n    output = [[0] * cols for _ in range(rows)]\n    for r in range(rows):\n        idx = (r - start) % ph\n        output[r] = pattern[idx][:]\n\n    return output",
  "8efcae92": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    visited = [[False] * cols for _ in range(rows)]\n    rects = []\n\n    for r in range(rows):\n        for c in range(cols):\n            if grid[r][c] != 0 and not visited[r][c]:\n                queue = [(r, c)]\n                visited[r][c] = True\n                cells = [(r, c)]\n                while queue:\n                    cr, cc = queue.pop(0)\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 not visited[nr][nc] and grid[nr][nc] != 0:\n                            visited[nr][nc] = True\n                            queue.append((nr, nc))\n                            cells.append((nr, nc))\n\n                min_r = min(r for r, c in cells)\n                max_r = max(r for r, c in cells)\n                min_c = min(c for r, c in cells)\n                max_c = max(c for r, c in cells)\n\n                rect = []\n                for rr in range(min_r, max_r + 1):\n                    row = []\n                    for cc in range(min_c, max_c + 1):\n                        row.append(grid[rr][cc])\n                    rect.append(row)\n\n                twos = sum(1 for rr in rect for v in rr if v == 2)\n                rects.append((rect, twos))\n\n    rects.sort(key=lambda x: x[1], reverse=True)\n    return rects[0][0]",
  "890034e9": "def solve(grid):\n    rows = len(grid)\n    cols = len(grid[0])\n\n    from collections import Counter\n    cnt = Counter(grid[r][c] for r in range(rows) for c in range(cols))\n\n    for color in cnt:\n        if color == 0:\n            continue\n\n        cells = [(r, c) for r in range(rows) for c in range(cols) if grid[r][c] == color]\n        if len(cells) < 8:\n            continue\n\n        min_r = min(r for r, c in cells)\n        max_r = max(r for r, c in cells)\n        min_c = min(c for r, c in cells)\n        max_c = max(c for r, c in cells)\n        h = max_r - min_r + 1\n        w = max_c - min_c + 1\n\n        if h < 3 or w < 3:\n            continue\n\n        is_border = True\n        for c in range(min_c, max_c + 1):\n            if grid[min_r][c] != color or grid[max_r][c] != color:\n                is_border = False\n                break\n        if not is_border:\n            continue\n\n        for r in range(min_r, max_r + 1):\n            if grid[r][min_c] != color or grid[r][max_c] != color:\n                is_border = False\n                break\n        if not is_border:\n            continue\n\n        for r in range(min_r + 1, max_r):\n            for c in range(min_c + 1, max_c):\n                if grid[r][c] != 0:\n                    is_border = False\n                    break\n            if not is_border:\n                break\n        if not is_border:\n            continue\n\n        rect_color = color\n        rect_r, rect_c = min_r, min_c\n        rect_h, rect_w = h, w\n\n        output = [row[:] for row in grid]\n\n        for sr in range(rows - rect_h + 1):\n            for sc in range(cols - rect_w + 1):\n                if sr == rect_r and sc == rect_c:\n                    continue\n\n                all_zero = True\n                for r in range(sr + 1, sr + rect_h - 1):\n                    for c in range(sc + 1, sc + rect_w - 1):\n                        if grid[r][c] != 0:\n                            all_zero = False\n                            break\n                    if not all_zero:\n                        break\n\n                if all_zero:\n                    for r in range(rect_h):\n                        for c in range(rect_w):\n                            if grid[rect_r + r][rect_c + c] == rect_color:\n                                output[sr + r][sc + c] = rect_color\n                    return output\n\n        return output\n\n    return grid"
}