I found the solution to my first problem at
https://github.com/clojure/core.logic/wiki/Features (with a few small
changes by me):
(run* [q]
(fresh [x y]
(fd/in x y (fd/interval 0 9))
(fd/eq
(= (+ (* x 3) (* y 2)) 8))
(== q [x y])))
I suppose that I could set (fd/interval 0 999999999) to do a fair
approximation of the non-negative integers, but out of curiosity, would
there be a better way of doing this?
On Tuesday, June 10, 2014 11:12:11 AM UTC-4, cej38 wrote:
>
> I am interested in solving a simple equation for all of its solutions when
> some constraints are applied. This sounds like a problem for core.logic.fd.
>
> Let's use a toy example:
>
> 8 = 3*x + 2*y, where x and y must be non-negative integers.
>
> Here are the possible solutions: [x,y]= {[2,1],[0,4]}.
>
>
> I tried something like this:
>
> (run* [q]
> (fresh [x y]
> (== q [x y])
> (project [x y]
> (fd/+ (* x 2) (y 3) 8))))
>
> But I get a exception:
> "java.lang.ClassCastException: clojure.core.logic.LVar cannot be cast to
> java.lang.Number"
>
> So I have two questions:
> 1. How should I rewrite the above command to get the solutions?
> 2. Are there any good blog posts/online presentations/etc. on
> core.logic.fd?
>
>
>
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.