Example #1
0
        public FloorReturn SolveFloor(int[] floor, int start = -1)
        {
            var result = new FloorReturn();

            if (start >= 0)
            {
                result.StartPosition = start;
            }
            else
            {
                if (floor.Contains(2))
                {
                    result.StartPosition = Array.IndexOf(floor, 2);
                }
                else
                {
                    result.StepCount = 0;
                    return(result);
                }
            }
            var stairIndex = Array.IndexOf(floor, 1);

            if (stairIndex < 0)
            {
                stairIndex = floor.Length - 1;
            }
            result.Direction = stairIndex < result.StartPosition ? Direction.Left : Direction.Right;

            result.StepCount     = Math.Abs(stairIndex - result.StartPosition);
            result.StartPosition = stairIndex;

            return(result);
        }
        public void SolveFloorTest3()
        {
            int[]       floor       = new int[] { 0, 2, 0, 0, 0 };
            var         floorReturn = _sut.SolveFloor(floor);
            FloorReturn result      = new FloorReturn()
            {
                Direction = Direction.Right, StartPosition = 4, StepCount = 3
            };

            Assert.AreEqual(result, _sut.SolveFloor(floor));
        }
Example #3
0
        public string[] GetFinalResult(List <FloorReturn> list)
        {
            FloorReturn   previous    = null;
            List <string> finalResult = new List <string>();

            foreach (var result in list)
            {
                if (previous == null)
                {
                    finalResult.Add((result.Direction == Direction.Left ? "L" : "R") + result.StepCount);
                }
                else
                {
                }
                previous = result;
            }

            return(finalResult.ToArray());
        }