rogermt commited on
Commit
b397245
·
verified ·
1 Parent(s): 6303972

Update README for v3 (306/400)

Browse files
Files changed (1) hide show
  1. README.md +58 -708
README.md CHANGED
@@ -1,215 +1,30 @@
1
- # NeuroGolf Solver
2
-
3
- Builds minimal ONNX networks for ARC-AGI tasks. Currently solves **294/400** on CPU (15s budget). With more time budget on faster hardware, expected .
4
-
5
- ## Repo
6
- https://huggingface.co/rogermt/neurogolf-solver
7
-
8
- Here’s the **clear, high‑signal overview** of the ARC‑AGI *NeuroGolf Championship* competition
9
-
10
- ---
11
-
12
- # 🧠 **What the Competition Actually Is**
13
- The NeuroGolf Championship is a **model‑building competition** based on the ARC‑AGI benchmark.
14
- Your job is to produce **400 ONNX models**, one per task, each mapping:
15
-
16
- ```
17
- input: [1, 10, 30, 30] one‑hot grid
18
- output: [1, 10, 30, 30] one‑hot grid
19
- ```
20
-
21
- Each task is a small visual transformation puzzle (flip, rotate, color map, crop, tile, etc.).
22
-
23
- You are **not** training a single model.
24
- You are **generating 400 tiny models**, one per puzzle.
25
-
26
- ---
27
-
28
- # 📦 **Input / Output Format**
29
- Each ONNX model must:
30
-
31
- - Take a **fixed static shape**: `[1,10,30,30]`
32
- - Output the same shape
33
- - Use **only allowed ONNX opset 10 operators**
34
- - Be **fully deterministic**
35
- - Run on **CPU** in the official evaluator
36
-
37
- The input grid is encoded as **10 channels**, one per color (0–9).
38
- The output must be the same encoding.
39
-
40
- ---
41
-
42
- # 🚫 **Forbidden / Restricted Ops**
43
- The competition bans:
44
-
45
- - Dynamic shapes
46
- - Control flow ops
47
- - Non‑deterministic ops
48
- - Most high‑level NN layers
49
- - Anything outside opset 10
50
- - Anything that breaks static shape inference
51
-
52
- **OneHot is allowed**, but has no CUDA kernel — which is why you replaced it.
53
-
54
- ---
55
-
56
- # 🧮 **Scoring System (the “Golf” part)**
57
- Lower score = better.
58
-
59
- Each model is scored by:
60
-
61
- ### **1. MACs (Multiply‑Accumulate operations)**
62
- - Measures computational cost
63
- - Conv kernels dominate this
64
-
65
- ### **2. Memory footprint**
66
- - Size of intermediate tensors
67
- - Larger spatial ops → higher memory
68
-
69
- ### **3. Parameter count**
70
- - Number of learned weights
71
- - Conv kernels dominate this too
72
-
73
- ### **Total Score = MACs + Memory + Params**
74
-
75
- This is why your solver tries:
76
-
77
- - Analytical ops first (score ≈ 0)
78
- - Then tiny convs (score > 0)
79
-
80
- ---
81
-
82
- # 🏌️ **Why It’s Called “NeuroGolf”**
83
- Because:
84
-
85
- - You “swing” at each task by generating a model
86
- - The goal is the **lowest score**
87
- - You can solve tasks with **zero‑parameter models** (identity, flip, rotate, gather)
88
- - Conv models are the “heavy clubs” — used only when necessary
89
-
90
- ---
91
-
92
- # 🧩 **Task Types**
93
- Most ARC tasks fall into:
94
-
95
- - Identity
96
- - Color remapping
97
- - Flips / rotations
98
- - Cropping / padding
99
- - Tiling / repetition
100
- - Spatial copying
101
- - Upscaling
102
- - Pattern extraction
103
- - Local convolutional rules
104
-
105
- Your solver implements **all of these**.
106
-
107
- ---
108
-
109
- # 🏗️ **Your Solver Architecture (high‑level)**
110
- Your solver tries:
111
-
112
- ### **1. Analytical solvers (fast, zero‑cost)**
113
- - identity
114
- - constant
115
- - color_map
116
- - transpose
117
- - flip
118
- - rotate
119
- - tile
120
- - upscale
121
- - concat
122
- - spatial_gather
123
-
124
- ### **2. Conv solvers**
125
- - fixed‑shape conv
126
- - variable‑shape conv
127
- - diff‑shape conv
128
-
129
- Each produces a tiny ONNX graph.
130
-
131
- ---
132
-
133
- # 🧪 **Validation**
134
- Each model must:
135
-
136
- - Load in ONNX Runtime
137
- - Run on all train + test + arc‑gen examples
138
- - Produce exact one‑hot output
139
- - Use only allowed ops
140
-
141
- Your `validate()` function enforces this.
142
-
143
- ---
144
-
145
- # 📊 **Submission**
146
- You submit:
147
-
148
- ```
149
- submission/
150
- task001.onnx
151
- task002.onnx
152
- ...
153
- task400.onnx
154
- ```
155
-
156
- The evaluator:
157
-
158
- 1. Loads each ONNX file
159
- 2. Computes MACs, memory, params
160
- 3. Sums them
161
- 4. Produces your final score
162
-
163
- Lowest score wins.
164
-
165
- ---
166
-
167
- # 🔥 **Strategic Insights**
168
- This is the part most competitors miss:
169
-
170
- ### ✔ Analytical solvers are king
171
- They give **zero‑cost** models.
172
-
173
- ### ✔ Conv solvers must be tiny
174
- Kernel size dominates MACs.
175
-
176
- ### ✔ OneHot is expensive on GPU
177
- You fixed this by replacing it with Equal+Cast.
178
-
179
- ### ✔ Static shapes are mandatory
180
- Dynamic ops break the evaluator.
181
-
182
- ### ✔ Validation must be strict
183
- Any mismatch → task marked unsolved → huge penalty.
184
-
185
- ### ✔ WandB logging is essential
186
- You now track:
187
- - solver type
188
- - time
189
- - model size
190
- - MACs
191
- - memory
192
- - params
193
- - total score
194
-
195
- This lets you optimize solver ordering.
196
-
197
- ---
198
-
199
- # 🎯 **In One Sentence**
200
- The NeuroGolf Championship is a puzzle‑to‑model generator competition where you must produce 400 tiny ONNX models that solve ARC tasks with the lowest possible computational cost, using only opset‑10 static graphs.
201
-
202
- ---
203
-
204
- If you want, I can also give you:
205
-
206
- - A **strategy guide** for beating the leaderboard
207
- - A **solver ordering optimization**
208
- - A **cost‑minimizing conv kernel search**
209
- - A **task taxonomy** for ARC
210
- - A **visual diagram** of your solver pipeline
211
-
212
- Just tell me what direction you want.
213
 
