This project is the results of my attempt to solve the ARC challenge.
The problems are psychometric-style puzzles that are very tricky for computers to solve. The best known methods employ a search over short programs.
In my approach, I built a domain-specific language (DSL) to generate the results for these puzzles. Also, I built an IDE to rapidly iterate on pieces of code written in this language to see if they solved the puzzle.
Here's a video of code interpretation part of the IDE in action:
And the power of masks:
This is the integrated environment that displays the problem examples, note-taking text areas,
This class does the heavy lifting of interpreting the ARC dsl language.
This is the graphical backbone of the DSL. All shapes are Masks, and this class provides many utilities for spatial reasoning.
For example: mask.left()
returns a mask of all the cells to the left of the positive cells in mask
.
You can chain any prepositional functions, like mask.above().left().around()
, which will give you a new mask.
This file specifies the syntax of the ARC dsl language.