{
  "id": 550209,
  "title": "21st place: a short report",
  "content": "<p>Hi everyone! I would like to share my 28% \"solution\", even though there is not a lot to share. It's a very minor insight, and around 1% of the effort (the rest was a failure). The idea is not very original, just some recoloring as a preprocessing step for the icecuber's solver. In the ensemble, it adds +2% above the 26% baseline. This is the function:</p>\n<pre><code> ():\n   \n    (task[]) &gt; :\n       \n   all_a = []\n   all_b = []\n    pair  task[]:\n       input_colors, input_counts = np.unique(pair[], return_counts=)\n       a = ((input_colors.tolist(), input_counts))\n       a = (x[]  x  (a, key= x: x[], reverse=))\n       all_a.append(a)\n       all_b.append((np.unique(pair[]).tolist()))\n   uni_a = ((all_a, ()))\n   uni_b = ((all_b, ()))\n   input_colors, input_counts = np.unique(task[][][], return_counts=)\n   c = ((input_colors.tolist(), input_counts))\n   c = [x[]  x  (c, key= x: x[], reverse=)]\n    uni_a == (c)  ((uni_a &amp; uni_b)) == :\n       \n    i  ((task[])):\n       raw = all_a[i]\n       ti = task[][i][]\n       to = task[][i][]\n        j  ((c)):\n            j == (raw):\n               \n           ti = [[c[j] +   x == raw[j]  x  x  sub]  sub  ti]\n           to = [[c[j] +   x == raw[j]  x  x  sub]  sub  to]\n       ti = [[x -   x &gt;   x  x  sub]  sub  ti]\n       to = [[x -   x &gt;   x  x  sub]  sub  to]\n       task[][i][] = ti\n       task[][i][] = to\n</code></pre>\n<p>I didn't test this particular version, but it should work. It can be improved, but in this case I think it doesn't matter, as the score stays the same or even degrades. Or maybe I didn't explore enough. But, again, there is no merit in it, it doesn't get you much closer to AGI algorithms.<br>\nSo the insight is about looking at the task and being able almost immediately tell if the coloring is irrelevant. I suppose this is related to what Guillermo Barbadillo <a href=\"https://www.kaggle.com/competitions/arc-prize-2024/discussion/545671\" target=\"_blank\">said</a> about representations. Irrelevant perspectives are quickly discarded. For example (<a href=\"https://arcprize.org/play?task=1e32b0e9\" target=\"_blank\">1e32b0e9</a>), this is how the task looks like:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1088223%2Fc0a3c20bc3c7bfb0fe1c745573bb667b%2Foriginal.png?generation=1733447616624325&amp;alt=media\" alt=\"\"><br>\nAnd this is how I actually see it conceptually after just a moment, before understanding the solution:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1088223%2F035e3733601122e161176774dd890c99%2Frecolored.png?generation=1733447641150849&amp;alt=media\" alt=\"\"><br>\nOr something like that, I can be wrong, of course, but it kind of helped me, so who knows.<br>\nI was trying to think big, but I lack both skill and creativity for that. And motivation. Sometimes I can work, sometimes I cannot… Anyway, I ended up exploring the <a href=\"https://www.kaggle.com/competitions/arc-prize-2024/discussion/518930#3064762\" target=\"_blank\">graph approach</a>, but with no success. I also tried neural cellular automata, but couldn't go beyond 1%.<br>\nI decided not to touch LLMs. Why? I knew that many others would do it, so there is no point to pursue the same thing. And I still don't understand the transformer architecture on the math level, it would be nearly impossible for me to go beyond already existing stuff. Plus, I have limited compute. I also decided not to tinker with the icecuber's solver. Why? My C++ skills are nearly nonexistent. I would have to learn the language first. And, of course, this approach doesn't promise any AGI, so what's the point.<br>\nOverall, I really like this whole quest for AGI. Maybe my naive fascination is not enough for a meaningful contribution, but I really appreciate the opportunity, so thanks to everyone who made this all possible. Let's see what happens next.</p>",
  "comments": [
    {
      "id": 3065425,
      "author_name": "",
      "author_url": "",
      "post_date": "2024-12-06T19:23:04.143000",
      "content": "<p>Nice insight!  Thank you for sharing.</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 1,
  "messages": [
    {
      "id": 3064773,
      "postDate": "2024-12-06T01:29:47.583Z",
      "content": "<p>Hi everyone! I would like to share my 28% \"solution\", even though there is not a lot to share. It's a very minor insight, and around 1% of the effort (the rest was a failure). The idea is not very original, just some recoloring as a preprocessing step for the icecuber's solver. In the ensemble, it adds +2% above the 26% baseline. This is the function:</p>\n<pre><code> ():\n   \n    (task[]) &gt; :\n       \n   all_a = []\n   all_b = []\n    pair  task[]:\n       input_colors, input_counts = np.unique(pair[], return_counts=)\n       a = ((input_colors.tolist(), input_counts))\n       a = (x[]  x  (a, key= x: x[], reverse=))\n       all_a.append(a)\n       all_b.append((np.unique(pair[]).tolist()))\n   uni_a = ((all_a, ()))\n   uni_b = ((all_b, ()))\n   input_colors, input_counts = np.unique(task[][][], return_counts=)\n   c = ((input_colors.tolist(), input_counts))\n   c = [x[]  x  (c, key= x: x[], reverse=)]\n    uni_a == (c)  ((uni_a &amp; uni_b)) == :\n       \n    i  ((task[])):\n       raw = all_a[i]\n       ti = task[][i][]\n       to = task[][i][]\n        j  ((c)):\n            j == (raw):\n               \n           ti = [[c[j] +   x == raw[j]  x  x  sub]  sub  ti]\n           to = [[c[j] +   x == raw[j]  x  x  sub]  sub  to]\n       ti = [[x -   x &gt;   x  x  sub]  sub  ti]\n       to = [[x -   x &gt;   x  x  sub]  sub  to]\n       task[][i][] = ti\n       task[][i][] = to\n</code></pre>\n<p>I didn't test this particular version, but it should work. It can be improved, but in this case I think it doesn't matter, as the score stays the same or even degrades. Or maybe I didn't explore enough. But, again, there is no merit in it, it doesn't get you much closer to AGI algorithms.<br>\nSo the insight is about looking at the task and being able almost immediately tell if the coloring is irrelevant. I suppose this is related to what Guillermo Barbadillo <a href=\"https://www.kaggle.com/competitions/arc-prize-2024/discussion/545671\" target=\"_blank\">said</a> about representations. Irrelevant perspectives are quickly discarded. For example (<a href=\"https://arcprize.org/play?task=1e32b0e9\" target=\"_blank\">1e32b0e9</a>), this is how the task looks like:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1088223%2Fc0a3c20bc3c7bfb0fe1c745573bb667b%2Foriginal.png?generation=1733447616624325&amp;alt=media\" alt=\"\"><br>\nAnd this is how I actually see it conceptually after just a moment, before understanding the solution:<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1088223%2F035e3733601122e161176774dd890c99%2Frecolored.png?generation=1733447641150849&amp;alt=media\" alt=\"\"><br>\nOr something like that, I can be wrong, of course, but it kind of helped me, so who knows.<br>\nI was trying to think big, but I lack both skill and creativity for that. And motivation. Sometimes I can work, sometimes I cannot… Anyway, I ended up exploring the <a href=\"https://www.kaggle.com/competitions/arc-prize-2024/discussion/518930#3064762\" target=\"_blank\">graph approach</a>, but with no success. I also tried neural cellular automata, but couldn't go beyond 1%.<br>\nI decided not to touch LLMs. Why? I knew that many others would do it, so there is no point to pursue the same thing. And I still don't understand the transformer architecture on the math level, it would be nearly impossible for me to go beyond already existing stuff. Plus, I have limited compute. I also decided not to tinker with the icecuber's solver. Why? My C++ skills are nearly nonexistent. I would have to learn the language first. And, of course, this approach doesn't promise any AGI, so what's the point.<br>\nOverall, I really like this whole quest for AGI. Maybe my naive fascination is not enough for a meaningful contribution, but I really appreciate the opportunity, so thanks to everyone who made this all possible. Let's see what happens next.</p>",
      "rawMarkdown": " Hi everyone! I would like to share my 28% \"solution\", even though there is not a lot to share. It's a very minor insight, and around 1% of the effort (the rest was a failure). The idea is not very original, just some recoloring as a preprocessing step for the icecuber's solver. In the ensemble, it adds +2% above the 26% baseline. This is the function:\n```\ndef recolor_task(task):\n    '''Recoloring effort via pixel counting (but it ruins some tasks)'''\n    if len(task['test']) > 1:\n        return\n\n    all_a = []\n    all_b = []\n    for pair in task['train']:\n        input_colors, input_counts = np.unique(pair['input'], return_counts=True)\n        a = list(zip(input_colors.tolist(), input_counts))\n        a = tuple(x[0] for x in sorted(a, key=lambda x: x[1], reverse=True))\n        all_a.append(a)\n        all_b.append(tuple(np.unique(pair['output']).tolist()))\n    uni_a = set(sum(all_a, ()))\n    uni_b = set(sum(all_b, ()))\n\n    input_colors, input_counts = np.unique(task['test'][0]['input'], return_counts=True)\n    c = list(zip(input_colors.tolist(), input_counts))\n    c = [x[0] for x in sorted(c, key=lambda x: x[1], reverse=True)]\n\n    if uni_a == set(c) or len(list(uni_a & uni_b)) == 0:\n        return\n\n    for i in range(len(task['train'])):\n        raw = all_a[i]\n        ti = task['train'][i]['input']\n        to = task['train'][i]['output']\n        for j in range(len(c)):\n            if j == len(raw):\n                break\n            ti = [[c[j] + 10 if x == raw[j] else x for x in sub] for sub in ti]\n            to = [[c[j] + 10 if x == raw[j] else x for x in sub] for sub in to]\n        ti = [[x - 10 if x > 9 else x for x in sub] for sub in ti]\n        to = [[x - 10 if x > 9 else x for x in sub] for sub in to]\n        task['train'][i]['input'] = ti\n        task['train'][i]['output'] = to\n```\nI didn't test this particular version, but it should work. It can be improved, but in this case I think it doesn't matter, as the score stays the same or even degrades. Or maybe I didn't explore enough. But, again, there is no merit in it, it doesn't get you much closer to AGI algorithms.\n\nSo the insight is about looking at the task and being able almost immediately tell if the coloring is irrelevant. I suppose this is related to what Guillermo Barbadillo [said](https://www.kaggle.com/competitions/arc-prize-2024/discussion/545671) about representations. Irrelevant perspectives are quickly discarded. For example ([1e32b0e9](https://arcprize.org/play?task=1e32b0e9)), this is how the task looks like:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1088223%2Fc0a3c20bc3c7bfb0fe1c745573bb667b%2Foriginal.png?generation=1733447616624325&alt=media)\nAnd this is how I actually see it conceptually after just a moment, before understanding the solution:\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F1088223%2F035e3733601122e161176774dd890c99%2Frecolored.png?generation=1733447641150849&alt=media)\nOr something like that, I can be wrong, of course, but it kind of helped me, so who knows.\n\nI was trying to think big, but I lack both skill and creativity for that. And motivation. Sometimes I can work, sometimes I cannot... Anyway, I ended up exploring the [graph approach](https://www.kaggle.com/competitions/arc-prize-2024/discussion/518930#3064762), but with no success. I also tried neural cellular automata, but couldn't go beyond 1%.\n\nI decided not to touch LLMs. Why? I knew that many others would do it, so there is no point to pursue the same thing. And I still don't understand the transformer architecture on the math level, it would be nearly impossible for me to go beyond already existing stuff. Plus, I have limited compute. I also decided not to tinker with the icecuber's solver. Why? My C++ skills are nearly nonexistent. I would have to learn the language first. And, of course, this approach doesn't promise any AGI, so what's the point.\n\nOverall, I really like this whole quest for AGI. Maybe my naive fascination is not enough for a meaningful contribution, but I really appreciate the opportunity, so thanks to everyone who made this all possible. Let's see what happens next.",
      "votes": 12
    },
    {
      "id": 3065425,
      "postDate": "2024-12-06T19:23:04.143Z",
      "content": "<p>Nice insight!  Thank you for sharing.</p>",
      "rawMarkdown": "Nice insight!  Thank you for sharing.",
      "isDeleted": true
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-19T22:22:59Z",
  "competition_id": 67357,
  "competition_slug": "arc-prize-2024",
  "team_id": 12274985,
  "solution_url": "/competitions/arc-prize-2024/writeups/lyrialtus-21st-place-a-short-report"
}