Home Manual Reference Source

src/itranspositions.js

import {_itranspositions} from './_itranspositions.js';
import {used} from './used.js';

/**
 * Computes the sequence of transpositions that if applied to
 * <code>sigma</code> result in <code>invert(sigma)</code>. Uses
 * {@link _itranspositions} as the underlying implementation.
 *
 * @example
 * const invert = sigma => apply( sigma.length , itranspositions( sigma ) ) ;
 *
 * @param {Array} sigma Input permutation.
 * @return {IterableIterator} Iterator over the transpositions.
 */
export const itranspositions = (sigma) =>
	_itranspositions(sigma, used(sigma.length));