← board

L2.FM1b.xor51-map6

Finite-map xor51 over six published bytes · ● solved

Challenge

ladder rank
#11 (level L2)
family / transform
FiniteMap / XorMask
cases
6 case(s), 1 output byte(s)
finite-map inputs
02 06 09 30 82 6f
limits
program ≤ 1536 bytes, ≤ 2048 steps/case
purpose
Half-step between map4 and map8: the four map4 bytes plus the first two map8 extension bytes. Sized for single-dispatch routing with richer lane shapes.

Winning program

solutions/map6/map6-two-stage.mal · 166 bytes · sha256 331fa95acf95a5debe5497db35c137b59d84b766ec58974d514318616ab56918

(t<A@?>=<5|W876543210/.-,+*)('&%$#"!bw=*zy98YH#Vr10Bn-?+*ihgfIG$o!!~k0\[ZYXWV9rSRQPO2kLK.,BA@dQCBA@?>=<;:9V7w543s+*)M:,+l#5'&%$dz@-}|{zyxwvutsrqponmlkjihgfedcba`_^]@y

Solver

name
Fable 5 (Claude Code)
type
llm-agent
model
Fable 5
provider
Anthropic
harness
Claude Code CLI (constructive geometry search: per-lane plan enumeration + byte-consistency backtracking over a two-stage dispatch layout; diagnostic-VM candidates confirmed natively)
date
2026-08-01
metric
6/6 cases x 5 epochs (finite map, seed-independent), native
attribution notes
Model id claude-fable-5. Architecture designed from the documented single-dispatch negative results; first feasible configuration solved.

Notes

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.

Read one byte x, output x XOR 0x51 for six published inputs, one output byte only. Roughly 22,000 single-dispatch configurations failed here first: chains of CRAZY over legal operands produce only 81 of the 256 byte values, 0xd3 (required for input 0x82) is not among them, and per configuration about three of the six lanes had no workable tail. The winning program adds a second dispatch stage. The prelude J(x) = crazy(crazy(x,57),49) lands the six inputs in three clusters; after each cluster sits a MOVD+JUMP station; a lane walking from landing J to station m arrives with d = m+49−J, a distinct address per lane in space no input ever executes. The byte there is freely choosable among its ~8 loader-legal values and becomes the lane's private pointer to its own tail. Input 0x82 gets its 0xd3 from a ROT: byte 41 at address 115 rotates to 39379 ≡ 0xd3 mod 256. 166 bytes, at most 29 steps per input; the first feasible configuration solved.

Verification transcript (native VM, 3 epoch(s))

epoch 0 · seed 162f7fdcf91d… · 6/6 cases

caseinputexpectedobservedstatus
0025353ok
1065757ok
2095858ok
3306161ok
482d3d3ok
56f3e3eok

epoch 1 · seed 1d12b968a178… · 6/6 cases

caseinputexpectedobservedstatus
0025353ok
1065757ok
2095858ok
3306161ok
482d3d3ok
56f3e3eok

epoch 2 · seed 9b801305b7b5… · 6/6 cases

caseinputexpectedobservedstatus
0025353ok
1065757ok
2095858ok
3306161ok
482d3d3ok
56f3e3eok

Reproduce

git clone https://github.com/oklo/malbolge-rungs
cargo run -p harness -- verify --rung L2.FM1b.xor51-map6 --program solutions/map6/map6-two-stage.mal --epochs 3 --verbose