Malbolge is a public-domain programming language designed to be nearly impossible to program in. Every instruction enciphers itself after it executes, code and data share one ternary memory that rewrites itself as it runs, and the only arithmetic is a lossy trinary “crazy” operation.
The Malbolge language provides a compelling benchmarking framework. There is almost no training data to imitate and no idiom library to lean on. Even a one-byte transform demands first-principles reasoning about an adversarial machine. The empty rungs below await the minds that will solve them.
| # | rung | status | model | harness | date | bytes | notes |
|---|---|---|---|---|---|---|---|
| 1 | L0.R0.hello-world-genesis | ● solved | — | canonical | — | 3 | Zero-output conformance slot; solved by the canonical 2-byte halt program QC. more |
| 2 | L0.R1.echo-1-demo | ● solved | — | canonical | — | 4 | 1-byte echo demo slot; solved by the canonical ubO program. more |
| 3 | L1.R0.echo-1 | ● solved | — | canonical | — | 4 | Read one byte, echo it, halt. |
| 4 | L2.R1.reverse-1 | ● solved | — | canonical | — | 4 | 1-byte reverse is the identity, so ubO passes; the registry marks this a transform-family sanity check. more |
| 5 | L1.R1.echo-2 | ● solved | — | hell_lite | — | 5 | Echo the first 2 input bytes; 5-byte straight-line program. more |
| 6 | L1.R2.echo-4 | ● solved | — | hell_lite | — | 9 | Echo the first 4 input bytes; 9-byte straight-line program. more |
| 7 | L1.R3.echo-2-multicase | ● solved | — | hell_lite | — | 5 | Same 5-byte echo-2 program; fresh VM per case. more |
| 8 | L2.FM0.xor51-map2 | ● solved | — | hell_lite | — | 134 | Two-input finite map (02→53, 06→57), synthesized by HeLL-Lite. more |
| 9 | L2.FM1.xor51-map4 | ● solved | GPT-5.5 | codex | 2026-05-12 | 220 | Four-input finite map; won in an internal agent match. more |
| 10 | L2.R0c.crazy-mask-1 | ● solved | Fable 5 | claude-code | 2026-08-01 | 82 | Output = crazy(input, 0x51) mod 256; total over all 256 inputs. First real-transform solve. more |
| 11 | L2.FM1b.xor51-map6 | ● solved | Fable 5 | claude-code | 2026-08-01 | 166 | Two-stage dispatch: crz-dispatch into three landing clusters, per-cluster MOVD+JUMP re-dispatch via lane-specific d, private tails. Broke the proven 3/6 single-dispatch ceiling. more |
| 12 | L2.FM1c.xor51-map7a | ● solved | Fable 5 | claude-code | 2026-08-06 | 170 | map6 two-stage architecture generalizes to 7 lanes unchanged. Fell as feasibility predicted. more |
| 13 | L2.FM1d.xor51-map7b | ● solved | Fable 5 | claude-code | 2026-08-07 | 166 | Fell to a geometric fix: merge the jammed lanes behind one station. Stations should shrink when separation is scarce. more |
| 14 | L2.FM2.xor51-map8 | ○ open | — | — | — | — | Eight-input finite map; open. |
| 15 | L2.FM2h.xor51-map12-hi | ○ open | — | — | — | — | Twelve high-byte inputs (0x80–0xff); open. more |
| 16 | L2.FM2l.xor51-map12-low | ○ open | — | — | — | — | Twelve low-byte inputs (0x00–0x40); open. more |
| 17 | L2.FM3.xor51-map16 | ○ open | — | — | — | — | Sixteen-input finite map; open. |
| 18 | L2.C0.xor51-cov32 | ○ open | — | — | — | — | Partial-credit XOR: ≥32 of 256 bytes correct. Best known 27/256. more |
| 19 | L2.C0b.xor51-cov36 | ○ open | — | — | — | — | Partial-credit XOR: ≥36 of 256 bytes correct. Best known 27/256. more |
| 20 | L2.C0c.xor51-cov40 | ○ open | — | — | — | — | Partial-credit XOR: ≥40 of 256 bytes correct. more |
| 21 | L2.C0d.xor51-cov48 | ○ open | — | — | — | — | Partial-credit XOR: ≥48 of 256 bytes correct. more |
| 22 | L2.C1.xor51-cov64 | ○ open | — | — | — | — | Partial-credit XOR: ≥64 of 256 bytes correct. Best known 27/256. more |
| 23 | L2.R2.rotate-1 | ○ open | — | — | — | — | Rotate the input byte left by one bit; totality over 256 required. more |
| 24 | L2.R0d.xor-1-len4096 | ○ open | — | — | — | — | General XOR with a 4096-byte cap; best known coverage 27/256. more |
| 25 | L2.R0.xor-1 | ○ open | — | — | — | — | The open frontier: output = input XOR 0x51 for any byte, 256-byte cap. more |
| 26 | L2.R3.xor-2-multicase | ○ open | — | — | — | — | 2-byte XOR across 2 cases; strictly harder than xor-1. more |
| 27 | L3.R0.reverse-2-multicase | ○ open | — | — | — | — | Reverse 2 bytes across 3 cases. |
| 28 | L3.R1.xor-4-length-cap | ○ open | — | — | — | — | 4-byte XOR under a tight 256-byte cap. |
| 29 | L3.R2.mixed-transform-small | ○ open | — | — | — | — | Nibble-swap over 3 cases. |
| 30 | L4.R0.hash-prefix-1 | ○ open | — | — | — | — | Output a 1-byte SHA-256-derived value; no known approach. more |
| 31 | L4.R1.hash-prefix-1-multicase | ○ open | — | — | — | — | Hash prefix across 3 cases. |
| 32 | L4.R2.hash-prefix-length-pressure | ○ open | — | — | — | — | Hash prefix under length pressure. |
| 33 | L5.R0.future-transform | ○ open | — | — | — | — | Reserved future rung (nibble map, 4 cases). more |
| 34 | L5.R1.future-hash-prefix | ○ open | — | — | — | — | Reserved future rung (hash prefix, 4 cases). more |