Пример #1
0
        public static string B(string input)
        {
            List <string> inputList = input.Split(new string[] { Environment.NewLine }, StringSplitOptions.None).ToList();
            IntVector2    position  = new IntVector2(0, 0);
            IntVector2    waypoint  = new IntVector2(10, -1);

            foreach (string line in inputList)
            {
                char direction = line[0];
                int  magnitude = Convert.ToInt32(line.Substring(1));
                switch (direction)
                {
                case 'N':
                    waypoint = waypoint.North(magnitude);
                    break;

                case 'E':
                    waypoint = waypoint.East(magnitude);
                    break;

                case 'S':
                    waypoint = waypoint.South(magnitude);
                    break;

                case 'W':
                    waypoint = waypoint.West(magnitude);
                    break;

                case 'F':
                    position = position.Add(waypoint.Multiply(magnitude));
                    break;

                case 'L':
                    while (magnitude > 0)
                    {
                        waypoint   = waypoint.Left();
                        magnitude -= 90;
                    }
                    break;

                case 'R':
                    while (magnitude > 0)
                    {
                        waypoint   = waypoint.Right();
                        magnitude -= 90;
                    }
                    break;

                default:
                    throw new Exception("Invalid direction: " + direction);
                }
                //Console.WriteLine("Position: " + position + ", Direction: " + facing);
            }
            return(position.Distance(new IntVector2(0, 0)).ToString());;
        }
Пример #2
0
 internal IntVector2 Multiply(int quantity)
 {
     return(IntVector2.Multiply(this, quantity));
 }