Example #1
0
        public Edge addAdjacencies(Edge newEdge)
        {
            Edge edge = Adjacencies.Find(x => x.PathId == newEdge.PathId);

            if (edge != null)
            {
                Adjacencies.Remove(edge);
            }
            Adjacencies.Add(newEdge);

            return(newEdge);
        }
Example #2
0
 public Graph(List <DbAdjacency> adjacencies, List <DbNode> nodes) : this()
 {
     foreach (var adj in adjacencies)
     {
         var startNode = nodes.FirstOrDefault(n => n.Id == adj.StartId);
         var stopNode  = nodes.FirstOrDefault(n => n.Id == adj.StopId);
         Adjacencies.Add(new KeyValuePair <string, string>(startNode.UniqueId, stopNode.UniqueId));
     }
     foreach (var node in nodes)
     {
         NodesList.Add(node.Label, new Node(node));
     }
 }
Example #3
0
        public void PairRooms(Room r1, Room r2)
        {
            if (r1.UniqueID == r2.UniqueID)
            {
                throw new InvalidOperationException("Cannot pair a room with itself.");
            }

            foreach (var pair in Adjacencies)
            {
                if ((r1.UniqueID == pair.Item1.UniqueID && r2.UniqueID == pair.Item2.UniqueID) ||
                    (r1.UniqueID == pair.Item2.UniqueID && r2.UniqueID == pair.Item1.UniqueID))
                {
                    throw new Exception("Pair already paired.");
                }
            }

            var adjacentRooms = r1.NumericID < r2.NumericID ? Tuple.Create(r1, r2) : Tuple.Create(r2, r1);

            Adjacencies.Add(adjacentRooms);
            Console.WriteLine($"{r1.Name}, {r2.Name} are paired");
        }