Day2 playing with top level statements
This commit is contained in:
parent
803266f078
commit
028e89266a
56
Day2.cs
56
Day2.cs
|
|
@ -1,43 +1,29 @@
|
||||||
#define Day2
|
#define Day2
|
||||||
#if Day2
|
#if Day2
|
||||||
long f = 0;
|
Position PartOne(Position p, Operation op) => op.op switch {
|
||||||
long d = 0;
|
"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")
|
var linesSplit = File.ReadAllLines("day2/input")
|
||||||
.Select(l => l.Split(" "))
|
.Select(l => l.Split(" "))
|
||||||
.Select(lineParts => new { op = lineParts[0], x = long.Parse(lineParts[1]) })
|
.Select(lineParts => new Operation(lineParts[0], long.Parse(lineParts[1])))
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
linesSplit.ForEach(v => {
|
var partOneResult = linesSplit.Aggregate(new Position(0, 0, 0), PartOne);
|
||||||
switch (v.op) {
|
Console.WriteLine(partOneResult.f * partOneResult.d);
|
||||||
case "down":
|
|
||||||
d += v.x;
|
|
||||||
break;
|
|
||||||
case "up":
|
|
||||||
d -= v.x;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
f += v.x;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Console.WriteLine(f * d);
|
|
||||||
|
|
||||||
f = 0;
|
var partTwoResult = linesSplit.Aggregate(new Position(0, 0, 0), PartTwo);
|
||||||
d = 0;
|
Console.WriteLine(partTwoResult.f * partTwoResult.d);
|
||||||
long aim = 0;
|
|
||||||
linesSplit.ForEach(v => {
|
record Operation(String op, long x);
|
||||||
switch (v.op) {
|
record Position(long f, long d, long aim);
|
||||||
case "down":
|
|
||||||
aim += v.x;
|
|
||||||
break;
|
|
||||||
case "up":
|
|
||||||
aim -= v.x;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
f += v.x;
|
|
||||||
d += aim * v.x;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
Console.WriteLine(f * d);
|
|
||||||
#endif
|
#endif
|
||||||
Loading…
Reference in New Issue