public long Solve2(IList <string> input)
        {
            var ferry = new Ferry();

            foreach (var instruction in input)
            {
                ferry.ProcessWaypoint(instruction);
            }

            return(ferry.ManhattenDistance);
        }
Beispiel #2
0
        public async ValueTask ExecuteAsync(IConsole console)
        {
            var initialFerry  = new Ferry(Direction.East, Point.Origin);
            var initialFerry2 = new Ferry2(new Point(10, 1), Point.Origin);
            var sampleRoute   = File
                                .ReadAllLines("input/12-sample")
                                .Select(ParseInstruction)
                                .ToList();
            var inputRoute = File
                             .ReadAllLines("input/12-input")
                             .Select(ParseInstruction)
                             .ToList();

            console.Output.WriteLine(NavigateFerry(initialFerry, sampleRoute).ManhattanDistanceFromOrigin);
            console.Output.WriteLine(NavigateFerry(initialFerry, inputRoute).ManhattanDistanceFromOrigin);
            console.Output.WriteLine(NavigateFerry(initialFerry2, sampleRoute).ManhattanDistanceFromOrigin);
            console.Output.WriteLine(NavigateFerry(initialFerry2, inputRoute).ManhattanDistanceFromOrigin);

            Point NavigateFerry(IFerry ferry, IEnumerable <FerryInstruction> route) => route
            .Aggregate(
                seed: ferry,
                func: (acc, obj) => acc.Move(obj),
                resultSelector: final => final.Position);
        }