aoc2017/csharp/BScottDay11.cs

66 lines
2.1 KiB
C#
Raw Normal View History

2018-12-22 12:50:18 -06:00
using System;
using System.IO;
namespace AOC2017
{
class BScottDay11 : BScottSolution
{
public override string Name => "Day 11: Hex Ed";
public override void Run()
{
Console.WriteLine($"Part 1 Example Answer #1 (ne,ne,ne):\t\t{CalculateDistances("ne,ne,ne").Item1}");
Console.WriteLine($"Part 1 Example Answer #2 (ne,ne,sw,sw):\t\t{CalculateDistances("ne,ne,sw,sw").Item1}");
Console.WriteLine($"Part 1 Example Answer #3 (ne,ne,s,s):\t\t{CalculateDistances("ne,ne,s,s").Item1}");
Console.WriteLine($"Part 1 Example Answer #4 (se,sw,se,sw,sw):\t{CalculateDistances("se,sw,se,sw,sw").Item1}");
string input = File.ReadAllText("BScottDay11.txt");
Console.WriteLine($"Part 1 Answer:\t{CalculateDistances(input).Item1}");
Console.WriteLine($"Part 2 Answer:\t{CalculateDistances(input).Item2}");
}
private static Tuple<int,int> CalculateDistances(string input)
{
string[] commands = input.Split(',');
int x = 0, y = 0, distance = 0, maxDistance = 0;
foreach (string cmd in commands)
{
switch (cmd)
{
case "n":
y--;
break;
case "s":
y++;
break;
case "ne":
x++;
break;
case "sw":
x--;
break;
case "se":
y++;
x++;
break;
case "nw":
y--;
x--;
break;
}
distance = Math.Max(Math.Abs(y), Math.Max(Math.Abs(x), Math.Abs((x - y) * -1)));
if (distance > maxDistance)
maxDistance = distance;
}
return Tuple.Create(distance,maxDistance);
}
}
}