tgen
Loading...
Searching...
No Matches
Permutation instances

Instance of a permutation. More...

Classes

struct  tgen::permutation::instance
 Permutation instance. More...

Functions

 tgen::permutation::instance::instance (const std::vector< int > &vec)
 Creates a permutation instance from a std::vector.
int tgen::permutation::instance::size () const
 Returns the size of the permutation instance.
int & tgen::permutation::instance::operator[] (int idx)
 Returns the value at some position of the instance.
int tgen::permutation::instance::parity () const
 Parity of the permutation.
instancetgen::permutation::instance::sort ()
 Sorts the instance in non-decreasing order.
instancetgen::permutation::instance::reverse ()
 Reverses the instance.
instancetgen::permutation::instance::inverse ()
 Inverse of the permutation.
instancetgen::permutation::instance::add_1 ()
 Adds 1 for printing.
std::vector< int > tgen::permutation::instance::to_std () const
 Converts the instance to a std::vector.

Friends

std::ostream & tgen::permutation::instance::operator<< (std::ostream &out, const instance &inst)
 Prints the instance to a std::ostream.

Detailed Description

Instance of a permutation.

It can be deterministically operated upon and printed through std::cout.

Function Documentation

◆ add_1()

instance & tgen::permutation::instance::add_1 ( )
inline

Adds 1 for printing.

This makes it so, when given to std::cout, the permutation will be printed as 1-based.

Complexity

O(1).

Examples

// Prints a 1-based permutation.
tgen::permutation::instance inst = {2, 0, 1};
std::cout <<
inst.add_1() << std::endl; // Prints "3 1 2".
instance & add_1()
Adds 1 for printing.
Definition tgen.h:1191
Permutation instance.
Definition tgen.h:1120

Definition at line 1191 of file tgen.h.

◆ instance()

tgen::permutation::instance::instance ( const std::vector< int > & vec)
inline

Creates a permutation instance from a std::vector.

Parameters
vecThe std::vector representing the instance.

Examples

// Creates and prints an instance from a std::vector.
std::vector<int> v = {0, 1, 2};
std::cout << inst << std::endl; // Prints "0 1 2".
// Also works with conversions, and std::initializer_list<T>.
inst = {1, 0};
std::cout << inst.add_1() << std::endl; // Prints "2 1".

Definition at line 1126 of file tgen.h.

◆ inverse()

instance & tgen::permutation::instance::inverse ( )
inline

Inverse of the permutation.

The inverse of the permutation p is another pi such that pi[p[i]] = p[pi[i]] = i.

Complexity

O(n).

Examples

// Prints inverse of permutation.
tgen::permutation::instance inst = {2, 0, 1};
std::cout <<
inst.inverse() << std::endl; // Prints "1 2 0".
instance & inverse()
Inverse of the permutation.
Definition tgen.h:1181

Definition at line 1181 of file tgen.h.

◆ operator[]()

int & tgen::permutation::instance::operator[] ( int idx)
inline

Returns the value at some position of the instance.

Parameters
idxThe index to be accessed.
Returns
The value at index idx.

Examples

// Prints a position of an instance.
tgen::permutation::instance inst = {2, 0, 1};
++inst[1];
std::cout << inst[1] << std::endl; // Prints "0".

Definition at line 1145 of file tgen.h.

◆ parity()

int tgen::permutation::instance::parity ( ) const
inline

Parity of the permutation.

Returns
+1 if the permutation is even, or -1 if the permutation is odd.

Examples

// Prints parity of permutation.
tgen::permutation::instance inst = {2, 0, 1};
std::cout <<
inst.parity() << std::endl; // Prints "1".
int parity() const
Parity of the permutation.
Definition tgen.h:1150

Definition at line 1150 of file tgen.h.

◆ reverse()

instance & tgen::permutation::instance::reverse ( )
inline

Reverses the instance.

Complexity

O(n).

Examples

// Reverses and prints an instance.
tgen::permutation::instance inst = {2, 0, 1};
std::cout <<
inst.reverse() << std::endl; // Prints "1 0 2".
instance & reverse()
Reverses the instance.
Definition tgen.h:1174

Definition at line 1174 of file tgen.h.

◆ size()

int tgen::permutation::instance::size ( ) const
inline

Returns the size of the permutation instance.

Returns
The size (number of elements) of the permutation instance.

Examples

// Prints the size of an instance.
tgen::permutation::instance inst = {0, 1, 2};
std::cout <<
inst.size() << std::endl; // Prints "3".
int size() const
Returns the size of the permutation instance.
Definition tgen.h:1142

Definition at line 1142 of file tgen.h.

◆ sort()

instance & tgen::permutation::instance::sort ( )
inline

Sorts the instance in non-decreasing order.

Complexity

O(n).

Examples

// Sorts and prints an instance.
tgen::permutation::instance inst = {2, 0, 1};
std::cout <<
inst.sort() << std::endl; // Prints "0 1 2".
instance & sort()
Sorts the instance in non-decreasing order.
Definition tgen.h:1166

Definition at line 1166 of file tgen.h.

◆ to_std()

std::vector< int > tgen::permutation::instance::to_std ( ) const
inline

Converts the instance to a std::vector.

Returns
A std::vector representing the instance.

Examples

// Convoluted way to reverse a permutation.
std::vector<int> v = {2, 0, 1};
// v = {2, 1, 3}.
std::vector< int > to_std() const
Converts the instance to a std::vector.
Definition tgen.h:1208

Definition at line 1208 of file tgen.h.

Friends

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const instance & inst )
friend

Prints the instance to a std::ostream.

The values are printed with one space as a separator, and with no end of line.

Examples

// Prints an instance.
std::cout <<
tgen::permutation::instance({2, 0, 1}) << std::endl; // Prints "2 0 1".

Definition at line 1197 of file tgen.h.