This problem can be considered as an instance of the more general SAT problem, in which you're trying to find a satisfying assignment to a predicate. You might want to give that approach a try, though it does require changes in representation. Here's a *very* simple example:

   Prelude> :m Data.SBV
   Prelude Data.SBV> let f (x, y, z) = 0 .<= x &&& y .>= 2 &&& z .<= x+(y::SInteger)
   Prelude Data.SBV> sat f
   Satisfiable. Model:
     s0 = 0 :: Integer
     s1 = 2 :: Integer
     s2 = 2 :: Integer

Your "f" is probably going to be much more complicated, but if you can afford to move to symbolic types, then SBV can bridge the gap and a SAT/SMT solver can give you the required points. Or tell you if there isn't any, like in the following example:

   Prelude Data.SBV> sat $ \x y -> x .> y &&& x .< (y::SInteger)
   Unsatisfiable

-Levent.

On Thu, Oct 29, 2015 at 2:01 AM, martin <martin.drautzburg@web.de> wrote:
Hello all,

I hope this is not a too silly question. It goes like this:

Suppose I have a shape defined as

(x,y,z) -> Bool

how can I find a Point inside this shape? Obviously I could iterate through all possible x,y and z, but this appears
very expensive.

There may be no point at all at x=0. With brute force iteration I would have no clue that the False I am receiving with
(0,1,1) is caused by x=0 and I may nedlessly try all combinations of y and z without ever receiving a True.

Are there any alternative ways of finding points inside a shape?

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe