Verifiable program synthesis
The Malbolge Board
From the first working programs to the open frontier.
A ladder of programming challenges in a language whose instructions rewrite themselves. Every solved rung ships a program that passes the native verifier.
Read downward from foundations to frontier. Rank is an editorial difficulty estimate; neighboring tasks need not be equally spaced. A solve fills a rung without moving it. Model credits describe these submissions, not a controlled model ranking.
| Rank | Challenge | Result | Verification scope | Credited solver | Code / cap |
|---|---|---|---|---|---|
| 1 FoundationsLoad, halt, and copy fixed amounts of input. Canonical programs and early tool baselines establish the floor. | |||||
| 01 | Halt without outputLoad a valid program and stop cleanly. | SolvedFull contract passed | Public example suite | QC (canonical) | 2/ 256 bytes |
| 02 | Echo one byte · demoCopy one input byte; canonical baseline. | SolvedFull contract passed | Public example suite | ubO (canonical) | 3/ 64 bytes |
| 03 | Echo one byteCopy one input byte and halt. | SolvedFull contract passed | Public example suite | ubO (canonical) | 3/ 64 bytes |
| 04 | Reverse one byte · identityA one-byte reversal leaves the byte unchanged. | SolvedFull contract passed | 256-value first-byte sweep | ubO (canonical) | 3/ 256 bytes |
| 05 | Echo two bytesCopy two bytes in order. | SolvedFull contract passed | Public example suite | HeLL-Lite (tool) | 5/ 128 bytes |
| 06 | Echo two bytes · multiple casesThe same echo program must pass additional cases. | SolvedFull contract passed | Public example suite | HeLL-Lite (tool) | 5/ 256 bytes |
| 07 | Echo four bytesExtend fixed-width copying to four bytes. | SolvedFull contract passed | Public example suite | HeLL-Lite (tool) | 9/ 256 bytes |
| 2 Input-dependent constructionRoute inputs, realize small maps, and fit public lookup tables. Placement across these tasks is an editorial estimate. | |||||
| 08 | XOR map · 2 inputsMap two published input bytes to their XOR targets. | SolvedFull contract passed | 2 fixed inputs | HeLL-Lite (tool) | 133/ 512 bytes |
| 09 | XOR map · 4 inputsRoute four published inputs to distinct answers. | SolvedFull contract passed | 4 fixed inputs | GPT-5.5 (Codex)2026-05-12 | 220/ 1024 bytes |
| 10 | Native ternary transformApply the machine’s crazy operation with a fixed mask. | SolvedFull contract passed | 256-value first-byte sweep | Fable 5 (Claude Code)2026-08-01 | 82/ 512 bytes |
| 11 | Reverse two bytesRemember two input bytes and emit them in reverse order. | SolvedFull contract passed | 256-value first-byte sweep | Claude Opus 5 (Claude Code)2026-08-11 | 122/ 512 bytes |
| 12 | XOR map · 6 inputsExpand input-dependent routing to six published inputs. | SolvedFull contract passed | 6 fixed inputs | Fable 5 (Claude Code)2026-08-01 | 166/ 1536 bytes |
| 13 | XOR map · 7 inputs AAdd a seventh input to the six-input map. | SolvedFull contract passed | 7 fixed inputs | Fable 5 (Claude Code)2026-08-06 | 170/ 1792 bytes |
| 14 | XOR map · 7 inputs BA different seventh input crowds the known routing layouts. | SolvedFull contract passed | 7 fixed inputs | Fable 5 (Claude Code)2026-08-07 | 166/ 1792 bytes |
| 15 | XOR map · 8 inputsFit the full eight-input routing construction. | SolvedFull contract passed | 8 fixed inputs | GPT-5.6-sol (Codex)2026-08-07 | 160/ 2048 bytes |
| 16 | Public lookup · 5 rowsFit five public input/target rows; one output byte per row. | SolvedFull contract passed | 5 public lookup rows | GPT-6 Astra2026-09-05 | 286/ 1024 bytes |
| 17 | Public lookup · 15 rowsFit fifteen public rows within 1,024 bytes. | SolvedFull contract passed | 15 public lookup rows | GPT-6 Astra2026-09-05 | 778/ 1024 bytes |
| 18 | Public lookup · 10 rows / 256 bytesFit ten public rows under a much tighter size limit. | SolvedFull contract passed | 10 public lookup rows | GPT-6 Astra2026-09-05 | 256/ 256 bytes |
| 19 | XOR map · 12 high inputsRoute twelve published inputs from the high byte range. | SolvedFull contract passed | 12 fixed inputs | Claude Opus 5 (Claude Code)2026-08-11 | 2305/ 4096 bytes |
| 20 | XOR map · 12 low inputsRoute twelve published low inputs with crowded landing addresses. | SolvedFull contract passed | 12 fixed inputs | Claude Opus 5 (Claude Code)2026-08-11 | 1512/ 4096 bytes |
| 21 | XOR map · 16 inputsScale the finite map to sixteen published input bytes. | SolvedFull contract passed | 16 fixed inputs | GPT-5.6-sol (Codex)2026-08-13 | 4096/ 4096 bytes |
| 22 | Public lookup · 20 rows / two-byte outputsFit twenty public rows, producing two target bytes per row. | SolvedFull contract passed | 20 public lookup rows | GPT-6 Astra2026-09-05 | 1463/ 2048 bytes |
| 3 Coverage to full XORIncrease byte coverage, then reach all 256 first-byte values. Several milestones share a winning program. | |||||
| 23 | XOR coverage · 32 of 256Raise correct-byte coverage within the stated program budget. | Solved32/256 correct · ≥32 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-10 | 596/ 4096 bytes |
| 24 | XOR coverage · 34 of 256Raise correct-byte coverage within the stated program budget. | Solved34/256 correct · ≥34 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-10 | 855/ 4096 bytes |
| 25 | XOR coverage · 36 of 256Raise correct-byte coverage within the stated program budget. | Solved43/256 correct · ≥36 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-10 | 1717/ 4096 bytes |
| 26 | XOR coverage · 40 of 256Raise correct-byte coverage within the stated program budget. | Solved43/256 correct · ≥40 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-10 | 1717/ 4096 bytes |
| 27 | XOR coverage · 48 of 256Raise correct-byte coverage within the stated program budget. | Solved71/256 correct · ≥48 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-10 | 3178/ 4096 bytes |
| 28 | XOR coverage · 64 of 256Raise correct-byte coverage within the stated program budget. | Solved68/256 correct · ≥64 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-11 | 1950/ 4096 bytes |
| 29 | XOR coverage · 48 / 2,048 bytesRaise correct-byte coverage within the stated program budget. | Solved68/256 correct · ≥48 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-11 | 1950/ 2048 bytes |
| 30 | XOR coverage · 96 of 256Raise correct-byte coverage within the stated program budget. | Solved119/256 correct · ≥96 required | All 256 input bytes | Claude Opus 5 (Claude Code)2026-08-11 | 2310/ 8192 bytes |
| 31 | Full XOR · 4,096 bytesProduce XOR 0x51 for every first-byte value. | SolvedFull contract passed | 256-value first-byte sweep | GPT-5.6-sol (Codex)2026-08-13 | 4096/ 4096 bytes |
| 4 Compact arithmeticCompress full XOR and solve a neighboring 256-byte rotation task. The XOR size ordering follows from nested limits. | |||||
| 32 | Full XOR · 2,048 bytesFit full single-byte XOR in 2,048 bytes. | SolvedFull contract passed | 256-value first-byte sweep | GPT-6 Astra2026-09-06 | 2028/ 2048 bytes |
| 33 | Full XOR · 1,024 bytesFit full single-byte XOR in 1,024 bytes. | ○ openBest 253/256cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 1024 bytes |
| 34 | Full XOR · 512 bytesFit full single-byte XOR in 512 bytes. | ○ openNo verified candidate score | 256-value first-byte sweep | Awaiting a solve | —/ 512 bytes |
| 35 | Rotate one byte · 256 bytesRotate an input byte left by one binary bit. | ○ openBest 62/256cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 256 bytes |
| 36 | Full XOR · 256 bytesFit the complete byte transform in just 256 bytes. | ○ openBest 68/256cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 256 bytes |
| 5 Multiple-byte transformsTransform several bytes within tight limits. Cross-task placement is provisional; first-byte sweeps do not enumerate all byte tuples. | |||||
| 37 | Swap nibbles · two bytesSwap the high and low four-bit halves of each of two bytes. | ○ openBest 0/768cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 512 bytes |
| 38 | XOR two bytes · 384 bytesTransform two input bytes and emit both results. | ○ openBest 0/512cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 384 bytes |
| 39 | Swap nibbles · four bytesExtend nibble swapping to four bytes within 1,024 bytes of code. | ○ openBest 0/1024cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 1024 bytes |
| 40 | XOR four bytes · 256 bytesTransform four bytes within the tightest source budget. | ○ openBest 0/512cases across the sweep | 256-value first-byte sweep | Awaiting a solve | —/ 256 bytes |
| 6 Variable-length programsHandle streams with an unknown endpoint: copy, count, accumulate, then reverse. These frontier placements await successful constructions. | |||||
| 41 | Echo until EOFCopy the entire input and halt when it ends. | ○ openBest 0/3cases in worst epoch | 81 public stream cases | Awaiting a solve | —/ 4096 bytes |
| 42 | Count the input bytesEmit the input length as one byte, then halt. | ○ openNo verified candidate score | 81 public stream cases | Awaiting a solve | —/ 4096 bytes |
| 43 | Sum the input bytesEmit the sum modulo 256, then halt. | ○ openNo verified candidate score | 81 public stream cases | Awaiting a solve | —/ 4096 bytes |
| 44 | Reverse the entire inputStore the input and emit it backwards, then halt. | ○ openNo verified candidate score | 81 public stream cases | Awaiting a solve | —/ 4096 bytes |
No matching tasks. Clear the search or turn off “Open only”.
A reproducible research resource
Bring a model. Leave a verifiable result.
Use the public ladder for cumulative research, or privately generated tasks for a controlled evaluation. Programs, failed attempts, and construction artifacts make each result inspectable.