day 11
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
fabcc56951
commit
c168e0b9a2
|
@ -14,6 +14,7 @@ public class DayTests
|
||||||
[DataRow(typeof(Day08), "362", "1020159")]
|
[DataRow(typeof(Day08), "362", "1020159")]
|
||||||
[DataRow(typeof(Day09), "478", "1327014")]
|
[DataRow(typeof(Day09), "478", "1327014")]
|
||||||
[DataRow(typeof(Day10), "288291", "820045242")]
|
[DataRow(typeof(Day10), "288291", "820045242")]
|
||||||
|
[DataRow(typeof(Day11), "1613", "510")]
|
||||||
public void CheckAllDays(Type dayType, string part1, string part2)
|
public void CheckAllDays(Type dayType, string part1, string part2)
|
||||||
{
|
{
|
||||||
var s = Stopwatch.StartNew();
|
var s = Stopwatch.StartNew();
|
||||||
|
@ -54,6 +55,7 @@ public class DayTests
|
||||||
[DataRow(typeof(Day08), "26", "61229")]
|
[DataRow(typeof(Day08), "26", "61229")]
|
||||||
[DataRow(typeof(Day09), "15", "1134")]
|
[DataRow(typeof(Day09), "15", "1134")]
|
||||||
[DataRow(typeof(Day10), "26397", "288957")]
|
[DataRow(typeof(Day10), "26397", "288957")]
|
||||||
|
[DataRow(typeof(Day11), "1656", "195")]
|
||||||
public void CheckTestInputs(Type dayType, string part1, string part2)
|
public void CheckTestInputs(Type dayType, string part1, string part2)
|
||||||
{
|
{
|
||||||
Day.UseTestInput = true;
|
Day.UseTestInput = true;
|
||||||
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
namespace aoc2021;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Day 11: <see href="https://adventofcode.com/2021/day/11"/>
|
||||||
|
/// </summary>
|
||||||
|
public sealed class Day11 : Day
|
||||||
|
{
|
||||||
|
private int _currentAnswer;
|
||||||
|
private readonly int _flashesAfter100, _totalTurns;
|
||||||
|
private readonly int[][] _octopusField;
|
||||||
|
|
||||||
|
public Day11() : base(11, "Dumbo Octopus")
|
||||||
|
{
|
||||||
|
_octopusField = Input.Select(line => line.Select(c => int.Parse($"{c}")).ToArray()).ToArray();
|
||||||
|
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
_totalTurns++;
|
||||||
|
|
||||||
|
// increment all octopuses
|
||||||
|
for (var row = 0; row < _octopusField.Length; row++)
|
||||||
|
for (var col = 0; col < _octopusField[row].Length; col++)
|
||||||
|
_octopusField[row][col]++;
|
||||||
|
|
||||||
|
// flash any that exceeded 10
|
||||||
|
for (var row = 0; row < _octopusField.Length; row++)
|
||||||
|
for (var col = 0; col < _octopusField[row].Length; col++)
|
||||||
|
if (_octopusField[row][col] == 10)
|
||||||
|
FlashAt(row, col);
|
||||||
|
|
||||||
|
var done = true;
|
||||||
|
for (var row = 0; row < _octopusField.Length; row++)
|
||||||
|
for (var col = 0; col < _octopusField[row].Length; col++)
|
||||||
|
if (_octopusField[row][col] == -1)
|
||||||
|
_octopusField[row][col] = 0;
|
||||||
|
else
|
||||||
|
done = false;
|
||||||
|
|
||||||
|
if (_totalTurns == 100) _flashesAfter100 = _currentAnswer;
|
||||||
|
if (done) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FlashAt(int r, int c)
|
||||||
|
{
|
||||||
|
_currentAnswer++;
|
||||||
|
_octopusField[r][c] = -1;
|
||||||
|
foreach (var rr in new[] { -1, 0, 1 }.Select(dr => dr + r))
|
||||||
|
foreach (var cc in new[] { -1, 0, 1 }.Select(dc => dc + c))
|
||||||
|
if (0 <= rr && rr < _octopusField.Length && 0 <= cc && cc < _octopusField[0].Length && _octopusField[rr][cc] != -1)
|
||||||
|
{
|
||||||
|
_octopusField[rr][cc]++;
|
||||||
|
if (_octopusField[rr][cc] >= 10)
|
||||||
|
FlashAt(rr, cc);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string Part1() => $"{_flashesAfter100}";
|
||||||
|
|
||||||
|
public override string Part2() => $"{_totalTurns}";
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
3322874652
|
||||||
|
5636588857
|
||||||
|
7755117548
|
||||||
|
5854121833
|
||||||
|
2856682477
|
||||||
|
3124873812
|
||||||
|
1541372254
|
||||||
|
8634383236
|
||||||
|
2424323348
|
||||||
|
2265635842
|
|
@ -0,0 +1,10 @@
|
||||||
|
5483143223
|
||||||
|
2745854711
|
||||||
|
5264556173
|
||||||
|
6141336146
|
||||||
|
6357385478
|
||||||
|
4167524645
|
||||||
|
2176841721
|
||||||
|
6882881134
|
||||||
|
4846848554
|
||||||
|
5283751526
|
Loading…
Reference in New Issue