mirror of
https://github.com/parnic/advent-of-code-2023.git
synced 2025-06-16 16:50:14 -05:00
Day 6
Thanks for the reprieve.
This commit is contained in:
@ -40,6 +40,8 @@
|
|||||||
<EmbeddedResource Include="inputs\04a.txt" />
|
<EmbeddedResource Include="inputs\04a.txt" />
|
||||||
<EmbeddedResource Include="inputs\05.txt" />
|
<EmbeddedResource Include="inputs\05.txt" />
|
||||||
<EmbeddedResource Include="inputs\05a.txt" />
|
<EmbeddedResource Include="inputs\05a.txt" />
|
||||||
|
<EmbeddedResource Include="inputs\06.txt" />
|
||||||
|
<EmbeddedResource Include="inputs\06a.txt" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
2
inputs/06.txt
Normal file
2
inputs/06.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Time: 44 70 70 80
|
||||||
|
Distance: 283 1134 1134 1491
|
2
inputs/06a.txt
Normal file
2
inputs/06a.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Time: 7 15 30
|
||||||
|
Distance: 9 40 200
|
67
src/06.cs
Normal file
67
src/06.cs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
namespace aoc2023;
|
||||||
|
|
||||||
|
internal class Day06 : Day
|
||||||
|
{
|
||||||
|
private List<int> times = new();
|
||||||
|
private List<int> dists = new();
|
||||||
|
private long time = 0;
|
||||||
|
private long dist = 0;
|
||||||
|
internal override void Parse()
|
||||||
|
{
|
||||||
|
var lines = Util.Parsing.ReadAllLines($"{GetDay()}").ToList();
|
||||||
|
var timeline = lines[0].Split(':');
|
||||||
|
times = timeline[1].Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||||||
|
time = long.Parse(timeline[1].Replace(" ", ""));
|
||||||
|
var distline = lines[1].Split(':');
|
||||||
|
dists = distline[1].Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToList();
|
||||||
|
dist = long.Parse(distline[1].Replace(" ", ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
internal override string Part1()
|
||||||
|
{
|
||||||
|
long total = 1;
|
||||||
|
for (int i = 0; i < times.Count; i++)
|
||||||
|
{
|
||||||
|
long numWins = 0;
|
||||||
|
bool hasWon = false;
|
||||||
|
for (int chargetime = 1; chargetime < times[i]; chargetime++)
|
||||||
|
{
|
||||||
|
var d = chargetime * (times[i] - chargetime);
|
||||||
|
if (d > dists[i])
|
||||||
|
{
|
||||||
|
hasWon = true;
|
||||||
|
numWins++;
|
||||||
|
}
|
||||||
|
else if (hasWon)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
total *= numWins;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"Multiplied number of wins total: <+white>{total}";
|
||||||
|
}
|
||||||
|
|
||||||
|
internal override string Part2()
|
||||||
|
{
|
||||||
|
long numWins = 0;
|
||||||
|
bool hasWon = false;
|
||||||
|
for (int chargetime = 1; chargetime < time; chargetime++)
|
||||||
|
{
|
||||||
|
var d = chargetime * (time - chargetime);
|
||||||
|
if (d > dist)
|
||||||
|
{
|
||||||
|
hasWon = true;
|
||||||
|
numWins++;
|
||||||
|
}
|
||||||
|
else if (hasWon)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $"Number of wins with correct kerning: <+white>{numWins}";
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user