214
  ## Quick Start
215
 
@@ -219,25 +34,15 @@ git clone https://huggingface.co/rogermt/neurogolf-solver
219
  cd neurogolf-solver
220
 
221
  # 2. Install deps
222
- pip install numpy onnx onnxruntime # or onnxruntime-gpu for CUDA
223
 
224
  # 3. Get ARC data
225
  git clone --depth 1 https://github.com/fchollet/ARC-AGI.git
226
 
227
- # 4. Run (pick your config)
228
- # CPU, 30s per task (~5 min total):
229
- python neurogolf_solver.py --device cpu --conv_budget 30
230
-
231
- # CPU, 60s per task (~10 min, more tasks solved):
232
- python neurogolf_solver.py --device cpu --conv_budget 60
233
 
234
- # CUDA (if onnxruntime-gpu installed):
235
- python neurogolf_solver.py --device cuda --conv_budget 60
236
-
237
- # Auto-detect device:
238
- python neurogolf_solver.py --conv_budget 60
239
-
240
- # 5. Results in submission/ directory
241
  ls submission/*.onnx | wc -l
242
  ```
243
 
@@ -251,503 +56,48 @@ with zipfile.ZipFile('submission.zip', 'w', zipfile.ZIP_DEFLATED) as zf:
251
  print(f"Created submission.zip: {os.path.getsize('submission.zip')/1024:.0f} KB")
252
  ```
253
 
254
- ## How It Works
255
-
256
- **Format:** Input/output = `[1, 10, 30, 30]` one-hot float32. ONNX opset 10, IR version 10.
257
-
258
- **Main pipeline (conv solver):**
259
- ```
260
- Input [1,10,30,30] -> Slice [1,10,H,W] -> Conv2d -> ArgMax -> OneHot -> Pad [1,10,30,30]
261
- ```
262
-
263
- - Learns optimal conv weights via **least-squares** on one-hot patches
264
- - Tries kernel sizes 1, 3, 5, ..., 29 (smallest first)
265
- - Also tries with bias for better boundary handling
266
- - ArgMax + OneHot eliminates numerical precision issues
267
-
268
- **Analytical solvers** (instant, tiny models): identity, color_map (1x1 conv), transpose, flip, rotate, tile, upscale, concat, spatial_gather, constant.
269
-
270
  ## Key Parameters
271
 
272
  | Flag | Default | Description |
273
  |------|---------|-------------|
274
- | `--device` | `auto` | `cpu`, `cuda`, or `auto` |
275
  | `--conv_budget` | `30` | Seconds per task for conv solver. More = more tasks solved |
276
  | `--data_dir` | `ARC-AGI/data/training/` | Path to task JSONs |
277
  | `--output_dir` | `submission` | Where to save .onnx files |
278
  | `--kaggle` | off | Use Kaggle task format (task001.json) |
279
  | `--tasks` | all | Comma-separated task numbers (e.g., `1,2,3`) |
 
280
 
281
- ## Architecture of generated ONNX models
282
 
283
- Each .onnx file is a tiny network, typically:
284
- - **Same-shape tasks**: Single Conv2d layer (10→10 channels, kernel 1-29)
285
- - **Different-shape tasks**: GatherElements-based pixel remapping
286
- - **Cost** = MACs + memory_bytes + params → **Score** = max(1, 25 - ln(cost))
287
 
288
- ## What's NOT solved yet (106 tasks)
 
 
 
 
 
 
289
 
290
- - Variable-shape tasks (input size differs across examples) — need dynamic ONNX
291
- - Tasks requiring multi-step reasoning (flood fill, gravity, object detection)
292
- - Tasks where the transformation depends on counting/global properties
293
- - Large grids where conv kernel > 29 is needed
 
294
 
295
- ## Feedback logs
296
 
297
- After running, please share the full terminal output especially:
298
- 1. The "Solved: X/400" line
299
- 2. Any errors
300
- 3. Total time taken
301
 
302
- this is run on GPU:
303
- /kaggle/working/neurogolf-solver
304
- Using providers: ['CUDAExecutionProvider', 'CPUExecutionProvider']
305
- Loaded 400 tasks, solving 400
306
- Conv budget: 30.0s per task
307
- ======================================================================
308
- wandb: [wandb.login()] Loaded credentials for https://api.wandb.ai from WANDB_API_KEY.
309
- wandb: Currently logged in as: rogermt23 to https://api.wandb.ai. Use `wandb login --relogin` to force relogin
310
- wandb: ⢿ setting up run jfx0r5vj (0.0s)
311
- wandb: ⣻ setting up run jfx0r5vj (0.0s)
312
- wandb: Tracking run with wandb version 0.25.0
313
- wandb: Run data is saved locally in /kaggle/working/neurogolf-solver/wandb/run-20260424_053417-jfx0r5vj
314
- wandb: Run `wandb offline` to turn off syncing.
315
- wandb: Syncing run solver_run
316
- wandb: ⭐️ View project at https://wandb.ai/rogermt23/neurogolf
317
- wandb: 🚀 View run at https://wandb.ai/rogermt23/neurogolf/runs/jfx0r5vj
318
- Task 1: UNSOLVED 0.001s
319
- Task 2: spatial_gather 56717390 7.884s ( 250,460 bytes)
320
- Task 3: UNSOLVED 0.001s
321
- Task 4: spatial_gather 2417390 0.060s ( 10,457 bytes)
322
- Task 5: spatial_gather 19770030 10.996s ( 176,971 bytes)
323
- Task 6: spatial_gather 103886 0.023s ( 10,703 bytes)
324
- Task 7: spatial_gather 308014 0.064s ( 20,171 bytes)
325
- Task 8: spatial_gather 11105390 0.279s ( 48,860 bytes)
326
- Task 9: spatial_gather 15449390 2.732s ( 68,060 bytes)
327
- Task 10: spatial_gather 744750 0.083s ( 32,971 bytes)
328
- Task 11: spatial_gather 1074670 0.313s ( 32,971 bytes)
329
- Task 12: spatial_gather 429974 0.070s ( 10,568 bytes)
330
- Task 13: spatial_gather 66129390 9.641s ( 292,060 bytes)
331
- Task 14: UNSOLVED 0.003s
332
- Task 15: spatial_gather 125550 0.042s ( 4,168 bytes)
333
- Task 16: color_map 126500 0.016s ( 549 bytes)
334
- Task 17: spatial_gather 2286830 0.269s ( 20,171 bytes)
335
- Task 18: spatial_gather 11105390 0.894s ( 48,860 bytes)
336
- Task 19: UNSOLVED 0.001s
337
- Task 20: spatial_gather 313462 0.048s ( 10,568 bytes)
338
- Task 21: UNSOLVED 0.002s
339
- Task 22: spatial_gather 664286 0.043s ( 20,306 bytes)
340
- Task 23: spatial_gather 15449390 0.269s ( 68,060 bytes)
341
- Task 24: spatial_gather 7485390 0.156s ( 32,860 bytes)
342
- Task 25: spatial_gather 15449390 1.831s ( 68,060 bytes)
343
- Task 26: spatial_gather 236654 0.055s ( 20,306 bytes)
344
- Task 27: spatial_gather 1825462 0.259s ( 68,171 bytes)
345
- Task 28: spatial_gather 1825462 0.233s ( 68,171 bytes)
346
- Task 29: UNSOLVED 0.002s
347
- Task 30: spatial_gather 4589390 0.068s ( 20,060 bytes)
348
- Task 31: UNSOLVED 0.001s
349
- Task 32: spatial_gather 2417390 0.041s ( 10,457 bytes)
350
- Task 33: spatial_gather 2460334 0.444s ( 32,971 bytes)
351
- Task 34: spatial_gather 1088750 0.274s ( 48,971 bytes)
352
- Task 35: spatial_gather 901462 0.188s ( 32,971 bytes)
353
- Task 36: UNSOLVED 0.004s
354
- Task 37: spatial_gather 565462 0.122s ( 20,171 bytes)
355
- Task 38: spatial_gather 258254 0.038s ( 10,703 bytes)
356
- Task 39: spatial_gather 307706 0.047s ( 10,703 bytes)
357
- Task 40: spatial_gather 565462 0.116s ( 20,171 bytes)
358
- Task 41: spatial_gather 313462 0.065s ( 10,568 bytes)
359
- Task 42: spatial_gather 2413462 0.383s ( 90,571 bytes)
360
- Task 43: spatial_gather 3841462 0.736s ( 144,971 bytes)
361
- Task 44: spatial_gather 565462 0.123s ( 20,171 bytes)
362
- Task 45: spatial_gather 901462 0.207s ( 32,971 bytes)
363
- Task 46: UNSOLVED 0.001s
364
- Task 47: spatial_gather 1088750 0.139s ( 48,971 bytes)
365
- Task 48: UNSOLVED 0.001s
366
- Task 49: UNSOLVED 0.002s
367
- Task 50: spatial_gather 26309390 1.618s ( 116,060 bytes)
368
- Task 51: spatial_gather 15449390 0.690s ( 68,060 bytes)
369
- Task 52: spatial_gather 50094 0.035s ( 4,168 bytes)
370
- Task 53: spatial_gather 50094 0.036s ( 4,168 bytes)
371
- Task 54: spatial_gather 40079862 39.285s ( 176,971 bytes)
372
- Task 55: spatial_gather 32825390 2.236s ( 144,860 bytes)
373
- Task 56: spatial_gather 49662 0.049s ( 4,303 bytes)
374
- Task 57: spatial_gather 602198 0.051s ( 33,106 bytes)
375
- Task 58: spatial_gather 32825390 2.085s ( 144,860 bytes)
376
- Task 59: spatial_gather 1074670 0.217s ( 32,971 bytes)
377
- Task 60: spatial_gather 770302 0.093s ( 48,971 bytes)
378
- Task 61: spatial_gather 2749014 0.539s ( 32,971 bytes)
379
- Task 62: spatial_gather 565462 0.137s ( 20,171 bytes)
380
- Task 63: spatial_gather 15449390 0.562s ( 68,060 bytes)
381
- Task 64: spatial_gather 15449390 1.276s ( 68,060 bytes)
382
- Task 65: UNSOLVED 0.001s
383
- Task 66: spatial_gather 15449390 1.010s ( 68,060 bytes)
384
- Task 67: UNSOLVED 0.001s
385
- Task 68: spatial_gather 565462 0.116s ( 20,171 bytes)
386
- Task 69: spatial_gather 565462 0.085s ( 20,171 bytes)
387
- Task 70: spatial_gather 2460334 0.382s ( 32,971 bytes)
388
- Task 71: spatial_gather 726550 0.080s ( 10,568 bytes)
389
- Task 72: spatial_gather 2571674 0.249s ( 145,106 bytes)
390
- Task 73: spatial_gather 66862 0.033s ( 4,168 bytes)
391
- Task 74: spatial_gather 26323862 18.025s ( 116,171 bytes)
392
- Task 75: spatial_gather 2798478 0.658s ( 90,571 bytes)
393
- Task 76: spatial_gather 15449390 0.796s ( 68,060 bytes)
394
- Task 77: spatial_gather 11105390 0.891s ( 48,860 bytes)
395
- Task 78: spatial_gather 901462 0.138s ( 32,971 bytes)
396
- Task 79: spatial_gather 555386 0.027s ( 10,703 bytes)
397
- Task 80: spatial_gather 32825390 19.188s ( 144,860 bytes)
398
- Task 81: spatial_gather 178414 0.030s ( 10,568 bytes)
399
- Task 82: spatial_gather 11105390 0.087s ( 48,860 bytes)
400
- Task 83: UNSOLVED 0.006s
401
- Task 84: spatial_gather 20517390 0.460s ( 90,460 bytes)
402
- Task 85: spatial_gather 15449390 0.664s ( 68,060 bytes)
403
- Task 86: spatial_gather 4589390 0.121s ( 20,060 bytes)
404
- Task 87: spatial_gather 50094 0.034s ( 4,168 bytes)
405
- Task 88: UNSOLVED 0.002s
406
- Task 89: spatial_gather 2166574 0.668s ( 48,971 bytes)
407
- Task 90: spatial_gather 26309390 0.467s ( 116,060 bytes)
408
- Task 91: UNSOLVED 0.001s
409
- Task 92: spatial_gather 11105390 0.960s ( 48,860 bytes)
410
- Task 93: spatial_gather 2497270 0.598s ( 48,971 bytes)
411
- Task 94: spatial_gather 6716462 1.354s ( 116,171 bytes)
412
- Task 95: spatial_gather 125550 0.044s ( 4,168 bytes)
413
- Task 96: UNSOLVED 0.002s
414
- Task 97: spatial_gather 11105390 0.751s ( 48,860 bytes)
415
- Task 98: spatial_gather 4589390 0.147s ( 20,060 bytes)
416
- Task 99: spatial_gather 565462 0.095s ( 20,171 bytes)
417
- Task 100: spatial_gather 139166 0.018s ( 4,303 bytes)
418
- Task 101: spatial_gather 26309390 1.649s ( 116,060 bytes)
419
- Task 102: spatial_gather 6628374 2.232s ( 176,971 bytes)
420
- Task 103: spatial_gather 72062 0.036s ( 10,703 bytes)
421
- Task 104: UNSOLVED 0.001s
422
- Task 105: spatial_gather 15449390 0.557s ( 68,060 bytes)
423
- Task 106: UNSOLVED 0.001s
424
- Task 107: UNSOLVED 0.002s
425
- Task 108: UNSOLVED 0.044s
426
- Task 109: UNSOLVED 0.001s
427
- Task 110: spatial_gather 7013230 0.799s ( 32,971 bytes)
428
- Task 111: spatial_gather 559706 0.026s ( 20,306 bytes)
429
- Task 112: spatial_gather 26309390 2.548s ( 116,060 bytes)
430
- Task 113: spatial_gather 20517390 0.146s ( 90,460 bytes)
431
- Task 114: UNSOLVED 0.001s
432
- Task 115: UNSOLVED 0.001s
433
- Task 116: UNSOLVED 0.004s
434
- Task 117: spatial_gather 11105390 0.634s ( 48,860 bytes)
435
- Task 118: spatial_gather 32825390 7.108s ( 144,860 bytes)
436
- Task 119: spatial_gather 2575574 0.586s ( 68,171 bytes)
437
- Task 120: spatial_gather 969390 0.046s ( 4,057 bytes)
438
- Task 121: spatial_gather 1460126 0.042s ( 33,106 bytes)
439
- Task 122: spatial_gather 4589390 0.080s ( 20,060 bytes)
440
- Task 123: UNSOLVED 0.001s
441
- Task 124: UNSOLVED 0.001s
442
- Task 125: spatial_gather 6716462 1.353s ( 116,171 bytes)
443
- Task 126: spatial_gather 4589390 0.066s ( 20,060 bytes)
444
- Task 127: spatial_gather 969390 0.036s ( 4,057 bytes)
445
- Task 128: spatial_gather 5244462 1.379s ( 90,571 bytes)
446
- Task 129: spatial_gather 50094 0.019s ( 4,168 bytes)
447
- Task 130: spatial_gather 121086 0.034s ( 4,303 bytes)
448
- Task 131: spatial_gather 11105390 0.146s ( 48,860 bytes)
449
- Task 132: spatial_gather 7485390 0.175s ( 32,860 bytes)
450
- Task 133: spatial_gather 15449390 2.129s ( 68,060 bytes)
451
- Task 134: UNSOLVED 0.003s
452
- Task 135: spatial_gather 121086 0.037s ( 4,303 bytes)
453
- Task 136: spatial_gather 1321462 0.192s ( 48,971 bytes)
454
- Task 137: UNSOLVED 34.831s
455
- Task 138: UNSOLVED 0.002s
456
- Task 139: spatial_gather 469550 0.050s ( 20,171 bytes)
457
- Task 140: spatial_gather 50094 0.021s ( 4,168 bytes)
458
- Task 141: spatial_gather 32825390 2.099s ( 144,860 bytes)
459
- Task 142: UNSOLVED 0.003s
460
- Task 143: spatial_gather 565462 0.112s ( 20,171 bytes)
461
- Task 144: spatial_gather 241742 0.046s ( 20,306 bytes)
462
- Task 145: spatial_gather 32825390 2.641s ( 144,860 bytes)
463
- Task 146: spatial_gather 68166 0.038s ( 4,303 bytes)
464
- Task 147: spatial_gather 2417390 0.039s ( 10,457 bytes)
465
- Task 148: spatial_gather 32825390 2.403s ( 144,860 bytes)
466
- Task 149: spatial_gather 664286 0.039s ( 20,306 bytes)
467
- Task 150: spatial_gather 2417390 0.043s ( 10,457 bytes)
468
- Task 151: spatial_gather 2417390 0.055s ( 10,457 bytes)
469
- Task 152: UNSOLVED 0.003s
470
- Task 153: spatial_gather 559706 0.035s ( 20,306 bytes)
471
- Task 154: spatial_gather 2852462 0.619s ( 48,971 bytes)
472
- Task 155: spatial_gather 2417390 0.044s ( 10,457 bytes)
473
- Task 156: spatial_gather 901462 0.096s ( 32,971 bytes)
474
- Task 157: spatial_gather 1933862 0.227s ( 48,971 bytes)
475
- Task 158: spatial_gather 26309390 5.773s ( 116,060 bytes)
476
- Task 159: UNSOLVED 0.004s
477
- Task 160: spatial_gather 313462 0.034s ( 10,568 bytes)
478
- Task 161: spatial_gather 11105390 0.888s ( 48,860 bytes)
479
- Task 162: spatial_gather 9207862 3.640s ( 90,571 bytes)
480
- Task 163: spatial_gather 671470 0.148s ( 20,171 bytes)
481
- Task 164: UNSOLVED 0.003s
482
- Task 165: spatial_gather 6939862 2.260s ( 68,171 bytes)
483
- Task 166: spatial_gather 11105390 0.206s ( 48,860 bytes)
484
- Task 167: spatial_gather 72494 0.024s ( 10,568 bytes)
485
- Task 168: spatial_gather 901462 0.121s ( 32,971 bytes)
486
- Task 169: spatial_gather 1321462 0.199s ( 48,971 bytes)
487
- Task 170: UNSOLVED 0.003s
488
- Task 171: spatial_gather 969390 0.035s ( 4,057 bytes)
489
- Task 172: UNSOLVED 0.004s
490
- Task 173: spatial_gather 15449390 1.470s ( 68,060 bytes)
491
- Task 174: UNSOLVED 0.001s
492
- Task 175: spatial_gather 3714030 0.543s ( 32,971 bytes)
493
- Task 176: spatial_gather 40065390 0.265s ( 176,860 bytes)
494
- Task 177: UNSOLVED 0.002s
495
- Task 178: UNSOLVED 0.001s
496
- Task 179: transpose 36000 0.014s ( 127 bytes)
497
- Task 180: spatial_gather 381182 0.037s ( 20,306 bytes)
498
- Task 181: spatial_gather 522054 0.076s ( 32,971 bytes)
499
- Task 182: spatial_gather 9207862 4.502s ( 90,571 bytes)
500
- Task 183: UNSOLVED 0.001s
501
- Task 184: UNSOLVED 0.003s
502
- Task 185: UNSOLVED 0.005s
503
- Task 186: UNSOLVED 1.500s
504
- Task 187: spatial_gather 26309390 8.228s ( 116,060 bytes)
505
- Task 188: UNSOLVED 0.001s
506
- Task 189: spatial_gather 468002 0.060s ( 20,306 bytes)
507
- Task 190: spatial_gather 1321462 0.280s ( 48,971 bytes)
508
- Task 191: UNSOLVED 68.210s
509
- Task 192: spatial_gather 969390 0.032s ( 4,057 bytes)
510
- Task 193: spatial_gather 2417390 0.071s ( 10,457 bytes)
511
- Task 194: UNSOLVED 0.003s
512
- Task 195: UNSOLVED 0.002s
513
- Task 196: spatial_gather 20517390 0.868s ( 90,460 bytes)
514
- Task 197: spatial_gather 15449390 0.426s ( 68,060 bytes)
515
- Task 198: UNSOLVED 33.038s
516
- Task 199: spatial_gather 11105390 0.143s ( 48,860 bytes)
517
- Task 200: spatial_gather 3841462 0.673s ( 144,971 bytes)
518
- Task 201: UNSOLVED 0.002s
519
- Task 202: spatial_gather 11105390 0.846s ( 48,860 bytes)
520
- Task 203: spatial_gather 4589390 0.127s ( 20,060 bytes)
521
- Task 204: spatial_gather 48029390 6.706s ( 212,060 bytes)
522
- Task 205: UNSOLVED 0.003s
523
- Task 206: spatial_gather 4589390 0.087s ( 20,060 bytes)
524
- Task 207: spatial_gather 65666 0.021s ( 4,303 bytes)
525
- Task 208: spatial_gather 10136430 4.157s ( 90,571 bytes)
526
- Task 209: UNSOLVED 0.003s
527
- Task 210: UNSOLVED 0.004s
528
- Task 211: UNSOLVED 0.003s
529
- Task 212: spatial_gather 901462 0.134s ( 32,971 bytes)
530
- Task 213: UNSOLVED 0.002s
531
- Task 214: spatial_gather 1139246 0.180s ( 116,171 bytes)
532
- Task 215: spatial_gather 26309390 1.274s ( 116,060 bytes)
533
- Task 216: UNSOLVED 0.003s
534
- Task 217: spatial_gather 1501550 0.280s ( 68,171 bytes)
535
- Task 218: UNSOLVED 0.003s
536
- Task 219: spatial_gather 5653862 1.642s ( 144,971 bytes)
537
- Task 220: spatial_gather 969390 0.049s ( 4,057 bytes)
538
- Task 221: UNSOLVED 0.002s
539
- Task 222: spatial_gather 1352950 0.211s ( 20,171 bytes)
540
- Task 223: UNSOLVED 0.005s
541
- Task 224: spatial_gather 7485390 0.347s ( 32,860 bytes)
542
- Task 225: spatial_gather 143990 0.049s ( 10,568 bytes)
543
- Task 226: spatial_gather 1825462 0.298s ( 68,171 bytes)
544
- Task 227: spatial_gather 221822 0.031s ( 20,306 bytes)
545
- Task 228: spatial_gather 313462 0.068s ( 10,568 bytes)
546
- Task 229: spatial_gather 50094 0.027s ( 4,168 bytes)
547
- Task 230: spatial_gather 969390 0.046s ( 4,057 bytes)
548
- Task 231: UNSOLVED 0.001s
549
- Task 232: spatial_gather 11105390 0.202s ( 48,860 bytes)
550
- Task 233: UNSOLVED 0.003s
551
- Task 234: spatial_gather 11105390 0.737s ( 48,860 bytes)
552
- Task 235: spatial_gather 1072586 0.056s ( 68,306 bytes)
553
- Task 236: spatial_gather 241742 0.049s ( 20,306 bytes)
554
- Task 237: spatial_gather 7485390 0.098s ( 32,860 bytes)
555
- Task 238: UNSOLVED 0.002s
556
- Task 239: UNSOLVED 0.001s
557
- Task 240: spatial_gather 30870190 17.815s ( 336,971 bytes)
558
- Task 241: transpose 36000 0.026s ( 127 bytes)
559
- Task 242: spatial_gather 292586 0.041s ( 4,303 bytes)
560
- Task 243: spatial_gather 7485390 0.471s ( 32,860 bytes)
561
- Task 244: UNSOLVED 0.002s
562
- Task 245: spatial_gather 11105390 0.197s ( 48,860 bytes)
563
- Task 246: spatial_gather 26309390 1.377s ( 116,060 bytes)
564
- Task 247: UNSOLVED 0.002s
565
- Task 248: UNSOLVED 1.096s
566
- Task 249: UNSOLVED 0.001s
567
- Task 250: spatial_gather 901462 0.119s ( 32,971 bytes)
568
- Task 251: spatial_gather 7485390 0.128s ( 32,860 bytes)
569
- Task 252: spatial_gather 11105390 0.152s ( 48,860 bytes)
570
- Task 253: spatial_gather 904082 0.030s ( 20,306 bytes)
571
- Task 254: spatial_gather 744750 0.095s ( 32,971 bytes)
572
- Task 255: UNSOLVED 81.152s
573
- Task 256: spatial_gather 7485390 0.094s ( 32,860 bytes)
574
- Task 257: spatial_gather 465842 0.039s ( 20,306 bytes)
575
- Task 258: spatial_gather 969390 0.025s ( 4,057 bytes)
576
- Task 259: UNSOLVED 0.001s
577
- Task 260: spatial_gather 901462 0.180s ( 32,971 bytes)
578
- Task 261: spatial_gather 969390 0.033s ( 4,057 bytes)
579
- Task 262: UNSOLVED 0.572s
580
- Task 263: UNSOLVED 0.001s
581
- Task 264: UNSOLVED 0.001s
582
- Task 265: spatial_gather 20646614 8.790s ( 250,571 bytes)
583
- Task 266: spatial_gather 56382 0.022s ( 4,168 bytes)
584
- Task 267: spatial_gather 92014 0.023s ( 4,168 bytes)
585
- Task 268: spatial_gather 7485390 0.120s ( 32,860 bytes)
586
- Task 269: UNSOLVED 0.001s
587
- Task 270: spatial_gather 2852462 0.709s ( 48,971 bytes)
588
- Task 271: spatial_gather 258686 0.026s ( 10,703 bytes)
589
- Task 272: spatial_gather 969390 0.021s ( 4,057 bytes)
590
- Task 273: spatial_gather 2413462 0.386s ( 90,571 bytes)
591
- Task 274: UNSOLVED 0.001s
592
- Task 275: UNSOLVED 0.001s
593
- Task 276: color_map 126500 0.016s ( 549 bytes)
594
- Task 277: spatial_gather 1825462 0.340s ( 68,171 bytes)
595
- Task 278: spatial_gather 20517390 1.141s ( 90,460 bytes)
596
- Task 279: spatial_gather 26309390 1.984s ( 116,060 bytes)
597
- Task 280: spatial_gather 56717390 13.654s ( 250,460 bytes)
598
- Task 281: spatial_gather 11105390 0.463s ( 48,860 bytes)
599
- Task 282: spatial_gather 125550 0.041s ( 4,168 bytes)
600
- Task 283: spatial_gather 565462 0.068s ( 20,171 bytes)
601
- Task 284: spatial_gather 20517390 0.889s ( 90,460 bytes)
602
- Task 285: spatial_gather 15449390 2.575s ( 68,060 bytes)
603
- Task 286: spatial_gather 15449390 0.789s ( 68,060 bytes)
604
- Task 287: spatial_gather 2188150 0.566s ( 32,971 bytes)
605
- Task 288: spatial_gather 4589390 0.068s ( 20,060 bytes)
606
- Task 289: UNSOLVED 0.001s
607
- Task 290: UNSOLVED 0.001s
608
- Task 291: UNSOLVED 0.002s
609
- Task 292: spatial_gather 66129390 0.810s ( 292,060 bytes)
610
- Task 293: spatial_gather 2417390 0.073s ( 10,457 bytes)
611
- Task 294: spatial_gather 145462 0.027s ( 4,168 bytes)
612
- Task 295: UNSOLVED 0.001s
613
- Task 296: spatial_gather 140006 0.043s ( 10,703 bytes)
614
- Task 297: spatial_gather 11105390 0.087s ( 48,860 bytes)
615
- Task 298: spatial_gather 969390 0.045s ( 4,057 bytes)
616
- Task 299: spatial_gather 242390 0.056s ( 20,171 bytes)
617
- Task 300: UNSOLVED 0.001s
618
- Task 301: spatial_gather 2417390 0.055s ( 10,457 bytes)
619
- Task 302: spatial_gather 2575574 0.549s ( 68,171 bytes)
620
- Task 303: spatial_gather 20517390 2.596s ( 90,460 bytes)
621
- Task 304: UNSOLVED 0.001s
622
- Task 305: spatial_gather 1352950 0.212s ( 20,171 bytes)
623
- Task 306: spatial_gather 40065390 5.174s ( 176,860 bytes)
624
- Task 307: UNSOLVED 0.001s
625
- Task 308: UNSOLVED 0.002s
626
- Task 309: color_map 126500 0.030s ( 549 bytes)
627
- Task 310: UNSOLVED 0.004s
628
- Task 311: UNSOLVED 0.007s
629
- Task 312: spatial_gather 1860374 0.339s ( 48,971 bytes)
630
- Task 313: spatial_gather 15449390 0.577s ( 68,060 bytes)
631
- Task 314: spatial_gather 383734 0.071s ( 20,171 bytes)
632
- Task 315: UNSOLVED 0.001s
633
- Task 316: spatial_gather 307706 0.036s ( 10,703 bytes)
634
- Task 317: spatial_gather 125550 0.041s ( 4,168 bytes)
635
- Task 318: spatial_gather 143342 0.041s ( 10,703 bytes)
636
- Task 319: UNSOLVED 0.004s
637
- Task 320: spatial_gather 7485390 0.099s ( 32,860 bytes)
638
- Task 321: spatial_gather 341342 0.055s ( 20,306 bytes)
639
- Task 322: spatial_gather 50094 0.036s ( 4,168 bytes)
640
- Task 323: spatial_gather 3976174 0.677s ( 90,571 bytes)
641
- Task 324: spatial_gather 15449390 1.193s ( 68,060 bytes)
642
- Task 325: UNSOLVED 0.001s
643
- Task 326: UNSOLVED 0.001s
644
- Task 327: UNSOLVED 0.001s
645
- Task 328: spatial_gather 56717390 4.462s ( 250,460 bytes)
646
- Task 329: spatial_gather 969390 0.023s ( 4,057 bytes)
647
- Task 330: spatial_gather 1825462 0.304s ( 68,171 bytes)
648
- Task 331: spatial_gather 145462 0.041s ( 4,168 bytes)
649
- Task 332: spatial_gather 32825390 0.288s ( 144,860 bytes)
650
- Task 333: spatial_gather 565462 0.121s ( 20,171 bytes)
651
- Task 334: spatial_gather 114206 0.050s ( 10,703 bytes)
652
- Task 335: spatial_gather 15449390 0.478s ( 68,060 bytes)
653
- Task 336: spatial_gather 1321462 0.155s ( 48,971 bytes)
654
- Task 337: color_map 126500 0.017s ( 549 bytes)
655
- Task 338: spatial_gather 32825390 3.523s ( 144,860 bytes)
656
- Task 339: UNSOLVED 0.000s
657
- Task 340: spatial_gather 7485390 0.357s ( 32,860 bytes)
658
- Task 341: spatial_gather 901462 0.197s ( 32,971 bytes)
659
- Task 342: spatial_gather 901462 0.178s ( 32,971 bytes)
660
- Task 343: spatial_gather 1847262 0.278s ( 90,571 bytes)
661
- Task 344: spatial_gather 2417390 0.047s ( 10,457 bytes)
662
- Task 345: spatial_gather 1321462 0.188s ( 48,971 bytes)
663
- Task 346: UNSOLVED 0.002s
664
- Task 347: spatial_gather 151346 0.046s ( 20,306 bytes)
665
- Task 348: spatial_gather 4589390 0.059s ( 20,060 bytes)
666
- Task 349: UNSOLVED 28.645s
667
- Task 350: spatial_gather 32825390 1.971s ( 144,860 bytes)
668
- Task 351: spatial_gather 711914 0.037s ( 10,703 bytes)
669
- Task 352: spatial_gather 969390 0.025s ( 4,057 bytes)
670
- Task 353: spatial_gather 7485390 0.169s ( 32,860 bytes)
671
- Task 354: spatial_gather 901462 0.193s ( 32,971 bytes)
672
- Task 355: UNSOLVED 0.003s
673
- Task 356: spatial_gather 1321462 0.264s ( 48,971 bytes)
674
- Task 357: UNSOLVED 1.055s
675
- Task 358: spatial_gather 26309390 1.681s ( 116,060 bytes)
676
- Task 359: spatial_gather 2417390 0.067s ( 10,457 bytes)
677
- Task 360: spatial_gather 285254 0.053s ( 10,703 bytes)
678
- Task 361: spatial_gather 313462 0.065s ( 10,568 bytes)
679
- Task 362: spatial_gather 565462 0.134s ( 20,171 bytes)
680
- Task 363: spatial_gather 901462 0.167s ( 32,971 bytes)
681
- Task 364: spatial_gather 20517390 1.368s ( 90,460 bytes)
682
- Task 365: UNSOLVED 0.001s
683
- Task 366: UNSOLVED 0.003s
684
- Task 367: spatial_gather 26309390 2.161s ( 116,060 bytes)
685
- Task 368: spatial_gather 901462 0.133s ( 32,971 bytes)
686
- Task 369: spatial_gather 1321462 0.223s ( 48,971 bytes)
687
- Task 370: spatial_gather 11105390 0.705s ( 48,860 bytes)
688
- Task 371: spatial_gather 11105390 0.173s ( 48,860 bytes)
689
- Task 372: spatial_gather 669254 0.063s ( 20,306 bytes)
690
- Task 373: spatial_gather 121238 0.039s ( 20,171 bytes)
691
- Task 374: UNSOLVED 14.200s
692
- Task 375: spatial_gather 4589390 0.050s ( 20,060 bytes)
693
- Task 376: UNSOLVED 0.001s
694
- Task 377: UNSOLVED 0.003s
695
- Task 378: spatial_gather 11105390 0.303s ( 48,860 bytes)
696
- Task 379: spatial_gather 20517390 1.514s ( 90,460 bytes)
697
- Task 380: spatial_gather 50094 0.038s ( 4,168 bytes)
698
- Task 381: spatial_gather 1321462 0.212s ( 48,971 bytes)
699
- Task 382: spatial_gather 20517390 1.092s ( 90,460 bytes)
700
- Task 383: spatial_gather 15449390 1.503s ( 68,060 bytes)
701
- Task 384: UNSOLVED 0.001s
702
- Task 385: spatial_gather 586582 0.093s ( 48,971 bytes)
703
- Task 386: spatial_gather 201470 0.032s ( 20,306 bytes)
704
- Task 387: spatial_gather 15449390 1.712s ( 68,060 bytes)
705
- Task 388: UNSOLVED 0.001s
706
- Task 389: spatial_gather 969390 0.023s ( 4,057 bytes)
707
- Task 390: spatial_gather 3956462 0.939s ( 68,171 bytes)
708
- Task 391: UNSOLVED 0.002s
709
- Task 392: spatial_gather 901462 0.173s ( 32,971 bytes)
710
- Task 393: spatial_gather 420578 0.037s ( 10,703 bytes)
711
- Task 394: UNSOLVED 0.001s
712
- Task 395: spatial_gather 96146 0.027s ( 10,703 bytes)
713
- Task 396: UNSOLVED 0.002s
714
- Task 397: spatial_gather 565462 0.105s ( 20,171 bytes)
715
- Task 398: UNSOLVED 0.002s
716
- Task 399: UNSOLVED 0.002s
717
- Task 400: spatial_gather 2931914 0.042s ( 20,306 bytes)
718
- wandb: ⢿ updating run metadata (0.0s)
719
- wandb: ⣻ updating run metadata (0.0s)
720
- wandb: ⣽ updating run metadata (0.0s)
721
- wandb:
722
- wandb: Run history:
723
- wandb: macs ▁▁▁▃▁▁▂▂▂▁▂▁█▃▁▁▂▁▁▂▁▁▂▁▁▁▁▁▂▅▁▁▅▁▁▁▁▁▁▁
724
- wandb: memory ▃▅▄▇█▃▆▂█▅▆▁▅▇▄▂▄▄▁▆▁▁▁▃▅▁▅▂▃▆▄▂▁▆▃▃▃▃▁▂
725
- wandb: onnx_bytes ▂▂▁▁▁▁▂▂▁▁▁▄▁▁▂▁▁▁▁▂▁▁▁▁▂▁▁▁▂█▂▆▁▂▁▁▄▁▁▃
726
- wandb: params ▃▃▃▃▃▁▁▁▃▁▁▁▂▃▃▁▁▁▁▁█▂▁▁▁▂▁▂▁▄▁▃▁▁▆▃▁▅▄▁
727
- wandb: score █▁▁▁▁▁▄▃▁▂▃▂▁▁▁▁▁▁▁▁▂▁▂▂▄▂▁▁▁█▁▁▃▃▄▃▁▁▁▁
728
- wandb: task_id ▁▁▁▁▂▂▂▂▂▂▂▂▃▃▃▃▄▄▄▄▄▄▄▅▅▅▅▅▅▆▆▆▇▇▇▇████
729
- wandb: task_time_sec ▁▁▁▁▁▁▁█▁▁▁▁▁▁▁▁▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
730
- wandb:
731
- wandb: Run summary:
732
- wandb: macs 2822650
733
- wandb: memory 104338
734
- wandb: onnx_bytes 20306
735
- wandb: params 4926
736
- wandb: score 2931914
737
- wandb: solver spatial_gather
738
- wandb: task_id 400
739
- wandb: task_time_sec 0.0423
740
- wandb:
741
- wandb: 🚀 View run solver_run at: https://wandb.ai/rogermt23/neurogolf/runs/jfx0r5vj
742
- wandb: ⭐️ View project at: https://wandb.ai/rogermt23/neurogolf
743
- wandb: Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)
744
- wandb: Find logs at: ./wandb/run-20260424_053417-jfx0r5vj/logs
745
 
746
- ======================================================================
747
- Solved: 294/400 in 578s
748
- spatial_gather: 288
749
- color_map: 4
750
- transpose: 2
751
 
752
- 306 ONNX files, total 15719.7 KB
753
- Created submission.zip
 
1
+ # NeuroGolf Solver v3
2
+
3
+ Builds minimal ONNX networks for ARC-AGI tasks. Currently solves **306/400** on CPU (15s budget per task).
4
+
5
+ ## Results
6
+
7
+ | Version | Solved | Key Changes |
8
+ |---------|--------|-------------|
9
+ | v1 | 128/400 | Conv solver only |
10
+ | v2 | 294/400 | Added spatial_gather, variable-shape conv, diff-shape conv |
11
+ | **v3** | **306/400** | Fixed opset 10 compat (Gather vs GatherElements), added concat_enhanced, varshape_spatial_gather, conv_var_diff |
12
+
13
+ ### v3 Solver Breakdown (306/400)
14
+
15
+ | Solver | Count | Description |
16
+ |--------|-------|-------------|
17
+ | conv_var | 125 | Variable-shape conv on full 30×30 grid |
18
+ | conv_fixed | 106 | Fixed-shape conv (Slice→Conv→Pad) |
19
+ | conv_diff | 39 | Diff-shape conv (output smaller than input) |
20
+ | spatial_gather | 16 | Fixed-shape pixel remapping |
21
+ | concat | 5 | Tiled concat with flips |
22
+ | color_map | 4 | 1×1 color remapping conv |
23
+ | concat_enhanced | 4 | Tiled concat with all 8 dihedral transforms |
24
+ | rotate | 3 | 90°/180°/270° rotation |
25
+ | transpose | 2 | Matrix transpose |
26
+ | varshape_spatial_gather | 1 | Variable-shape pixel remapping |
27
+ | upscale | 1 | Nearest-neighbor upscale |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
 
29
  ## Quick Start
30
 
 
34
  cd neurogolf-solver
35
 
36
  # 2. Install deps
37
+ pip install numpy onnx onnxruntime
38
 
39
  # 3. Get ARC data
40
  git clone --depth 1 https://github.com/fchollet/ARC-AGI.git
41
 
42
+ # 4. Run
43
+ python neurogolf_solver.py --data_dir ARC-AGI/data/training/ --output_dir submission --conv_budget 15
 
 
 
 
44
 
45
+ # 5. Results
 
 
 
 
 
 
46
  ls submission/*.onnx | wc -l
47
  ```
48
 
 
56
  print(f"Created submission.zip: {os.path.getsize('submission.zip')/1024:.0f} KB")
57
  ```
58
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  ## Key Parameters
60
 
61
  | Flag | Default | Description |
62
  |------|---------|-------------|
 
63
  | `--conv_budget` | `30` | Seconds per task for conv solver. More = more tasks solved |
64
  | `--data_dir` | `ARC-AGI/data/training/` | Path to task JSONs |
65
  | `--output_dir` | `submission` | Where to save .onnx files |
66
  | `--kaggle` | off | Use Kaggle task format (task001.json) |
67
  | `--tasks` | all | Comma-separated task numbers (e.g., `1,2,3`) |
68
+ | `--use_wandb` | off | Enable W&B logging |
69
 
70
+ ## How It Works
71
 
72
+ **Format:** Input/output = `[1, 10, 30, 30]` one-hot float32. ONNX opset 10, IR version 10.
 
 
 
73
 
74
+ **Solver pipeline:**
75
+ 1. **Analytical solvers** (instant, zero-cost): identity, constant, color_map, transpose, flip, rotate, tile, upscale, kronecker, concat, concat_enhanced, diagonal_tile, spatial_gather, varshape_spatial_gather
76
+ 2. **Conv solvers** (learned via least-squares):
77
+ - Fixed-shape: `Slice → Conv → ArgMax → Equal+Cast → Pad`
78
+ - Variable-shape: `Conv(30×30) → ArgMax → Equal+Cast → Mul(mask)`
79
+ - Diff-shape: `Slice → Conv → Slice(crop) → ArgMax → Equal+Cast → Pad`
80
+ - Variable diff-shape: `Conv(30×30) → ArgMax → Equal+Cast → Mul(input_mask)`
81
 
82
+ **Key design decisions:**
83
+ - Uses `Gather` instead of `GatherElements` for opset 10 compatibility
84
+ - Uses `Equal + Cast` instead of `OneHot` (avoids CUDA kernel issues)
85
+ - CPU-only inference (GPU has no benefit for tiny 30×30 grids)
86
+ - Least-squares fitting finds optimal conv weights analytically (no gradient descent)
87
 
88
+ ## What's NOT solved yet (94 tasks)
89
 
90
+ - Tasks with input-driven output structure (output layout depends on input content)
91
+ - Tasks requiring multi-step reasoning (flood fill, gravity, counting)
92
+ - Variable diff-shape tasks where output extends beyond input bounds
93
+ - Tasks needing very large conv kernels (>29×29)
94
 
95
+ ## Scoring
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
 
97
+ NeuroGolf scoring: `Score = MACs + memory_bytes + params`
98
+ - Analytical solvers → near-zero cost
99
+ - Conv solvers → cost proportional to kernel size
100
+ - Lower score = better
 
101
 
102
+ ## Repo
103
+ https://huggingface.co/rogermt/neurogolf-solver