public long Solve2(IList <string> input) { var ferry = new Ferry(); foreach (var instruction in input) { ferry.ProcessWaypoint(instruction); } return(ferry.ManhattenDistance); }
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); }