Beispiel #1
0
        public int Between(IProgrammer programmerFrom, IProgrammer programmerTo)
        {
            if (programmerFrom.Equals(programmerTo))
            {
                return(0);
            }

            var parents = BuildParentPointers(programmerFrom);

            return(ShortestPath(programmerFrom, programmerTo, parents));
        }
Beispiel #2
0
        private static int ShortestPath(IProgrammer programmerFrom, IProgrammer programmerTo, Dictionary <IProgrammer, IProgrammer> parents)
        {
            var         degreesOfSeparation = 0;
            IProgrammer parentProgrammer    = programmerTo;

            while (!programmerFrom.Equals(parentProgrammer))
            {
                parentProgrammer = parents[parentProgrammer];
                degreesOfSeparation++;
            }

            return(degreesOfSeparation);
        }