Here's a Go solver----

code:
https://github.com/nchurch/go/blob/master/src/go/core.clj

README:
https://github.com/nchurch/go

It's a really fun use of core.logic: you can test for pieces being
alive or dead; you can also generate all the boards that make a given
piece alive or dead.  See the README.

There are some issues that I'd like to get input on.  For one thing,
I've used mutual recursion (as the Wiki article on mutual recursion
says, Prolog depends on mutual recursion); I don't see any
straightforward and clean way to eliminate it (you can't just
trampoline).  Probably because of this, you can't generate boards
bigger than 15X15.

Also, there's an interesting discrepancy between generating alive-for
boards and dead-for boards which I don't quite understand; in the case
of dead boards, the unification ends up outputting nil for any piece
that helps kill the piece in question.

OK, I have to stop now: Core.logic is terribly addictive.....

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to