`

地图着色——core.logic求解

阅读更多
记得很久很久之前写过一篇《七周七语言——地图着色》。用core.logic求解下。


依赖包:
[org.clojure/core.logic "0.8.10"]


(use 'clojure.core.logic)

(nth (run 1 [q]
     (fresh [tn ms al ga fl]
            (everyg #(membero % [:red :blue :green]) [tn ms al ga fl])
            (!= ms tn) (!= ms al) (!= al tn)
            (!= al ga) (!= al fl) (!= ga fl) (!= ga tn)
            (== q {:tennessee tn
                   :mississippi ms
                   :alabama al
                   :georgia ga
                   :florida fl})
            )) 0)


输出结果:{:tennessee :blue, :mississippi :red, :alabama :green, :georgia :red, :florida :blue}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics