Finds all solutions to 3D snake cube puzzle in <0.5s 🏁 🎉
Commands:
# build sequential search - output in bin/
just build-seq
# build parallel search - output in bin/
just build-par
# -----------------------------------------------
# run sequential search - output in solutions.json
just run-seq
START Snake Cube solver
start search_from_all_pos_sequential
sequence_in = []
done search_from_pos [0, 0, 0] runtime: 445.980378ms nb sol: 39718
done search_from_pos [0, 0, 1] runtime: 58.781836ms nb sol: 0
done search_from_pos [0, 0, 2] runtime: 2.47µs nb sol: 0
done search_from_pos [0, 1, 0] runtime: 168.300504ms nb sol: 0
done search_from_pos [0, 1, 1] runtime: 38.221371ms nb sol: 1906
done search_from_pos [0, 1, 2] runtime: 945ns nb sol: 0
done search_from_pos [0, 2, 0] runtime: 137ns nb sol: 0
done search_from_pos [0, 2, 1] runtime: 80ns nb sol: 0
done search_from_pos [0, 2, 2] runtime: 84ns nb sol: 0
done search_from_pos [1, 0, 0] runtime: 314.545223ms nb sol: 0
done search_from_pos [1, 0, 1] runtime: 51.005303ms nb sol: 1301
done search_from_pos [1, 0, 2] runtime: 1.856µs nb sol: 0
done search_from_pos [1, 1, 0] runtime: 149.508413ms nb sol: 8779
done search_from_pos [1, 1, 1] runtime: 33.577398ms nb sol: 0
done search_from_pos [1, 1, 2] runtime: 592ns nb sol: 0
done search_from_pos [1, 2, 0] runtime: 88ns nb sol: 0
done search_from_pos [1, 2, 1] runtime: 57ns nb sol: 0
done search_from_pos [1, 2, 2] runtime: 56ns nb sol: 0
done search_from_pos [2, 0, 0] runtime: 46ns nb sol: 0
done search_from_pos [2, 0, 1] runtime: 32ns nb sol: 0
done search_from_pos [2, 0, 2] runtime: 32ns nb sol: 0
done search_from_pos [2, 1, 0] runtime: 31ns nb sol: 0
done search_from_pos [2, 1, 1] runtime: 32ns nb sol: 0
done search_from_pos [2, 1, 2] runtime: 33ns nb sol: 0
done search_from_pos [2, 2, 0] runtime: 33ns nb sol: 0
done search_from_pos [2, 2, 1] runtime: 32ns nb sol: 0
done search_from_pos [2, 2, 2] runtime: 32ns nb sol: 0
done search_from_all_pos_sequential
runtime = 1.26206658s
nb sol = 51704
save solutions as solutions.json
done in 38.628943ms
END Snake Cube solver
# -----------------------------------------------
# run parallel search - output in solutions.json
just run-par
START Snake Cube solver
start search_from_all_pos_parallel
done search_from_pos [0, 2, 0] runtime: 832ns nb sol: 0
done search_from_pos [2, 0, 0] runtime: 221ns nb sol: 0
done search_from_pos [0, 2, 1] runtime: 449ns nb sol: 0
done search_from_pos [0, 2, 2] runtime: 230ns nb sol: 0
done search_from_pos [2, 0, 1] runtime: 155ns nb sol: 0
done search_from_pos [2, 0, 2] runtime: 215ns nb sol: 0
done search_from_pos [2, 1, 0] runtime: 186ns nb sol: 0
done search_from_pos [2, 1, 1] runtime: 103ns nb sol: 0
done search_from_pos [1, 1, 2] runtime: 5.423µs nb sol: 0
done search_from_pos [2, 1, 2] runtime: 166ns nb sol: 0
done search_from_pos [2, 2, 0] runtime: 153ns nb sol: 0
done search_from_pos [2, 2, 1] runtime: 142ns nb sol: 0
done search_from_pos [1, 2, 1] runtime: 694ns nb sol: 0
done search_from_pos [1, 2, 2] runtime: 453ns nb sol: 0
done search_from_pos [1, 2, 0] runtime: 311ns nb sol: 0
done search_from_pos [0, 0, 2] runtime: 17.428µs nb sol: 0
done search_from_pos [2, 2, 2] runtime: 106ns nb sol: 0
done search_from_pos [1, 0, 2] runtime: 7.838µs nb sol: 0
done search_from_pos [0, 1, 2] runtime: 2.702µs nb sol: 0
done search_from_pos [1, 1, 1] runtime: 57.520807ms nb sol: 0
done search_from_pos [0, 1, 1] runtime: 64.220865ms nb sol: 1906
done search_from_pos [0, 0, 1] runtime: 74.440896ms nb sol: 0
done search_from_pos [1, 0, 1] runtime: 76.065942ms nb sol: 1301
done search_from_pos [0, 1, 0] runtime: 184.61434ms nb sol: 0
done search_from_pos [1, 1, 0] runtime: 211.677663ms nb sol: 8779
done search_from_pos [1, 0, 0] runtime: 376.667645ms nb sol: 0
done search_from_pos [0, 0, 0] runtime: 471.165136ms nb sol: 39718
done search_from_all_pos_parallel
runtime = 474.585523ms
nb sol = 51704
save solutions as solutions.json
done in 40.712876ms
END Snake Cube solver