public Boolean EqualByOutput(RelatedNode otherNode) { if (otherNode == null) { return(false); } if (nextNodes.Count != otherNode.nextNodes.Count) { return(false); } var nextNodesCurrentNode = GetNextNodes().OrderBy(el => el.Id); var nextNodesOtherNode = otherNode.GetNextNodes().OrderBy(el => el.Id); for (Int32 index = 0; index < nextNodes.Count; index++) { var nextNodeCurrentNode = nextNodesCurrentNode.ElementAt(index); var nextNodeOtherNode = nextNodesOtherNode.ElementAt(index); if (nextNodeCurrentNode.Id != nextNodeOtherNode.Id) { return(false); } var firstSymbols = GetIntersectSymbolsWithNext(nextNodeCurrentNode); var secondSymbols = otherNode.GetIntersectSymbolsWithNext(nextNodeOtherNode); if (firstSymbols.Count() != secondSymbols.Count()) { return(false); } if (firstSymbols.Union(secondSymbols).Count() != firstSymbols.Count()) { return(false); } } return(true); }
public Boolean ExistPathToEnd(String symbols) { RelatedNode current = this; foreach (var symbol in symbols) { current = current.nextNodes.FirstOrDefault(el => current.GetIntersectSymbolsWithNext(el).Contains(symbol)); if (current == null) { return(false); } } return(current.IsEnd()); }