Guest User

Untitled

a guest
Dec 11th, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.64 KB | None | 0 0
  1. (defn find-open-position [puzzle]
  2. (cond (nil? (puzzle [1 1])) [1 1]
  3. :else nil))
  4.  
  5. (defn find-free-number [puzzle position]
  6. (cond (nil? position) nil
  7. :else 1))
  8.  
  9. (defn find-next-move [puzzle]
  10. (let [open-position (find-open-position puzzle) free-number (find-free-number puzzle open-position)]
  11. (cond (nil? free-number) nil
  12. :else {:position open-position
  13. :number free-number})))
  14.  
  15. (defn solve [puzzle]
  16. (let [next-move (find-next-move puzzle)]
  17. (cond (nil? next-move) puzzle
  18. :else (solve (assoc puzzle (next-move :position) (next-move :number))))))
  19.  
  20. ;;
  21. (clojure.pprint/pprint (solve {[0 0] 1}))
Add Comment
Please, Sign In to add comment