h4-polytopic-attention / data /arc_python_solutions_b25.json
grapheneaffiliates's picture
Upload data/arc_python_solutions_b25.json with huggingface_hub
c8a2aeb verified
{
"0a938d79": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n output = [[0]*cols for _ in range(rows)]\n\n points = []\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] != 0:\n points.append((r, c, grid[r][c]))\n\n r1, c1, v1 = points[0]\n r2, c2, v2 = points[1]\n\n dr = abs(r2 - r1)\n dc = abs(c2 - c1)\n\n if dc == 0 or dr > dc:\n if dc > 0:\n # Vertical stripes\n if c1 < c2:\n first_c, first_v = c1, v1\n second_c, second_v = c2, v2\n else:\n first_c, first_v = c2, v2\n second_c, second_v = c1, v1\n spacing = second_c - first_c\n for c in range(cols):\n if c >= first_c:\n rel = (c - first_c) % (spacing * 2)\n if rel == 0:\n for r in range(rows):\n output[r][c] = first_v\n elif rel == spacing:\n for r in range(rows):\n output[r][c] = second_v\n return output\n # Horizontal stripes\n if r1 < r2:\n first_r, first_v = r1, v1\n second_r, second_v = r2, v2\n else:\n first_r, first_v = r2, v2\n second_r, second_v = r1, v1\n spacing = second_r - first_r\n for r in range(rows):\n if r >= first_r:\n rel = (r - first_r) % (spacing * 2)\n if rel == 0:\n for c in range(cols):\n output[r][c] = first_v\n elif rel == spacing:\n for c in range(cols):\n output[r][c] = second_v\n else:\n # dr <= dc: horizontal stripes\n if r1 < r2:\n first_r, first_v = r1, v1\n second_r, second_v = r2, v2\n else:\n first_r, first_v = r2, v2\n second_r, second_v = r1, v1\n spacing = second_r - first_r\n if spacing == 0:\n # Same row -> vertical stripes\n if c1 < c2:\n first_c, first_v = c1, v1\n second_c, second_v = c2, v2\n else:\n first_c, first_v = c2, v2\n second_c, second_v = c1, v1\n sp = second_c - first_c\n for c in range(cols):\n if c >= first_c:\n rel = (c - first_c) % (sp * 2)\n if rel == 0:\n for r in range(rows):\n output[r][c] = first_v\n elif rel == sp:\n for r in range(rows):\n output[r][c] = second_v\n else:\n for r in range(rows):\n if r >= first_r:\n rel = (r - first_r) % (spacing * 2)\n if rel == 0:\n for c in range(cols):\n output[r][c] = first_v\n elif rel == spacing:\n for c in range(cols):\n output[r][c] = second_v\n return output\n",
"0b148d64": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n sep_rows = set()\n for r in range(rows):\n if all(grid[r][c] == 0 for c in range(cols)):\n sep_rows.add(r)\n\n sep_cols = set()\n for c in range(cols):\n if all(grid[r][c] == 0 for r in range(rows)):\n sep_cols.add(c)\n\n sorted_sep_rows = sorted(sep_rows)\n row_groups = []\n if sorted_sep_rows:\n start = sorted_sep_rows[0]\n for i in range(1, len(sorted_sep_rows)):\n if sorted_sep_rows[i] != sorted_sep_rows[i-1] + 1:\n row_groups.append((start, sorted_sep_rows[i-1]))\n start = sorted_sep_rows[i]\n row_groups.append((start, sorted_sep_rows[-1]))\n\n sorted_sep_cols = sorted(sep_cols)\n col_groups = []\n if sorted_sep_cols:\n start = sorted_sep_cols[0]\n for i in range(1, len(sorted_sep_cols)):\n if sorted_sep_cols[i] != sorted_sep_cols[i-1] + 1:\n col_groups.append((start, sorted_sep_cols[i-1]))\n start = sorted_sep_cols[i]\n col_groups.append((start, sorted_sep_cols[-1]))\n\n row_ranges = []\n prev = 0\n for rg in row_groups:\n if prev < rg[0]:\n row_ranges.append((prev, rg[0] - 1))\n prev = rg[1] + 1\n if prev < rows:\n row_ranges.append((prev, rows - 1))\n\n col_ranges = []\n prev = 0\n for cg in col_groups:\n if prev < cg[0]:\n col_ranges.append((prev, cg[0] - 1))\n prev = cg[1] + 1\n if prev < cols:\n col_ranges.append((prev, cols - 1))\n\n regions = []\n for rr in row_ranges:\n for cr in col_ranges:\n region = []\n colors = set()\n for r in range(rr[0], rr[1]+1):\n row = []\n for c in range(cr[0], cr[1]+1):\n row.append(grid[r][c])\n if grid[r][c] != 0:\n colors.add(grid[r][c])\n region.append(row)\n regions.append((region, colors))\n\n from collections import Counter\n color_count = Counter()\n for region, colors in regions:\n for c in colors:\n color_count[c] += 1\n\n unique_color = None\n for c, cnt in color_count.items():\n if cnt == 1:\n unique_color = c\n break\n\n if unique_color is None:\n unique_color = min(color_count, key=color_count.get)\n\n for region, colors in regions:\n if unique_color in colors:\n return region\n\n return regions[0][0]\n",
"0dfd9992": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n output = [row[:] for row in grid]\n\n for pr in range(1, rows):\n for pc in range(1, cols):\n pattern = [[None]*pc for _ in range(pr)]\n ok = True\n for r in range(rows):\n for c in range(cols):\n pr_idx = r % pr\n pc_idx = c % pc\n if grid[r][c] != 0:\n if pattern[pr_idx][pc_idx] is None:\n pattern[pr_idx][pc_idx] = grid[r][c]\n elif pattern[pr_idx][pc_idx] != grid[r][c]:\n ok = False\n break\n if not ok:\n break\n if ok:\n all_filled = all(pattern[r][c] is not None for r in range(pr) for c in range(pc))\n if all_filled:\n for r in range(rows):\n for c in range(cols):\n output[r][c] = pattern[r % pr][c % pc]\n return output\n return output\n",
"1a07d186": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n h_lines = {}\n for r in range(rows):\n vals = set(grid[r])\n if len(vals) == 1 and 0 not in vals:\n h_lines[r] = grid[r][0]\n\n v_lines = {}\n for c in range(cols):\n vals = set(grid[r][c] for r in range(rows))\n if len(vals) == 1 and 0 not in vals:\n v_lines[c] = grid[0][c]\n\n color_to_hline = {}\n color_to_vline = {}\n for r, color in h_lines.items():\n color_to_hline[color] = r\n for c, color in v_lines.items():\n color_to_vline[color] = c\n\n output = [[0]*cols for _ in range(rows)]\n for r, color in h_lines.items():\n for c in range(cols):\n output[r][c] = color\n for c, color in v_lines.items():\n for r in range(rows):\n output[r][c] = color\n\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] != 0 and r not in h_lines and c not in v_lines:\n dot_color = grid[r][c]\n\n if dot_color in color_to_vline:\n lc = color_to_vline[dot_color]\n if c > lc:\n output[r][lc + 1] = dot_color\n else:\n output[r][lc - 1] = dot_color\n elif dot_color in color_to_hline:\n lr = color_to_hline[dot_color]\n if r > lr:\n output[lr + 1][c] = dot_color\n else:\n output[lr - 1][c] = dot_color\n\n return output\n",
"1c786137": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n\n for border_color in set(grid[r][c] for r in range(rows) for c in range(cols)) - {0}:\n min_r = min_c = float('inf')\n max_r = max_c = -1\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] == border_color:\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 top_ok = all(grid[min_r][c] == border_color for c in range(min_c, max_c + 1))\n bot_ok = all(grid[max_r][c] == border_color for c in range(min_c, max_c + 1))\n left_ok = all(grid[r][min_c] == border_color for r in range(min_r, max_r + 1))\n right_ok = all(grid[r][max_c] == border_color for r in range(min_r, max_r + 1))\n\n if top_ok and bot_ok and left_ok and right_ok:\n interior = []\n for r in range(min_r + 1, max_r):\n row = []\n for c in range(min_c + 1, max_c):\n row.append(grid[r][c])\n interior.append(row)\n return interior\n return grid\n",
"1e32b0e9": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n output = [row[:] for row in grid]\n\n div_color = None\n div_rows = []\n div_cols = []\n\n for r in range(rows):\n if len(set(grid[r])) == 1 and grid[r][0] != 0:\n div_rows.append(r)\n div_color = grid[r][0]\n\n for c in range(cols):\n col_vals = set(grid[r][c] for r in range(rows))\n if len(col_vals) == 1 and list(col_vals)[0] == div_color:\n div_cols.append(c)\n\n all_row_bounds = [0] + div_rows + [rows]\n all_col_bounds = [0] + div_cols + [cols]\n\n sec_rows = []\n for i in range(len(all_row_bounds) - 1):\n rs = all_row_bounds[i]\n re = all_row_bounds[i+1]\n if rs in div_rows:\n rs += 1\n if re - 1 in div_rows:\n re -= 1\n if rs < re:\n sec_rows.append((rs, re))\n\n sec_cols = []\n for i in range(len(all_col_bounds) - 1):\n cs = all_col_bounds[i]\n ce = all_col_bounds[i+1]\n if cs in div_cols:\n cs += 1\n if ce - 1 in div_cols:\n ce -= 1\n if cs < ce:\n sec_cols.append((cs, ce))\n\n sec_h = sec_rows[0][1] - sec_rows[0][0]\n sec_w = sec_cols[0][1] - sec_cols[0][0]\n\n union_mask = [[False]*sec_w for _ in range(sec_h)]\n\n section_data = []\n for sr, (rs, re) in enumerate(sec_rows):\n for sc, (cs, ce) in enumerate(sec_cols):\n sec = []\n for r in range(rs, re):\n row = []\n for c in range(cs, ce):\n row.append(grid[r][c])\n if grid[r][c] != 0:\n union_mask[r-rs][c-cs] = True\n sec.append(row)\n section_data.append((sr, sc, sec, rs, cs))\n\n for sr, sc, sec, rs, cs in section_data:\n for r in range(sec_h):\n for c in range(sec_w):\n if union_mask[r][c]:\n if sec[r][c] == 0:\n output[rs+r][cs+c] = div_color\n\n return output\n",
"1f85a75f": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n from collections import Counter\n\n cc = Counter()\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] != 0:\n cc[grid[r][c]] += 1\n\n for color in sorted(cc, key=cc.get):\n positions = []\n for r in range(rows):\n for c in range(cols):\n if grid[r][c] == color:\n positions.append((r, c))\n\n min_r = min(p[0] for p in positions)\n max_r = max(p[0] for p in positions)\n min_c = min(p[1] for p in positions)\n max_c = max(p[1] for p in positions)\n\n bbox_area = (max_r - min_r + 1) * (max_c - min_c + 1)\n density = len(positions) / bbox_area\n if density > 0.4 and bbox_area <= rows * cols / 4:\n result = []\n for r in range(min_r, max_r + 1):\n row = []\n for c in range(min_c, max_c + 1):\n if grid[r][c] == color:\n row.append(color)\n else:\n row.append(0)\n result.append(row)\n return result\n return grid\n",
"045e512c": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n output = [row[:] for row in grid]\n\n visited = [[False]*cols for _ in range(rows)]\n def flood(r, c):\n stack = [(r,c)]\n comp = []\n while stack:\n cr, cc = stack.pop()\n if cr<0 or cr>=rows or cc<0 or cc>=cols: continue\n if visited[cr][cc] or grid[cr][cc] == 0: continue\n visited[cr][cc] = True\n comp.append((cr,cc,grid[cr][cc]))\n for dr,dc in [(-1,0),(1,0),(0,-1),(0,1)]:\n stack.append((cr+dr,cc+dc))\n return comp\n\n components = []\n for r in range(rows):\n for c in range(cols):\n if not visited[r][c] and grid[r][c] != 0:\n comp = flood(r, c)\n if comp:\n components.append(comp)\n\n from collections import defaultdict\n color_comps = defaultdict(list)\n for comp in components:\n color = comp[0][2]\n color_comps[color].append(comp)\n\n main_color = max(color_comps, key=lambda c: sum(len(comp) for comp in color_comps[c]))\n main_cells = []\n for comp in color_comps[main_color]:\n main_cells.extend(comp)\n\n min_r = min(c[0] for c in main_cells)\n max_r = max(c[0] for c in main_cells)\n min_c = min(c[1] for c in main_cells)\n max_c = max(c[1] for c in main_cells)\n shape_h = max_r - min_r + 1\n shape_w = max_c - min_c + 1\n\n shape_cells = [(r - min_r, c - min_c) for r, c, v in main_cells]\n shape_cr = (min_r + max_r) / 2\n shape_cc = (min_c + max_c) / 2\n\n arrow_groups = []\n for color, comps in color_comps.items():\n if color == main_color:\n continue\n if len(comps) == 1:\n arrow_groups.append(comps[0])\n else:\n centers = []\n for comp in comps:\n cr = sum(c[0] for c in comp) / len(comp)\n cc = sum(c[1] for c in comp) / len(comp)\n centers.append((cr, cc))\n\n directions = []\n for cr, cc in centers:\n dr = cr - shape_cr\n dc = cc - shape_cc\n dr_d = 0 if abs(dr) < 0.5 else (1 if dr > 0 else -1)\n dc_d = 0 if abs(dc) < 0.5 else (1 if dc > 0 else -1)\n directions.append((dr_d, dc_d))\n\n if len(set(directions)) == 1:\n merged = []\n for comp in comps:\n merged.extend(comp)\n arrow_groups.append(merged)\n else:\n for comp in comps:\n arrow_groups.append(comp)\n\n for arrow_cells in arrow_groups:\n arrow_color = arrow_cells[0][2]\n ar = sum(c[0] for c in arrow_cells) / len(arrow_cells)\n ac = sum(c[1] for c in arrow_cells) / len(arrow_cells)\n\n dr = ar - shape_cr\n dc = ac - shape_cc\n\n step_r = 0\n step_c = 0\n\n if abs(dr) > 0.5:\n if dr > 0:\n arrow_min_r = min(c[0] for c in arrow_cells)\n step_r = arrow_min_r - min_r\n else:\n arrow_max_r = max(c[0] for c in arrow_cells)\n step_r = -(max_r - arrow_max_r)\n\n if abs(dc) > 0.5:\n if dc > 0:\n arrow_min_c = min(c[1] for c in arrow_cells)\n step_c = arrow_min_c - min_c\n else:\n arrow_max_c = max(c[1] for c in arrow_cells)\n step_c = -(max_c - arrow_max_c)\n\n if step_r == 0 and step_c == 0:\n continue\n\n k = 1\n while True:\n placed = False\n for sr, sc in shape_cells:\n nr = min_r + sr + k * step_r\n nc = min_c + sc + k * step_c\n if 0 <= nr < rows and 0 <= nc < cols:\n output[nr][nc] = arrow_color\n placed = True\n if not placed:\n break\n k += 1\n\n return output\n",
"06df4c85": "def solve(grid):\n rows = len(grid)\n cols = len(grid[0])\n output = [row[:] for row in grid]\n\n grid_color = None\n grid_rows_set = set()\n for r in range(rows):\n vals = set(grid[r])\n if len(vals) == 1 and 0 not in vals:\n grid_rows_set.add(r)\n grid_color = grid[r][0]\n\n if grid_color is None:\n return output\n\n non_grid_rows = [r for r in range(rows) if r not in grid_rows_set]\n\n grid_cols_set = set()\n for c in range(cols):\n if all(grid[r][c] == grid_color for r in non_grid_rows):\n grid_cols_set.add(c)\n\n def get_bands(indices, total):\n non_div = sorted(set(range(total)) - indices)\n bands = []\n if not non_div:\n return bands\n start = non_div[0]\n for i in range(1, len(non_div)):\n if non_div[i] != non_div[i-1] + 1:\n bands.append((start, non_div[i-1]))\n start = non_div[i]\n bands.append((start, non_div[-1]))\n return bands\n\n row_bands = get_bands(grid_rows_set, rows)\n col_bands = get_bands(grid_cols_set, cols)\n\n cell_colors = {}\n\n for ci, (rs, re) in enumerate(row_bands):\n for cj, (cs, ce) in enumerate(col_bands):\n colors = set()\n for r in range(rs, re+1):\n for c in range(cs, ce+1):\n v = grid[r][c]\n if v != grid_color and v != 0:\n colors.add(v)\n if colors:\n cell_colors[(ci, cj)] = list(colors)[0]\n\n from collections import defaultdict\n color_cells = defaultdict(list)\n for (ci, cj), color in cell_colors.items():\n color_cells[color].append((ci, cj))\n\n filled_cells = dict(cell_colors)\n\n for color, cells in color_cells.items():\n row_groups = defaultdict(list)\n col_groups = defaultdict(list)\n for ci, cj in cells:\n row_groups[ci].append(cj)\n col_groups[cj].append(ci)\n\n for ci, cj_list in row_groups.items():\n if len(cj_list) >= 2:\n min_cj = min(cj_list)\n max_cj = max(cj_list)\n for cj in range(min_cj, max_cj + 1):\n if (ci, cj) not in filled_cells:\n filled_cells[(ci, cj)] = color\n\n for cj, ci_list in col_groups.items():\n if len(ci_list) >= 2:\n min_ci = min(ci_list)\n max_ci = max(ci_list)\n for ci in range(min_ci, max_ci + 1):\n if (ci, cj) not in filled_cells:\n filled_cells[(ci, cj)] = color\n\n for (ci, cj), color in filled_cells.items():\n if (ci, cj) in cell_colors:\n continue\n rs, re = row_bands[ci]\n cs, ce = col_bands[cj]\n\n src = None\n for (sci, scj), sc in cell_colors.items():\n if sc == color:\n src = (sci, scj)\n break\n if src is None:\n continue\n src_rs, src_re = row_bands[src[0]]\n src_cs, src_ce = col_bands[src[1]]\n\n for dr in range(re - rs + 1):\n for dc in range(ce - cs + 1):\n sr = src_rs + dr\n sc2 = src_cs + dc\n if sr <= src_re and sc2 <= src_ce:\n if grid[sr][sc2] != grid_color and grid[sr][sc2] != 0:\n output[rs + dr][cs + dc] = color\n\n return output\n"
}