day 23 optimize again
Speed up to ~16.3s silent (~26s verbose) by inlining foreach out of
the hot loop, and by reusing the node visit macro as its own witness
of being already visited. The same number of paths are explored, but
now the progress meter increments only when work is done instead of
when previously visited nodes are hit again, so the counter drops to
6M from 14.7M previously. (It would also be possible to use
pushdef(`t'n, `show(p)') to track the same work as before, but that
slows verbose execution even more.)