public static ISorterEval ToSorterEval(this SorterEvalToJson sorterGenomeToJson) { return(SorterEval.Make ( sorter: sorterGenomeToJson.SorterToJson.ToSorter(), switchableGroupGuid: sorterGenomeToJson.SwitchableGroupGuid, switchUseList: sorterGenomeToJson.SwitchUseList, success: sorterGenomeToJson.Success, coveringSet: sorterGenomeToJson.CoveringSet.ToSwitchableGroup() )); }
public static ISorterEvalVm ToSorterEvalVm(this string reportString) { var pcs = reportString.Split("\t".ToCharArray()); ISorter sorter; var switchableGuid = Guid.Empty; var success = false; var useCount = 0; if (pcs.Count() > 2) { sorter = pcs[0].ToSorter(); bool.TryParse(pcs[1], out success); int.TryParse(pcs[2], out useCount); } else { return(new SorterEvalVmImpl(null)); } if (pcs.Count() > 3) { Guid.TryParse(pcs[3], out switchableGuid); } else { return(new SorterEvalVmImpl ( SorterEval.Make ( sorter: sorter, switchableGroupGuid: switchableGuid, success: success, switchUseCount: useCount, coveringSet: null ) )); } var useList = JsonConvert.DeserializeObject <List <double> >(pcs[4]); return(new SorterEvalVmImpl ( SorterEval.Make ( sorter: sorter, switchableGroupGuid: switchableGuid, success: success, switchUseList: useList, coveringSet: null ) )); }
public static ISorterEval Sort <T> ( this ISorter sorter, ISwitchableGroup <T> switchableGroup ) { var switchUseList = Enumerable.Repeat(0.0, sorter.KeyPairCount).ToList(); var totalSuccess = true; var switchSet = KeyPairSwitchSet.Make <T>(switchableGroup.KeyCount); foreach (var switchable in switchableGroup.Switchables) { var current = switchable.Item; var sortSuccess = false; for (var i = 0; i < sorter.KeyPairCount; i++) { if (switchSet.IsSorted(current)) { sortSuccess = true; break; } var res = switchSet.SwitchFunction(sorter.KeyPair(i))(current); current = res.Item1; if (res.Item2) { switchUseList[i]++; if (switchSet.IsSorted(current)) { sortSuccess = true; break; } } } totalSuccess &= sortSuccess; } return(SorterEval.Make( sorter: sorter, switchableGroupGuid: switchableGroup.Guid, success: totalSuccess, switchUseList: switchUseList, coveringSet: null )); }
void SetUnstagedSwitchVms() { for (var i = 0; i < SorterEval.KeyPairCount; i++) { if ((SorterEval.SwitchEvals[i].UseCount == 0) && !ShowUnusedSwitches) { continue; } var keyPair = SorterEval.KeyPair(i); var switchBrushIndex = Math.Ceiling( (SorterEval.SwitchEvals[i].UseCount * SwitchBrushes.Count) / SorterEval.SwitchableGroupCount ); SwitchVms.Add(new SwitchGraphicVm(keyPair, SorterEval.KeyCount, LineBrushes, Width) { SwitchBrush = SwitchBrushes[(int)switchBrushIndex] }); } }
public UnstagedSorterVmImpl ( ISorterEval sorterEval, List <Brush> lineBrushes, List <Brush> switchBrushes, int width, int height, bool showUnusedSwitches ) { _sorterEval = sorterEval; _lineBrushes = lineBrushes; _switchBrushes = switchBrushes; _showUnusedSwitches = showUnusedSwitches; _height = height; _width = width; for (var i = 0; i < SorterEval.KeyPairCount; i++) { if ((SorterEval.SwitchEvals[i].UseCount < 1) && !ShowUnusedSwitches) { continue; } var keyPair = SorterEval.KeyPair(i); var switchBrushIndex = Math.Ceiling( (SorterEval.SwitchEvals[i].UseCount * (SwitchBrushes.Count - 1)) / SorterEval.SwitchableGroupCount ); SwitchVms.Add(new SwitchGraphicVm(keyPair, SorterEval.KeyCount, LineBrushes, Width) { SwitchBrush = SwitchBrushes[(int)switchBrushIndex] }); } }
public static ISorterGenomeEvalVm ToSorterGenomeEvalVm(this string reportString) { var pcs = reportString.Split("\t".ToCharArray()); ISorterEval sorterEval; ISorterGenome sorterGenome; ISorter sorter; var switchableGuid = Guid.Empty; var success = false; var useCount = 0; var generation = 0; var ancestors = ImmutableStack <int> .Empty; if (pcs.Count() > 2) { sorterGenome = pcs[0].ToSorterGenome(); sorter = sorterGenome.ToSorter(); bool.TryParse(pcs[1], out success); int.TryParse(pcs[2], out useCount); } else { return(new SorterGenomeEvalVmImpl(null)); } if (pcs.Count() > 3) { ancestors = JsonConvert.DeserializeObject <ImmutableStack <int> >(pcs[3]); } else { sorterEval = SorterEval.Make ( sorter: sorter, switchableGroupGuid: switchableGuid, success: success, switchUseCount: useCount, coveringSet: null ); return(new SorterGenomeEvalVmImpl ( SorterGenomeEval.Make ( sorterGenome: sorterGenome, ancestors: ancestors, sorterEval: sorterEval, generation: generation, success: true ) )); } if (pcs.Count() > 4) { Guid.TryParse(pcs[4], out switchableGuid); } else { sorterEval = SorterEval.Make ( sorter: sorter, switchableGroupGuid: switchableGuid, success: success, switchUseCount: useCount, coveringSet: null ); return(new SorterGenomeEvalVmImpl ( SorterGenomeEval.Make ( sorterGenome: sorterGenome, ancestors: ancestors, sorterEval: sorterEval, generation: generation, success: true ) )); } var useList = JsonConvert.DeserializeObject <List <double> >(pcs[5]); sorterEval = SorterEval.Make ( sorter: sorter, switchableGroupGuid: switchableGuid, success: success, switchUseList: useList, coveringSet: null ); return(new SorterGenomeEvalVmImpl ( SorterGenomeEval.Make ( sorterGenome: sorterGenome, ancestors: ancestors, sorterEval: sorterEval, generation: generation, success: true ) )); }