//-------------------------------------------------------------------------------------- public EnumerateIntegerTrangleForByBranchBoundary(int pLimit, int pLength, int pMinimumValue = 1, int pForwardAdditive = 0) : base(pLimit, pLength, pMinimumValue, pForwardAdditive) { int size = DNAMappingBase.DefineRestrictionMapSizeFromDifferencesSize(pLength); _statisticAccumulator = new DNAMappingStatisticAccumulator(new DNAMappingSaver(), size, pLimit); _statisticAccumulator.Delete("EnumerateDNAMappingBranchBoundary"); _fBreakElement = 0; }
//-------------------------------------------------------------------------------------- public EnumerateDNAMappingByDifferences(int[] pairwiseDifferences, bool pIsAllResult = true) : base(pairwiseDifferences.Length, DNAMappingBase.DefineRestrictionMapSizeFromDifferencesSize(pairwiseDifferences.Length), 0, 1) { _originePairwiseDifferences = pairwiseDifferences.OrderBy(c => c).ToArray(); var list = pairwiseDifferences.Distinct().ToList(); list.Add(0); _pairwiseDifferences = list.OrderBy(c => c).ToArray(); _isAllResult = pIsAllResult; _fLimit = _pairwiseDifferences.Length - 1; }
public void ExecuteTest() { // arrange int[] excpectedResult = new int[] { 0, 3, 6, 7 }; int[] pairwiseDifferences = DNAMappingBase.ProduceMatrix(excpectedResult); EnumerateDNAMappingByIntegerTrangle enumeration = new EnumerateDNAMappingByIntegerTrangle(pairwiseDifferences, 0); // act enumeration.Execute(); // assert var result = enumeration.ListOfSolution.FirstOrDefault(l => l.SequenceEqual(excpectedResult)); Assert.IsNotNull(result, $"Expected result absent in solution list"); }
//-------------------------------------------------------------------------------------- public EnumerateDNAMappingBranchBoundary(int[] pairwiseDifferences, bool pIsAllResult = true) : base(pairwiseDifferences.Length, DNAMappingBase.DefineRestrictionMapSizeFromDifferencesSize(pairwiseDifferences.Length), 0, 1) { _originePairwiseDifferences = pairwiseDifferences.OrderBy(d => d).Select(p => new DifferenceElement() { Data = p, IsIncluded = false }).ToArray(); var list = pairwiseDifferences.Distinct().ToList(); list.Add(0); _pairwiseDifferences = list.OrderBy(c => c).ToArray(); _isAllResult = pIsAllResult; _fLimit = _pairwiseDifferences.Length - 1; }
public void ExecuteTest() { // arrange int[] excpectedResult = new int[] { 0, 3, 6, 7 }; int[] pairwiseDifferences = DNAMappingBase.ProduceMatrix(excpectedResult); EnumerateDNAMappingBranchBoundary enumeration = new EnumerateDNAMappingBranchBoundary(pairwiseDifferences) { StatisticAccumulator = new FakeDNAMappingStatisticAccumulator() }; // act enumeration.Execute(); // assert var result = enumeration.ListOfSolution.FirstOrDefault(l => l.SequenceEqual(excpectedResult)); Assert.IsNotNull(result, $"Expected result absent in solution list"); }
//-------------------------------------------------------------------------------------- protected override bool MakeAction() { if (_fCurrentPosition == _fSize - 1) { var pairwiseDifferencesForCurrentSet = DNAMappingBase.ProduceMatrix(_fCurrentSet); if (_pairwiseDifferences.SequenceEqual(pairwiseDifferencesForCurrentSet.OrderBy(d => d))) { StatisticAccumulator.UpdateOptcountInc(); if (_solution == null) { _solution = _fCurrentSet.ToList(); } _listOfSolution.Add(_fCurrentSet.ToList()); return(!_isAllResult); } } return(false); }
public void ExecuteTestCase2() { // arrange int[] excpectedResult = new int[] { 0, 3, 5, 8 }; int[] pairwiseDifferences = DNAMappingBase.ProduceMatrix(excpectedResult); string pairwiseDifferencesAsString = string.Join(",", pairwiseDifferences.OrderBy(p => p)); EnumerateDNAMappingByIntegerTrangle enumeration = new EnumerateDNAMappingByIntegerTrangle(pairwiseDifferences, 0) { StatisticAccumulator = new FakeDNAMappingStatisticAccumulator() }; // act enumeration.Execute(); // assert var result = enumeration.ListOfSolution.FirstOrDefault(l => l.SequenceEqual(excpectedResult)); Assert.IsNotNull(result, $"Expected result absent in solution list"); }
//-------------------------------------------------------------------------------------- public EnumerateDNAMappingByIntegerTrangle(int[] pairwiseDifferences, int pMinimumValue = 1, int pForwardAdditive = 1, bool pIsAllResult = true) : base(pairwiseDifferences.Max(), DNAMappingBase.DefineRestrictionMapSizeFromDifferencesSize(pairwiseDifferences.Length), pMinimumValue, pForwardAdditive) { _pairwiseDifferences = pairwiseDifferences.OrderBy(c => c).ToArray(); _isAllResult = pIsAllResult; }