On Wed, 3 Mar 2004, Rick Measham wrote:

> Currently if I have:
> $this_year = span 2004-01-01 to 2004-12-31
> $today     = span 2004-03-03
>
> And I put them into a spanset, then all I can retrieve is a span
> equivelent to $this_year.

I'm assuming by "put them into a spanset", you mean creating a set that is
the union of the two.  In this case, the union of the two sets is simply
$this_year, because it contains $today completely.  That is indeed the
correct behavior.

> However what I wanted to do was to be able to 'discover' that $now was
> a part of both $this_year and $today.
>
> What I'm working on at the moment is not using spanset, but just a hash
> of spans and spansets:
> $calendar = {
>       'sundays'   => spanset of sundays,
>       'today'     => span of today,
>       'this_year' => span of this year,
>       'sunrise'   => set of datetimes
> }
>
> But then, when I throw $now at it, I have to loop over every element in
> the hash looking for an intersection.

That's probably the only way to do it.

> So what I did next was to create a single spanset every time $calendar
> was altered. That spanset is basically a merge of all elements of the
> hash, so now I can just see if $now intersects $total_span_set.

Right.

> All this, however, takes time. Is there a better way to do all this?
> What if I sort the hash by startdate and then binary search? Surely the
> sort will take more time than a loop search.

Well, how often do you need to sort, and how often do you need to search?
That will determine which is faster.


-dave

/*=======================
House Absolute Consulting
www.houseabsolute.com
=======================*/

Reply via email to