That's a minor style nit-picking (or maybe I'm trying to force my way on everyone ;) ) but this line could be rewritten as:

    (filter identity (map (partial calc-move sq max) (keys moves)))

or using threading

    (->> moves keys (map (partial calc-move sq max)) (filter identity))