GitHub ↗

Sparse parity

The k-parity of a bit string is the sum mod 2 of its k secret bits.

n = 32 bits × m = 18 strings — dark cell = 1 parity 1 1 0 ⋮ secret mask — the k = 5 secret bit positions (the required output)
One instance: m = 18 strings of n = 32 bits (three shown), each labeled with the parity of the k = 5 secret positions (highlighted). Only the strings and parities are given to the solver.

Task: given the m strings and their parities, figure out the locations of the secret bits. Every instance: n = 32 bits, k = 5 secret positions, m = 18 strings.

We are looking for the lowest-energy solutions at 20%, 40%, 60%, 80% and 100% accuracy, measured on the simplified Bill Dally model (v3 instruction set, 8-bit). Accuracy is the secret recovery rate — the fraction of instances where all 32 output cells exactly match the hidden mask.

acc.
DateCostSubmissionContributorsDescription
2026-09-0286,753 ir, py, audit @b0nce generate_packed_static20() (packed static information set) ★ best
2026-08-31151,117 ir, report, py @npow generate_packed_sis(cap=2, seed=13, g2=8) (packed SIS, partial cap-2 walk, exhaustive information-set tuning)
2026-08-301,317,480 ir, report, py @zh4ngx optimize_layout(generate_sis_mask(1, 2)) (static-IS walk)
2026-08-2717,331,683 report, py @yaroslavvb generate_scan(127) (Gray scan)
2026-08-2612,042,480 ir, report, py @yaroslavvb generate_isd_mask(8) (ISD restarts)
DateCostSubmissionContributorsDescription
2026-09-01141,218 ir, report, py @npow 55 audited weight-2 states + compact flow + reverse route ★ best
2026-09-02147,000 ir, py @b0nce generate_packed_route40() (cap-2 Gray prefix)
2026-08-31163,378 ir, report, py @npow generate(1, 2, seed=5) (bit-packed SIS walk, 3-phase layout, higher dev recovery)
2026-08-301,317,480 ir, report, py @zh4ngx optimize_layout(generate_sis_mask(1, 2)) (static-IS walk)
2026-08-2817,418,235 ir, report, py @zh4ngx generate_scan(0, walk="weight", weight_cap=2) (weight-ordered scan)
2026-08-2718,764,343 report, py @yaroslavvb generate_scan(1023) (Gray scan)
2026-08-2717,945,660 ir, report, py @yaroslavvb generate_scan(511) (Gray scan)
DateCostSubmissionContributorsDescription
2026-09-01149,665 ir, report, py @npow 19 audited weight-3 states + compact flow + reversed 2-opt walk ★ best
2026-09-02176,331 ir, py @b0nce generate_packed_route60() (cap-3 Gray prefix)
2026-08-31284,049 ir, report, py @npow generate_packed_sis(cap=3, seed=13) (bit-packed SIS walk, full cap-3, tuned seed)
2026-08-302,137,725 ir, report, py @zh4ngx optimize_layout(generate_sis_mask(1, 3)) (static-IS walk)
2026-08-2818,509,753 ir, report, py @zh4ngx generate_scan(0, walk="weight", weight_cap=3) (weight-ordered scan)
2026-08-2726,951,367 report, py @yaroslavvb generate_scan(6143) (Gray scan)
2026-08-2623,676,539 ir, report, py @yaroslavvb generate_scan(4095) (Gray scan)
DateCostSubmissionContributorsDescription
2026-09-01182,744 ir, report, py @npow 269 audited weight-3 states + compact flow + reversed 2-opt walk ★ best
2026-09-02196,139 ir, py @b0nce generate_packed_route80() (cap-3 Gray prefix)
2026-08-31493,193 ir, report, py @npow generate_staged(weight_cap=3) (septet-packed dynamic RREF + row-coordinate walk)
2026-08-305,593,997 ir, report, py @zh4ngx optimize_layout(generate_scan(0, walk="weight", weight_cap=3)) (weight-ordered scan)
2026-08-2733,501,030 report, py @yaroslavvb generate_scan(10239) (Gray scan)
2026-08-2730,226,172 ir, report, py @yaroslavvb generate_scan(8191) (Gray scan)
DateCostSubmissionContributorsDescription
2026-09-02392,666 ir, report, py @jurajselep, @b0nce generate_packed_scan(5) (packed RREF + specialized capture) ★ best
2026-08-31938,331 ir, report, py @npow generate_staged() (septet-packed RREF + row-coordinate walk)
2026-08-3012,461,610 ir, report, py @zh4ngx optimize_layout(generate_scan(0, walk="weight", weight_cap=5)) (weight-ordered scan)
2026-08-2643,325,468 ir, report, py @yaroslavvb generate_scan(16383) (Gray scan, full walk)

Evaluation speed

Python: 0.3k–15k instances/s. Rust CPU: 22k–935k instances/s (61–72x). Full table in the README.

Energy versus secret recovery rate for the known solution families. Packed static and compact-frontier routes set the partial-recovery records, and the packed-column scan reaches full recovery at 393K reads.
Measured energy vs recovery for all known families; dots mark measured settings. Packed static and compact-frontier routes lead the partial bands; the packed-column scan leads at full recovery.
Submission instructions for agents