Esempio n. 1
0
        public void Given_BoundaryCoordinate_Should_ResultLessNeighbourCoordinates2()
        {
            var c          = new Coordinate(9, 9);
            var neighbours = new NeighbourCoorinates(c, 9, 9);

            Assert.Equal(3, neighbours.Count);
        }
Esempio n. 2
0
        public void Given_ValidCentralCoordinate_Should_ReturnExpectedNeighbourCoordinates()
        {
            var c          = new Coordinate(1, 1);
            var neighbours = new NeighbourCoorinates(c, 3, 3);

            Assert.Equal(8, neighbours.Count);
        }
Esempio n. 3
0
        /// <summary>
        /// Grouping students by horizontally, vertically or diagonally adjacent cells.
        /// </summary>
        /// <param name="timeMarksMatrix"></param>
        /// <returns></returns>
        public List <Group> GroupingStudents(string[,] timeMarksMatrix)
        {
            List <Group> groups = new List <Group>();

            if (timeMarksMatrix == null)
            {
                return(groups);
            }

            int rowCount = timeMarksMatrix.GetLength(0);
            int colCount = timeMarksMatrix.GetLength(1);

            for (int x = 0; x < rowCount; x++)
            {
                for (int y = 0; y < colCount; y++)
                {
                    string student = timeMarksMatrix[x, y];
                    if (string.IsNullOrEmpty(student))
                    {
                        continue;
                    }

                    var group                = groups.FindGroup(student);
                    var centralCoordinate    = new Coordinate(x, y);
                    var neighbourCoordinates = new NeighbourCoorinates(centralCoordinate, rowCount, colCount);

                    foreach (var @coordinate in neighbourCoordinates)
                    {
                        string studentAtCoordinate = timeMarksMatrix[@coordinate.X, @coordinate.Y];
                        if (!string.IsNullOrEmpty(studentAtCoordinate) && !group.HasStudent(studentAtCoordinate))
                        {
                            group.Members.Add(studentAtCoordinate);
                        }
                    }
                }
            }

            return(groups);
        }