h4-polytopic-attention / data /arc_python_solutions_b27.json
grapheneaffiliates's picture
Upload data/arc_python_solutions_b27.json with huggingface_hub
ab2cbda verified
{
"469497ad": "def solve(grid):\n main = [row[:4] for row in grid[:4]]\n border_col = [grid[r][4] for r in range(4)]\n border_row = grid[4][:4]\n corner = grid[4][4]\n\n border_colors = set(border_col + border_row + [corner])\n scale = len(border_colors) + 1\n\n out_size = 5 * scale\n output = [[0]*out_size for _ in range(out_size)]\n\n # Fill border column (col 4 scaled)\n for r in range(4):\n for dr in range(scale):\n for dc in range(scale):\n output[r*scale + dr][4*scale + dc] = border_col[r]\n # Fill border row (row 4 scaled)\n for c in range(4):\n for dr in range(scale):\n for dc in range(scale):\n output[4*scale + dr][c*scale + dc] = border_row[c]\n # Corner\n for dr in range(scale):\n for dc in range(scale):\n output[4*scale + dr][4*scale + dc] = corner\n\n # Fill main colored cells\n colored_cells = set()\n for r in range(4):\n for c in range(4):\n if main[r][c] != 0:\n colored_cells.add((r,c))\n for dr in range(scale):\n for dc in range(scale):\n output[r*scale + dr][c*scale + dc] = main[r][c]\n\n # Find block bounds\n min_r = min(r for r,c in colored_cells)\n max_r = max(r for r,c in colored_cells)\n min_c = min(c for r,c in colored_cells)\n max_c = max(c for r,c in colored_cells)\n\n # Add diagonal of 2s in cells diagonally adjacent to the block\n for r in range(4):\n for c in range(4):\n if main[r][c] != 0:\n continue\n # Check if diagonally adjacent to block\n is_diag = False\n if r == min_r - 1 and c == min_c - 1:\n # top-left: diagonal from (0,0) to (scale-1,scale-1)\n for d in range(scale):\n output[r*scale+d][c*scale+d] = 2\n elif r == min_r - 1 and c == max_c + 1:\n # top-right: diagonal from (0,scale-1) to (scale-1,0)\n for d in range(scale):\n output[r*scale+d][c*scale+(scale-1-d)] = 2\n elif r == max_r + 1 and c == min_c - 1:\n # bottom-left: diagonal from (scale-1,0) to (0,scale-1)\n for d in range(scale):\n output[r*scale+(scale-1-d)][c*scale+d] = 2\n elif r == max_r + 1 and c == max_c + 1:\n # bottom-right: diagonal from (0,0) to (scale-1,scale-1)\n for d in range(scale):\n output[r*scale+d][c*scale+d] = 2\n\n return output\n",
"46f33fce": "def solve(grid):\n H, W = len(grid), len(grid[0])\n out = [[0]*(W*2) for _ in range(H*2)]\n for r in range(H):\n for c in range(W):\n if grid[r][c] != 0:\n # Place 4x4 block at (r*2-2, c*2-2)\n tr, tc = r*2-2, c*2-2\n for dr in range(4):\n for dc in range(4):\n rr, cc = tr+dr, tc+dc\n if 0 <= rr < H*2 and 0 <= cc < W*2:\n out[rr][cc] = grid[r][c]\n return out\n",
"47c1f68c": "def solve(grid):\n H, W = len(grid), len(grid[0])\n # Find cross lines\n cross_row = -1\n cross_col = -1\n cross_color = 0\n for r in range(H):\n if all(grid[r][c] != 0 for c in range(W)):\n cross_row = r\n cross_color = grid[r][0]\n break\n for c in range(W):\n if all(grid[r][c] != 0 for r in range(H)):\n cross_col = c\n break\n\n # Extract shape from the quadrant that has it (non-zero, non-cross-color)\n shape = []\n for r in range(H):\n if r == cross_row:\n continue\n for c in range(W):\n if c == cross_col:\n continue\n if grid[r][c] != 0 and grid[r][c] != cross_color:\n # Map to quadrant coordinates\n qr = r if r < cross_row else r - 1\n qc = c if c < cross_col else c - 1\n shape.append((qr, qc))\n\n out_H = H - 1\n out_W = W - 1\n output = [[0]*out_W for _ in range(out_H)]\n\n # Place shape in 4 quadrants with cross_color\n for qr, qc in shape:\n # Original (top-left assumed)\n output[qr][qc] = cross_color\n # Horizontal mirror\n output[qr][out_W - 1 - qc] = cross_color\n # Vertical mirror\n output[out_H - 1 - qr][qc] = cross_color\n # Both mirrors\n output[out_H - 1 - qr][out_W - 1 - qc] = cross_color\n\n return output\n",
"484b58aa": "def solve(grid):\n import copy\n H, W = len(grid), len(grid[0])\n out = copy.deepcopy(grid)\n\n # Find the repeating period by trying all (pr, pc) combinations\n # Prioritize smaller periods\n def try_period(pr, pc):\n tile = [[None]*pc for _ in range(pr)]\n for r in range(H):\n for c in range(W):\n if grid[r][c] != 0:\n tr, tc = r % pr, c % pc\n if tile[tr][tc] is None:\n tile[tr][tc] = grid[r][c]\n elif tile[tr][tc] != grid[r][c]:\n return None\n # Check all tile cells filled\n for r in range(pr):\n for c in range(pc):\n if tile[r][c] is None:\n return None\n return tile\n\n # Try periods in order of total area (smallest first)\n best_tile = None\n best_pr = None\n best_pc = None\n candidates = []\n for pr in range(1, H+1):\n for pc in range(1, W+1):\n candidates.append((pr * pc, pr, pc))\n candidates.sort()\n\n for _, pr, pc in candidates:\n tile = try_period(pr, pc)\n if tile is not None:\n best_tile = tile\n best_pr = pr\n best_pc = pc\n break\n\n if best_tile is not None:\n for r in range(H):\n for c in range(W):\n out[r][c] = best_tile[r % best_pr][c % best_pc]\n\n return out\n",
"48d8fb45": "def solve(grid):\n H, W = len(grid), len(grid[0])\n # Find 5 position\n pos5 = None\n color = 0\n for r in range(H):\n for c in range(W):\n if grid[r][c] == 5:\n pos5 = (r, c)\n elif grid[r][c] != 0:\n color = grid[r][c]\n\n r5, c5 = pos5\n\n # Find all non-zero, non-5 cells\n cells = [(r, c) for r in range(H) for c in range(W) if grid[r][c] != 0 and grid[r][c] != 5]\n\n # Find the cell closest to the 5 marker\n cells.sort(key=lambda rc: abs(rc[0]-r5) + abs(rc[1]-c5))\n\n # The closest cell tells us which group to extract\n # Use BFS/flood fill with the 5 as seed - find all cells near 5\n # Actually, just find the cluster nearest to 5\n # Group cells by connected components (8-connectivity? or spatial proximity?)\n\n # Approach: find connected components, then pick the one closest to 5\n from collections import deque\n visited = set()\n components = []\n for r, c in cells:\n if (r,c) in visited:\n continue\n # BFS with 8-connectivity\n comp = []\n queue = deque([(r,c)])\n visited.add((r,c))\n while queue:\n cr, cc = queue.popleft()\n comp.append((cr,cc))\n for dr in [-1,0,1]:\n for dc in [-1,0,1]:\n if dr == 0 and dc == 0:\n continue\n nr, nc = cr+dr, cc+dc\n if (nr,nc) not in visited and 0 <= nr < H and 0 <= nc < W and grid[nr][nc] != 0 and grid[nr][nc] != 5:\n visited.add((nr,nc))\n queue.append((nr,nc))\n components.append(comp)\n\n # Pick component closest to 5\n best_comp = None\n best_dist = float('inf')\n for comp in components:\n d = min(abs(r-r5)+abs(c-c5) for r,c in comp)\n if d < best_dist:\n best_dist = d\n best_comp = comp\n\n # Extract bounding box\n min_r = min(r for r,c in best_comp)\n max_r = max(r for r,c in best_comp)\n min_c = min(c for r,c in best_comp)\n max_c = max(c for r,c in best_comp)\n\n output = [[0]*(max_c-min_c+1) for _ in range(max_r-min_r+1)]\n for r, c in best_comp:\n output[r-min_r][c-min_c] = grid[r][c]\n\n return output\n",
"4938f0c2": "def solve(grid):\n import copy\n H, W = len(grid), len(grid[0])\n output = copy.deepcopy(grid)\n\n # Find 3-cells (connector)\n threes = [(r,c) for r in range(H) for c in range(W) if grid[r][c] == 3]\n # Find 2-cells (shape)\n twos = [(r,c) for r in range(H) for c in range(W) if grid[r][c] == 2]\n\n if not threes or not twos:\n return output\n\n # Connector bounding box\n min_r3 = min(r for r,c in threes)\n max_r3 = max(r for r,c in threes)\n min_c3 = min(c for r,c in threes)\n max_c3 = max(c for r,c in threes)\n\n # Center of connector\n cr = (min_r3 + max_r3) / 2.0\n cc = (min_c3 + max_c3) / 2.0\n\n # Reflect each 2-cell in all 4 ways\n for r, c in twos:\n # Original\n output[r][c] = 2\n # Horizontal reflection (across vertical center of connector)\n nr, nc = r, int(2*cc - c)\n if 0 <= nr < H and 0 <= nc < W:\n output[nr][nc] = 2\n # Vertical reflection (across horizontal center of connector)\n nr, nc = int(2*cr - r), c\n if 0 <= nr < H and 0 <= nc < W:\n output[nr][nc] = 2\n # Both\n nr, nc = int(2*cr - r), int(2*cc - c)\n if 0 <= nr < H and 0 <= nc < W:\n output[nr][nc] = 2\n\n return output\n",
"496994bd": "def solve(grid):\n import copy\n H, W = len(grid), len(grid[0])\n output = copy.deepcopy(grid)\n\n # Find the non-zero rows at top\n non_zero_rows = []\n for r in range(H):\n if any(grid[r][c] != 0 for c in range(W)):\n non_zero_rows.append(r)\n else:\n break\n\n # Mirror them at the bottom\n n = len(non_zero_rows)\n for i, r in enumerate(non_zero_rows):\n target_r = H - 1 - i\n output[target_r] = list(grid[r])\n\n return output\n",
"49d1d64f": "def solve(grid):\n H, W = len(grid), len(grid[0])\n out_H = H + 2\n out_W = W + 2\n output = [[0]*out_W for _ in range(out_H)]\n\n # Top row\n for c in range(W):\n output[0][c+1] = grid[0][c]\n\n # Bottom row\n for c in range(W):\n output[out_H-1][c+1] = grid[H-1][c]\n\n # Middle rows\n for r in range(H):\n output[r+1][0] = grid[r][0]\n for c in range(W):\n output[r+1][c+1] = grid[r][c]\n output[r+1][out_W-1] = grid[r][W-1]\n\n return output\n",
"4be741c5": "def solve(grid):\n H, W = len(grid), len(grid[0])\n from collections import Counter\n\n # Check if bands are horizontal or vertical\n # For horizontal: each row should be mostly one color\n # For vertical: each column should be mostly one color\n\n # Check rows\n row_colors = []\n for r in range(H):\n c = Counter(grid[r])\n row_colors.append(c.most_common(1)[0][0])\n\n # Check columns\n col_colors = []\n for c in range(W):\n vals = [grid[r][c] for r in range(H)]\n cnt = Counter(vals)\n col_colors.append(cnt.most_common(1)[0][0])\n\n # If all rows have same color -> vertical bands\n # If many different row colors -> horizontal bands\n row_unique = len(set(row_colors))\n col_unique = len(set(col_colors))\n\n if col_unique > row_unique:\n # Vertical bands - list distinct colors in column order\n bands = []\n prev = None\n for c in col_colors:\n if c != prev:\n bands.append(c)\n prev = c\n return [bands]\n else:\n # Horizontal bands\n bands = []\n prev = None\n for c in row_colors:\n if c != prev:\n bands.append(c)\n prev = c\n return [[b] for b in bands]\n",
"4c4377d9": "def solve(grid):\n H = len(grid)\n reversed_grid = list(reversed(grid))\n return [list(row) for row in reversed_grid] + [list(row) for row in grid]\n"
}