Solve a Japanese River Crossing puzzle in Clojure using core.logic