tgen
Loading...
Searching...
No Matches
Lists

Generation of lists for integral types. More...

Classes

struct  tgen::list< T >
 List generator. More...
struct  tgen::list< T >::value
 List value. More...

Detailed Description

Generation of lists for integral types.

Its values have the properties:

Examples

Random 20 distinct values from 1 to 100.

std::cout <<
tgen::list<int>(20, 1, 100).all_different().gen() << std::endl;
// "67 96 80 11 46 52 42 2 93 1 28 3 48 82 90 99 53 98 94 88"
List generator.
Definition tgen.h:1190
list & all_different()
Restricts generator s.t. all values are different.
Definition tgen.h:1312
value gen() const
Generates a random value from the set of valid lists.
Definition tgen.h:1452

Random Palindrome of length 7.

auto s = tgen::list<int>(7, 0, 9);
for (int i = 0; i <= 2; ++i) s.equal(i, 6-i);
std::cout << s.gen() << std::endl;
// "3 1 9 6 9 1 3"

Random 3 runs of 4 equal numbers. Values between runs are different.

std::cout <<
tgen::list<int>(12, 1, 10)
.equal_range(0, 3).equal_range(4, 7).equal_range(8, 11)
.different({0, 4, 8}).gen() << std::endl;
// "3 3 3 3 2 2 2 2 9 9 9 9"
list & equal_range(int left, int right)
Restricts generator s.t. all values at index range are equal.
Definition tgen.h:1276
list & different(std::set< int > indices)
Restricts generator s.t. all values in index set are different.
Definition tgen.h:1290

Random DNA sequence of length 8 with no equal adjacent values.

auto s2 = tgen::list(8, {'A','C','G','T'});
for (int i = 1; i < 8; i++) s2.different(i-1, i);
std::cout << s2.gen() << std::endl;
// "T C T G T G A C"

Random binary sequence of length 10 with 5 1's that start with 1.

std::cout <<
tgen::list<int>(10, 0, 1)
.fix(0, 1)
.gen_until([](const auto& inst) {
auto vec = inst.to_std();
return std::accumulate(vec.begin(), vec.end(), 0) == 5;
}, 100) << std::endl;
// "1 0 0 1 0 1 1 0 1 0"
auto gen_until(Pred predicate, int max_tries, Args &&...args) const
Generates a random value from the valid set until a condition is met.
Definition tgen.h:341
list & fix(int idx, T val)
Restricts generator s.t. value at index is fixed.
Definition tgen.h:1228