Great!
On Tuesday, June 12, 2012 11:32:11 PM UTC+2, Jim foo.bar wrote: > > Nevermind...I found the namespace with these non-relational operators and > the code works like a charm!!! I am so happy... :-) > > Jim > > > On 12/06/12 22:18, Jim - FooBar(); wrote: > > Hi Marek, > > I did what you said and I translated the prolog code to core.logic. Your 2 > examples helped a lot and thanks again for that. The versionI've got now is > this: > > ----------------------------------------------------------------------------------------------- > (defn knight-moves [x y] > (let [xmax 8 ymax 8] > (run* [q] ;bring back all possible solutions > (fresh [a b] > (conde > [(< (+ x 1) xmax) (< (+ y 2) ymax) (== a (+ x 1)) (== b (+ y 2))] ;1st > possibility > [(< (+ x 2) xmax) (< (+ y 1) ymax) (== a (+ x 2)) (== b (+ y 1))] ;2nd > possibility > [(< (+ x 2) xmax) (>= (- y 1) 0) (== a (+ x 2)) (== b (- y 1))] ;3rd > possibility > [(< (+ x 1) xmax) (>= (- y 2) 0) (== a (+ x 1)) (== b (- y 2))] ;4th > possibility > [(>= (- x 1) 0) (>= (- y 2) 0) (== a (- x 1)) (== b (- y 2))] ;5th > possibility > [(>= (- x 2) 0) (>= (- y 1) 0) (== a (- x 2)) (== b (- y 1))] ;6th > possibility > [(>= (- x 2) 0) (< (+ y 1) ymax) (== a (- x 2)) (== b (+ y 1))] ;7th > possibility > [(>= (- x 1) 0) (< (+ y 2) ymax) (== a (+ x 1)) (== b (+ y 2))] ;8th > possibility > ) > (== q [a b])) ;return each solution as a vector [x, y] > ))) > > ---------------------------------------------------------------------------------------------------- > > However now I get: > ClassCastException java.lang.Boolean cannot be cast to clojure.lang.IFn > on the first clause! Is this what you meant that I need to define my own > "greather than" and "lower than" operators? I'm suspecting that is exactly > what you meant cos there is something definately missing! Why won't > clojure's operators do the job? I'm just checking arithmetic values...what > is the problem? > > Jim > > On 11/06/12 17:34, David Nolen wrote: > > On Mon, Jun 11, 2012 at 12:30 PM, mnicky <markus.mas...@gmail.com> wrote: > >> You can probably substitute the "is" operator of Prolog with the "==" >> operator of core.logic, but very likely you will have to define your own >> "greather than" and "lower than" operators... >> >> >> Marek. >> > > There is an arithmetic namespace that has these non-relational > operators. I've started working on cKanren extensions again so the story > around arithmetic should improve a lot in the next couple of weeks. > > David > > -- > 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 > > > > -- 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