Boost logo

Boost :

From: Ben Bear (benbearchen_at_[hidden])
Date: 2007-11-14 11:18:55


some mistake or changes about partial permutation in section "Descriptions".

next_partial_permutation:
Effects: ... If such a subsequence does not exist, "it sorts the entire range".

----
Change to ?:
"it is back to the smallest subsequence"
[Note: ..., "additionally std::reverse(first, last)". -- End note]
----
[middle, last) MUST always be sorted, ascending order.  So it should like this:
"additionally std::reverse(first, last) and std::reverse(middle, last)"
prev_partial_permutation:
Effects: ..., "it sorts the en range in reverse order".
----
Change to ?:
"it is back to the greatest subsequence"
Post-condition: "is_sorted(rlast, rmiddle) or is_sorted(rlast,
rmiddle, comp), where rlast is std::reverse_iterator(last) and rmiddle
is std::reverse_iterator(middle)".
----
Just like next_partial_permutation, they are same, change to:
"is_sorted(middle, last) or is_sorted(middle, last, comp)".
[Note: ..., "additionally std::reverse(first, last)". -- End note]
----
Change to:
"additionally std::reverse(first, last) and std::reverse(middle, last)"
2007/11/14, Ben Bear <benbearchen_at_[hidden]>:
> somethings that I think must be test:
>
> 1. count of a generating circle;
>
> 2. lexicographical order;
>
> 3. finish flag;
>
> 4. smallest can next() to greatest, and greatest can prev() to smallest;
>
> 5. next() and prev(), the state should not be changed; prev() and then
> next(), too;
>
> 6. next generating circle should be inverted image of prev generating
> circle;
>
>
> cross test:
>
> 1. repetition permutation is a permutation that every element is
> copied infinitude times;
>
> such as next_permutation(first, first + N, 0, 4) is equal:
> range = {0, 0, 0, ...., 0, 1, 1, ..., 1, 2, ..., 2, 3, ..., 3}
> next_permutation(range.begin(), range.begin() + N, range.end());
>
> 2. completion, look up;
>
>
>
> Examples.  I think should show follows about initialization:
>
> 1. post-condition
>
> 2. how to get smallest and greatest results
>
> Some game examples:
>
> Drop icons.  Drop icons, then count the times of right face and wrong
> face.  This is a repetition combination.
>
> Random build a 32bit integer.  Fill a 32bit integer with 0 and 1, in
> random.  This is repetition permutation.
>
>
>
> Hervé:
> I see what your next_combination(first, last) does.  I like to call it
> next_combination_in_count().  Your test show that for r = 5, {0, 0, 5}
> is the smallest.  But I like {5, 0, 0} to be the smallest, if left is
> less than right.
>
> I need reading the code to understand your proposal.  Sorry, many
> words are not clear to me.  So, I edited your code...  Well, my test
> shows that, the main problems of your code are the finish flags.
>
>
> The time is gone so soon...  I can't write much.
>
> If there's anything that I should do, just ask me.  I'll read, read, and
> read the proposal.
>
>
>
> 2007/11/14, Hervé Brönnimann <hervebronnimann_at_[hidden]>:
> >
> > On Nov 13, 2007, at 10:51 PM, Ben Bear wrote:
> > > Well, your next_permutation(first, last, first_value, last_value)
> > > should have a little change, like this:
> > > ...
> >
> > Ben:  Your code and mine are the same.  No bugs there.  As for the
> > file that you put on the web (your next message) I will of course
> > look at it.  Before we spend too much effort on the implementation,
> > however, I'd advise you to read and review the proposal carefully
> > first, then read the embryo of test driver that I started, and the
> > examples.
> >
> > Once we have the test driver, we can actually verify any
> > implementation we like, and I'll be in a better position to convince
> > you that my implementation is correct (although it's not hard to see
> > if you simply but carefully read the code).  Of course, I'm always
> > happy to be proven wrong - one less bug :)
> >
> > Check out (be advised that programs do not yet compile/run, but if
> > you want to work on it or can point out problem areas, I don't see
> > why not):
> >
> > http://photon.poly.edu/~hbr/boost/combinations.html
> > http://photon.poly.edu/~hbr/boost/combination.hpp
> > http://photon.poly.edu/~hbr/boost/combination_ex.cpp
> > http://photon.poly.edu/~hbr/boost/combination_test.cpp
> >
> > Cheers, HB
> > _______________________________________________
> > Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
> >
>

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk