2021aoc/Day2.cs

29 lines
992 B
C#

// #define Day2
#if Day2
Position PartOne(Position p, Operation op) => op.op switch {
"down" => new Position(p.f, p.d + op.x, p.aim),
"up" => new Position(p.f, p.d - op.x, p.aim),
_ => new Position(p.f + op.x, p.d, p.aim)
};
Position PartTwo(Position p, Operation op) => op.op switch {
"down" => new Position(p.f, p.d , p.aim+ op.x),
"up" => new Position(p.f, p.d, p.aim - op.x),
_ => new Position(p.f + op.x, p.d + (p.aim * op.x), p.aim)
};
var linesSplit = File.ReadAllLines("day2/input")
.Select(l => l.Split(" "))
.Select(lineParts => new Operation(lineParts[0], long.Parse(lineParts[1])))
.ToList();
var partOneResult = linesSplit.Aggregate(new Position(0, 0, 0), PartOne);
Console.WriteLine(partOneResult.f * partOneResult.d);
var partTwoResult = linesSplit.Aggregate(new Position(0, 0, 0), PartTwo);
Console.WriteLine(partTwoResult.f * partTwoResult.d);
record Operation(String op, long x);
record Position(long f, long d, long aim);
#endif