2022-12-03 05:55:49 +00:00
|
|
|
namespace AOC2015;
|
2022-11-11 18:42:42 +00:00
|
|
|
|
|
|
|
/// <summary>
|
2022-12-03 05:41:38 +00:00
|
|
|
/// Day 20: <a href="https://adventofcode.com/2015/day/20"/>
|
2022-11-11 18:42:42 +00:00
|
|
|
/// </summary>
|
2023-09-20 18:38:58 +00:00
|
|
|
public sealed class Day20() : Day(2015, 20, "Infinite Elves and Infinite Houses")
|
2022-11-11 18:42:42 +00:00
|
|
|
{
|
2023-09-20 20:57:52 +00:00
|
|
|
private int _input;
|
|
|
|
|
2023-12-01 07:30:47 +00:00
|
|
|
public override void ProcessInput() =>
|
2023-09-20 20:57:52 +00:00
|
|
|
_input = int.Parse(Input.First());
|
|
|
|
|
|
|
|
public override object Part1()
|
|
|
|
{
|
|
|
|
var houses = new int[1_000_000];
|
|
|
|
for (var i = 1; i < houses.Length; i++)
|
|
|
|
{
|
|
|
|
for (var j = i; j < houses.Length; j += i)
|
|
|
|
{
|
|
|
|
houses[j] += i * 10;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (var i = 1; i < houses.Length; i++)
|
|
|
|
{
|
|
|
|
if (houses[i] >= _input) return i;
|
|
|
|
}
|
|
|
|
|
|
|
|
return "";
|
2022-12-08 19:40:40 +00:00
|
|
|
}
|
2022-11-11 18:42:42 +00:00
|
|
|
|
2023-09-20 20:57:52 +00:00
|
|
|
public override object Part2()
|
|
|
|
{
|
|
|
|
var min = int.MaxValue;
|
|
|
|
var houses = new int[1_000_000];
|
|
|
|
for (var i = 1; i < houses.Length; i++)
|
|
|
|
{
|
|
|
|
for (int j = i, c = 0; j < houses.Length && c < 50; j += i, c++)
|
|
|
|
{
|
|
|
|
if ((houses[j] += i * 11) >= _input)
|
|
|
|
min = Math.Min(min, j);
|
|
|
|
}
|
|
|
|
}
|
2022-11-11 18:42:42 +00:00
|
|
|
|
2023-09-20 20:57:52 +00:00
|
|
|
return min;
|
|
|
|
}
|
2022-11-11 18:42:42 +00:00
|
|
|
}
|