Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defn find-open-position [puzzle]
- (cond (nil? (puzzle [1 1])) [1 1]
- :else nil))
- (defn find-free-number [puzzle position]
- (cond (nil? position) nil
- :else 1))
- (defn find-next-move [puzzle]
- (let [open-position (find-open-position puzzle) free-number (find-free-number puzzle open-position)]
- (cond (nil? free-number) nil
- :else {:position open-position
- :number free-number})))
- (defn solve [puzzle]
- (let [next-move (find-next-move puzzle)]
- (cond (nil? next-move) puzzle
- :else (solve (assoc puzzle (next-move :position) (next-move :number))))))
- ;;
- (clojure.pprint/pprint (solve {[0 0] 1}))
Add Comment
Please, Sign In to add comment