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)); }
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()); }