public int GetMinimumLettersConsidered(IPermutationDictionary <ExtensionMap> permExMaps, Permutation permutation, IPosition positions, int maximumLettersConsidered) { IPermutationBuilderExternal permutationBuilderExternal = permutationBuilder.Clone(); int length = permutation.Length; NumSequenceExtended numSequenceExtended = numSeqExtFactory.GetNumSequenceDefault(1, length, false); Permutation permutationUpfix = permutationBuilderExternal.CreatePattern(new ulong[] { 0 }, permutation.LetterSize, 0); int minimumLettersConsidered = 0; int index; int popCount; for (int i = 0; i < maximumLettersConsidered; i++) { minimumLettersConsidered++; index = positions.GetPosition(length - i - 1); numSequenceExtended.SetLetterMutable(index, 1); popCount = numSequenceExtended.PopCount(index); permutationUpfix = permutationUpfix.InsertPosition(i + 1 - popCount); if (!permutationsUpfixes[i].Contains(permutationUpfix)) { break; } } return(minimumLettersConsidered); }
public ExtensionMapNumSeq GetExtensionMapNumSeq(NumSequenceExtended numSequenceExtended) { if (numSequenceExtended != null && numSequenceExtended.LetterSize == 1) { return(new ExtensionMapNumSeq(numSequenceExtended)); } if (numSequenceExtended == null) { throw new ArgumentNullException(); } else { throw new ArgumentException(); } }
private void ComputeUpfixes(Permutation permutation, IPosition positions) { IPermutationBuilderExternal permutationBuilderExternal = permutationBuilder.Clone(); Permutation permutationUpfix = permutationBuilderExternal.CreatePattern(new ulong[] { 0 }, permutation.LetterSize, 0); int length = permutation.Length; NumSequenceExtended numSequenceExtended = numSeqExtFactory.GetNumSequenceDefault(1, length, false); int index; int popCount; for (int i = 0; i < length - 1; i++) { index = positions.GetPosition(length - i - 2); numSequenceExtended.SetLetterMutable(index, 1); popCount = numSequenceExtended.PopCount(index); permutationUpfix = permutationUpfix.InsertPosition(i + 1 - popCount); permutationsUpfixes[i].Add(permutationUpfix); } }
public override ExtensionMap GetExtensionMapDefault(int length, bool set) { NumSequenceExtended numSequenceExtended = factory.GetNumSequenceDefault(1, length, set); return(new ExtensionMapNumSeq(numSequenceExtended)); }
public override ExtensionMap GetExtensionMap(ulong[] words, int length) { NumSequenceExtended numSequenceExtended = factory.GetNumSequence(words, 1, length); return(new ExtensionMapNumSeq(numSequenceExtended)); }
internal ExtensionMapNumSeq(NumSequenceExtended numSequenceExtended) { this.numSequenceExtended = numSequenceExtended; }