Exemplo n.º 1
0
        public List <INode <int> > Extract(List <List <int> > matrix, int m, int n)
        {
            var        result   = new List <INode <int> >();
            Node <int> lastNode = null;

            for (var i = 0; i < m / 2 && i < n / 2; i++)
            {
                var x       = i;
                var y       = i;
                var started = false;

                while (!started || !(x == i && y == i))
                {
                    var nextNode = new Node <int> {
                        Value = matrix[y][x]
                    };

                    if (!started)
                    {
                        result.Add(nextNode);
                        started = true;
                    }
                    else
                    {
                        lastNode.Next = nextNode;
                    }

                    lastNode = nextNode;

                    var direction = _directionGenerator.Get(x, y, m, n);

                    switch (direction)
                    {
                    case Direction.Up:
                        y--;
                        break;

                    case Direction.Down:
                        y++;
                        break;

                    case Direction.Left:
                        x--;
                        break;

                    case Direction.Right:
                        x++;
                        break;

                    case Direction.None:
                        break;
                    }
                }
            }


            return(result);
        }
Exemplo n.º 2
0
 public void DirectionGenerationTest(int x, int y, int m, int n, Direction result)
 {
     _directionGenerator.Get(x, y, m, n).Should().BeEquivalentTo(result);
 }