The other day we had a very nice oriental-style BBQ at my place. Susi made a Couscous salad, while I made some hummus, a bell pepper salad, a salsa with Habanero chilis, and some marinated olives. On the meaty side, we had lamb chops and chicken wings. Very nice food indeed!
The evening ended with us all sitting still in the semi-dark of my terrace watching out for shooting stars. And we even saw some. Even one, which we will remember forever 😉
In the other life (work), I’ve written an algorithm for finding the bordering elements of contiguous ranges in a given array of ordered values. I’ve used rapid prototyping in Python before transferring the solution to C++. The Python code goes like this:
n = [1, 2, 3, 4, 5, 6, 7,   9, 10, 11, 12,     14, 15, 16] end = len(n) - 1 ranges = [] def get_right(left, step):    if left == end:        return left    leftmost_r = None    i = last_i = end    while True: match = n[i] - n[left] == i - left        if (i == end and match) or i == leftmost_r:            return last_i        last_i = i        if match:            i += step        else:            leftmost_r = i            i -= step        if step != 1:            step /= 2 left = 0 while True:    right = get_right(left, (len(n) - left) / 2)    ranges.append((n[left], n[right]))    if right == end:        break    else:        left = right + 1
The basic assumption for the algorithm to work is that n
contains sorted values. This allows us to do a kind of binary search, if the currently looked at range (from left
to i
) does not fit the criterion for a match (namely that n[i] - n[left] != i - left
). Maybe this is useful for someone!
NP: Agnostic Front – Gotta go