private List <QuickSortGroup> GetGroups(IEnumerable <SignitureItem> items) { Dictionary <int, List <SignitureItem> > dictionary = new Dictionary <int, List <SignitureItem> >(); foreach (SignitureItem item in items) { if (dictionary.ContainsKey(item.Rank)) { dictionary[item.Rank].Add(item); } else { dictionary.Add(item.Rank, new List <SignitureItem>() { item }); } } List <QuickSortGroup> ret = new List <QuickSortGroup>(); foreach (List <SignitureItem> item in dictionary.Values) { List <SignitureItem> unsortedSet = item.ToList(); SignitureItem pivotItem = unsortedSet[0]; unsortedSet.RemoveAt(0); QuickSortGroup group = new QuickSortGroup(pivotItem, unsortedSet, pivotItem.Rank, this); ret.Add(group); } return(ret); }
public ItemFight GetNextFight() { SignitureItem left = LeftGroup.TakeLastItem(); SignitureItem right = RightGroup.TakeLastItem(); return(new ItemFight(left, right, this)); }
public SignitureItem TakeLastItem() { SignitureItem ret = _items.Last(); _items.Remove(ret); return(ret); }
public static MainViewModel LoadFromRaw(string rawPath, string xmlPath) { List <SignitureItem> initialItems = SignitureItem.LoadFromRawText(rawPath); MainViewModel viewModel = new MainViewModel(initialItems, xmlPath); viewModel.Save(); return(viewModel); }
private QuickSortGroup GetGroupFrom(List <SignitureItem> items, int rankOffset) { if (!items.Any()) { return(null); } SignitureItem pivotItem = GetPivotItem(items); List <SignitureItem> unsortedItems = items.ToList(); unsortedItems.Remove(pivotItem); return(new QuickSortGroup(pivotItem, unsortedItems, rankOffset, _mothership)); }
public static MainViewModel LoadFromXml(string path) { XmlDocument doc = new XmlDocument(); doc.Load(path); List <SignitureItem> items = new List <SignitureItem>(); foreach (XmlElement item in doc.DocumentElement.ChildNodes) { SignitureItem loadedItem = SignitureItem.FromXml(item); items.Add(loadedItem); } return(new MainViewModel(items, path)); }
public QuickSortGroup(SignitureItem pivotItem, IEnumerable <SignitureItem> unsortedLines, int rankOffset, PhraseSorter mothership) { _mothership = mothership; PivotItem = pivotItem; _rankOffset = rankOffset; _unsortedLines = unsortedLines.ToList(); _betterLines = new List <SignitureItem>(); _worseLines = new List <SignitureItem>(); foreach (SignitureItem item in AllItems) { item.Rank = rankOffset; } }
public static List <SignitureItem> LoadFromRawText(string textFile) { List <SignitureItem> ret = new List <SignitureItem>(); string[] rawLines = File.ReadAllLines(textFile); for (int i = 0; i < rawLines.Length - 1; i++) { string currentLine = rawLines[i]; RawLine currentConverted = new RawLine(currentLine); string nextLine = rawLines[i + 1]; RawLine nextConverted = new RawLine(nextLine); int rank = rawLines.Length - i; SignitureItem item = new SignitureItem(currentConverted.StartTime, nextConverted.StartTime, currentConverted.Phrase, rank); ret.Add(item); } return(ret); }
public PhraseFight(SignitureItem leftItem, SignitureItem rightItem) { LeftItem = leftItem; RightItem = rightItem; }
public ItemFight(SignitureItem left, SignitureItem right, MergeGroupFight source) { Left = left; Right = right; _source = source; }
public void ReturnItem(SignitureItem item) { _items.Add(item); }