other bugs not captured in this diff:
I'm starting to gain some confidence that we reject illegal paths. But we're still rejecting some legal paths like candidate 56 in level 1.
3AOSRXSHG5UYYVLV5RIDCPEG2NB7H3K23QF7V6EOJCP24TVP5U6QC
3CIDHIL2YPGFIPMVPGROBQPUGPGF5OPDQXHSRCQ7EVLNKJ6XDNHQC
BUPMQLGRZJFGYEY7DI7YV7V3URUE5HVT2AFQHQBG2GORLNSRW7VAC
FKENDSMEJXEZPAT6K5TYJC2KZBVYKMXA7LN7ZVPZMYIBODWIB64AC
DFYYOQMHA7M7WMELX5DHXP5DT5KGQLNJHXYDJZ5P5BIJCTCOQ7LQC
AHABKD5VEK5RSTM3CME4XJAHCVTHYV2D2WAWUGSJ6PBUCUI7CB3AC
GVX7YSQYURPWFSUWVUAORZJTQBJURWWNBNUGEZYFAUMX3X5LSACQC
if curr ~= CELL_WALL and (curr ~= CELL_CRATE or crate_id[c.y][c.x] ~= crate.id) and (curr ~= CELL_CRATE_ON_TARGET or crate_id[c.y][c.x] ~= crate.id) then
Real_print('aaa', crate.id, curr, crate_id[c.y][c.x])
if curr ~= CELL_WALL and (curr ~= CELL_CRATE or crate_id[c.y][c.x] == crate.id) and (curr ~= CELL_CRATE_ON_TARGET or crate_id[c.y][c.x] == crate.id) then