public override List <int> getCorrespondingSel() { List <int> result = new List <int>(); try { // treat intersections first while (ops.Contains(concat.intersection) && (ops.Contains(concat.addition) || ops.Contains(concat.substraction))) { int _index = ops.FindIndex(y => y == concat.intersection); ConsoleElement c1 = content[_index]; ConsoleElement c2 = content[_index + 1]; ConsoleContainerElement _brackElem = new ConsoleContainerElement(this); _brackElem.content.Add(c1); _brackElem.content.Add(c2); _brackElem.ops.Add(ops[_index]); content.Remove(c1); content.Remove(c2); ops.RemoveAt(_index); content.Insert(_index, _brackElem); } Queue <ConsoleElement> queuedContent = new Queue <ConsoleElement>(content); Queue <concat> queuedOps = new Queue <concat>(ops); result = queuedContent.Dequeue().getCorrespondingSel(); while (queuedOps.Count > 0) { result = Eval(result, queuedContent.Dequeue(), queuedOps.Dequeue()); } } catch { } return(result); }
private List <int> Eval(List <int> c1, ConsoleElement c2, concat _ops) { List <int> result = new List <int>(); if (_ops == concat.addition) { result = c1 + c2; return(result); } if (_ops == concat.substraction) { result = c1 - c2; return(result); } if (_ops == concat.intersection) { result = c1 * c2; return(result); } return(result); }