fix next|prev_permutation implementations

This commit is contained in:
bolero-MURAKAMI 2014-04-14 15:16:05 +09:00
parent 057dec630c
commit 2c0b1d4513
8 changed files with 150 additions and 141 deletions

View file

@ -43,35 +43,34 @@ namespace testspr {
}
// 順列
// 範囲の切り出し
// !!!
// {
// SPROUT_STATIC_CONSTEXPR auto permutation = sprout::prev_permutation(
// sprout::sub(arr1, 2, 4)
// );
// TESTSPR_BOTH_ASSERT(testspr::equal(
// permutation.first,
// array<int, 3>{{4, 2, 3}}
// ));
// TESTSPR_BOTH_ASSERT(testspr::equal(
// sprout::get_internal(permutation.first),
// array<int, 5>{{5, 4, 2, 3, 1}}
// ));
// TESTSPR_BOTH_ASSERT(permutation.second);
// }
// {
// SPROUT_STATIC_CONSTEXPR auto permutation = sprout::fit::prev_permutation(
// sprout::sub(arr1, 2, 4)
// );
// TESTSPR_BOTH_ASSERT(testspr::equal(
// permutation.first,
// array<int, 3>{{4, 2, 3}}
// ));
// TESTSPR_BOTH_ASSERT(testspr::equal(
// sprout::get_internal(permutation.first),
// array<int, 5>{{5, 4, 2, 3, 1}}
// ));
// TESTSPR_BOTH_ASSERT(permutation.second);
// }
{
SPROUT_STATIC_CONSTEXPR auto permutation = sprout::prev_permutation(
sprout::sub(arr1, 1, 4)
);
TESTSPR_BOTH_ASSERT(testspr::equal(
permutation.first,
array<int, 3>{{4, 2, 3}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(permutation.first),
array<int, 5>{{5, 4, 2, 3, 1}}
));
TESTSPR_BOTH_ASSERT(permutation.second);
}
{
SPROUT_STATIC_CONSTEXPR auto permutation = sprout::fit::prev_permutation(
sprout::sub(arr1, 1, 4)
);
TESTSPR_BOTH_ASSERT(testspr::equal(
permutation.first,
array<int, 3>{{4, 2, 3}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(permutation.first),
array<int, 5>{{5, 4, 2, 3, 1}}
));
TESTSPR_BOTH_ASSERT(permutation.second);
}
}
{
SPROUT_STATIC_CONSTEXPR auto arr1 = array<int, 5>{{5, 4, 3, 2, 1}};
@ -101,37 +100,36 @@ namespace testspr {
}
// 順列
// 範囲の切り出し
// !!!
// {
// SPROUT_STATIC_CONSTEXPR auto permutation = sprout::prev_permutation(
// sprout::sub(arr1, 2, 4),
// testspr::less<int>()
// );
// TESTSPR_BOTH_ASSERT(testspr::equal(
// permutation.first,
// array<int, 3>{{4, 2, 3}}
// ));
// TESTSPR_BOTH_ASSERT(testspr::equal(
// sprout::get_internal(permutation.first),
// array<int, 5>{{5, 4, 2, 3, 1}}
// ));
// TESTSPR_BOTH_ASSERT(permutation.second);
// }
// {
// SPROUT_STATIC_CONSTEXPR auto permutation = sprout::fit::prev_permutation(
// sprout::sub(arr1, 2, 4),
// testspr::less<int>()
// );
// TESTSPR_BOTH_ASSERT(testspr::equal(
// permutation.first,
// array<int, 3>{{4, 2, 3}}
// ));
// TESTSPR_BOTH_ASSERT(testspr::equal(
// sprout::get_internal(permutation.first),
// array<int, 5>{{5, 4, 2, 3, 1}}
// ));
// TESTSPR_BOTH_ASSERT(permutation.second);
// }
{
SPROUT_STATIC_CONSTEXPR auto permutation = sprout::prev_permutation(
sprout::sub(arr1, 1, 4),
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
permutation.first,
array<int, 3>{{4, 2, 3}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(permutation.first),
array<int, 5>{{5, 4, 2, 3, 1}}
));
TESTSPR_BOTH_ASSERT(permutation.second);
}
{
SPROUT_STATIC_CONSTEXPR auto permutation = sprout::fit::prev_permutation(
sprout::sub(arr1, 1, 4),
testspr::less<int>()
);
TESTSPR_BOTH_ASSERT(testspr::equal(
permutation.first,
array<int, 3>{{4, 2, 3}}
));
TESTSPR_BOTH_ASSERT(testspr::equal(
sprout::get_internal(permutation.first),
array<int, 5>{{5, 4, 2, 3, 1}}
));
TESTSPR_BOTH_ASSERT(permutation.second);
}
}
}
} // namespace testspr