ARC-solution Documentation
ARC-solution Documentation
1 Contestant
Competition name: Abstraction and Reasoning Challenge
3 Summary of approach
The main component of my solution is a DSL which applies up to 4 of 142 unary
transformations (based on 42 different functions, where some have multiple vari-
1
ants). I enumerate the transformations efficiently by reducing duplicates, and
then combine them by greedily stacking them to fit training samples. Every-
thing is implemented efficiently in C++ (with no dependencies) and running in
parallel. A simple scheduler tries to use the 9 hour / 16 GB memory budget
fully.
5 Ensembling
In the final model I run 4 different configurations and ensemble the predictions.
I run transformations search depth 3, depth 3 augmented with diagonal flips
(times two diagonal flips), and finally run depth 4 until I run out of time or
2
memory. The best predictions are picked according to the following criteria,
with the top criterion being the most important one:
• Solved the most training samples
6 Tricks
Augmenting my samples with diagonally flipped tasks, was a simple trick which
gave me significantly better score. Preprocessing all samples by remapping
colors according to some heuristics, also worked surprisingly well.
I believe my main advantage over most other competitors was my experience
from competitive programming. It allowed me to quickly and efficiently write
large amounts of image transformations in C++, which let me search through
many more combinations of transformations compared to a python implemen-
tation or an otherwise less optimized solution.
7 Execution time
A natural way to make my approach run faster is to reduce search depth. When
I use the full 9 hours I can run about half the problems at depth 4, while
running at depth 3 is about 20× faster (and takes 20× less memory). During
development I would run at depth 2, which is again about 15× faster than depth
3, while solving about 80% as many tasks on the evaluation set.
8 Code
The implementation is available at https://github.com/top-quarks/ARC-solution