In this talk, we’ll be looking at how you can use the expressiveness of Clojure to model combinatorially complex problems at a high level, declaratively, and then pass the model to a speedy Java solving engine such as a dancing links solver, a SAT solver, or a constraint solver, in order to efficiently find a solution. We’ll survey a few different Clojure libraries that make it easy to connect to specific Java solvers and for each one, we’ll discuss what classes of problems are a good fit.
Mark Engelberg has been an active member of the Clojure community ever since Clojure turned 1.0, and is the primary developer of math.combinatorics, math.numeric-tower, data.priority-map, ubergraph, and a co-developer of instaparse. He creates logic puzzles and games, using Clojure as a “secret weapon” to build his own puzzle development tools. His latest work is a line of programming-themed puzzle games for kids, produced by Thinkfun and slated to arrive in toy stores later this year.