[2022] Refactoring
This commit is contained in:
parent
69b5115122
commit
13b353a2da
|
@ -2,12 +2,11 @@ namespace AdventOfCode.Year2022;
|
||||||
|
|
||||||
public class Day1
|
public class Day1
|
||||||
{
|
{
|
||||||
private static List<int> _caloriesPerElf = new();
|
private static readonly List<int> CaloriesPerElf = GetCaloriesPerElf();
|
||||||
|
|
||||||
public Day1()
|
public Day1()
|
||||||
{
|
{
|
||||||
Console.WriteLine("\nDay1 Solution");
|
Console.WriteLine("\nDay1 Solution");
|
||||||
LoadCaloriesPerElf();
|
|
||||||
Console.WriteLine($"Part1 Result: {Part1()}");
|
Console.WriteLine($"Part1 Result: {Part1()}");
|
||||||
Console.WriteLine($"Part2 Result: {Part2()}");
|
Console.WriteLine($"Part2 Result: {Part2()}");
|
||||||
Console.WriteLine("\n=============================\n");
|
Console.WriteLine("\n=============================\n");
|
||||||
|
@ -15,7 +14,7 @@ public class Day1
|
||||||
|
|
||||||
private static int Part1()
|
private static int Part1()
|
||||||
{
|
{
|
||||||
return _caloriesPerElf.Max();
|
return CaloriesPerElf.Max();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static int Part2()
|
private static int Part2()
|
||||||
|
@ -23,14 +22,14 @@ public class Day1
|
||||||
List<int> top3 = new List<int>();
|
List<int> top3 = new List<int>();
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
{
|
{
|
||||||
top3.Add(_caloriesPerElf.Max());
|
top3.Add(CaloriesPerElf.Max());
|
||||||
_caloriesPerElf.Remove(_caloriesPerElf.Max());
|
CaloriesPerElf.Remove(CaloriesPerElf.Max());
|
||||||
}
|
}
|
||||||
|
|
||||||
return top3.Sum();
|
return top3.Sum();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void LoadCaloriesPerElf()
|
private static List<int> GetCaloriesPerElf()
|
||||||
{
|
{
|
||||||
string[] calories = File.ReadAllLines("inputs/day1.txt");
|
string[] calories = File.ReadAllLines("inputs/day1.txt");
|
||||||
int[] caloriesPerDay = new int[calories.Length];
|
int[] caloriesPerDay = new int[calories.Length];
|
||||||
|
@ -44,6 +43,6 @@ public class Day1
|
||||||
}
|
}
|
||||||
|
|
||||||
int elfCount = caloriesPerDay.ToList().IndexOf(0);
|
int elfCount = caloriesPerDay.ToList().IndexOf(0);
|
||||||
_caloriesPerElf = caloriesPerDay.ToList().GetRange(0, elfCount);
|
return caloriesPerDay.ToList().GetRange(0, elfCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,12 +2,11 @@ namespace AdventOfCode.Year2022;
|
||||||
|
|
||||||
public class Day2
|
public class Day2
|
||||||
{
|
{
|
||||||
private static readonly List<string[]> _matches = new();
|
private static readonly List<string[]> Matches = LoadMatches();
|
||||||
|
|
||||||
public Day2()
|
public Day2()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Day2 Solution");
|
Console.WriteLine("Day2 Solution");
|
||||||
LoadMatches();
|
|
||||||
Console.WriteLine($"Part1 Result: {Part1()}");
|
Console.WriteLine($"Part1 Result: {Part1()}");
|
||||||
Console.WriteLine($"Part2 Result: {Part2()}");
|
Console.WriteLine($"Part2 Result: {Part2()}");
|
||||||
Console.WriteLine("\n=============================\n");
|
Console.WriteLine("\n=============================\n");
|
||||||
|
@ -16,7 +15,7 @@ public class Day2
|
||||||
private static int Part1()
|
private static int Part1()
|
||||||
{
|
{
|
||||||
int score = 0;
|
int score = 0;
|
||||||
foreach (string[] match in _matches)
|
foreach (string[] match in Matches)
|
||||||
{
|
{
|
||||||
if (match[0] == "A")
|
if (match[0] == "A")
|
||||||
{
|
{
|
||||||
|
@ -53,7 +52,7 @@ public class Day2
|
||||||
private static int Part2()
|
private static int Part2()
|
||||||
{
|
{
|
||||||
int score = 0;
|
int score = 0;
|
||||||
foreach (string[] match in _matches)
|
foreach (string[] match in Matches)
|
||||||
{
|
{
|
||||||
if (match[0] == "A")
|
if (match[0] == "A")
|
||||||
{
|
{
|
||||||
|
@ -87,9 +86,11 @@ public class Day2
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void LoadMatches()
|
private static List<string[]> LoadMatches()
|
||||||
{
|
{
|
||||||
|
List<string[]> matches = new List<string[]>();
|
||||||
foreach (string line in File.ReadAllLines("inputs/day2.txt"))
|
foreach (string line in File.ReadAllLines("inputs/day2.txt"))
|
||||||
_matches.Add(line.Split(" "));
|
matches.Add(line.Split(" "));
|
||||||
|
return matches;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -2,7 +2,7 @@ namespace AdventOfCode.Year2022;
|
||||||
|
|
||||||
public class Day3
|
public class Day3
|
||||||
{
|
{
|
||||||
private static readonly string[] backpacks = File.ReadAllLines("inputs/day3.txt");
|
private static readonly string[] Backpacks = File.ReadAllLines("inputs/day3.txt");
|
||||||
|
|
||||||
public Day3()
|
public Day3()
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ public class Day3
|
||||||
|
|
||||||
List<char> duplicates = new List<char>();
|
List<char> duplicates = new List<char>();
|
||||||
|
|
||||||
foreach (string backpack in backpacks)
|
foreach (string backpack in Backpacks)
|
||||||
{
|
{
|
||||||
int compartmentSize = backpack.Length / 2;
|
int compartmentSize = backpack.Length / 2;
|
||||||
List<char> itemsInCompartment1 = new List<char>();
|
List<char> itemsInCompartment1 = new List<char>();
|
||||||
|
@ -49,7 +49,7 @@ public class Day3
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
List<List<string>> groups = new List<List<string>>();
|
List<List<string>> groups = new List<List<string>>();
|
||||||
|
|
||||||
for (int i = 0; i < backpacks.Length; i+=3)
|
for (int i = 0; i < Backpacks.Length; i+=3)
|
||||||
{
|
{
|
||||||
List<string> group = new List<string>();
|
List<string> group = new List<string>();
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ public class Day3
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
group.Add(backpacks[i + x]);
|
group.Add(Backpacks[i + x]);
|
||||||
}
|
}
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,21 +22,21 @@ public class Day4
|
||||||
Console.WriteLine("\n=============================\n");
|
Console.WriteLine("\n=============================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsContained(string line)
|
private static bool IsContained(string line)
|
||||||
{
|
{
|
||||||
int[][] limits = GetLimits(line);
|
int[][] limits = GetLimits(line);
|
||||||
return (limits[0][0] >= limits[1][0] && limits[0][1] <= limits[1][1])
|
return (limits[0][0] >= limits[1][0] && limits[0][1] <= limits[1][1])
|
||||||
|| (limits[1][0] >= limits[0][0] && limits[1][1] <= limits[0][1]);
|
|| (limits[1][0] >= limits[0][0] && limits[1][1] <= limits[0][1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool IsIntersected(string line)
|
private static bool IsIntersected(string line)
|
||||||
{
|
{
|
||||||
int[][] limits = GetLimits(line);
|
int[][] limits = GetLimits(line);
|
||||||
return (limits[0][1] >= limits[1][0] && limits[0][0] <= limits[1][1])
|
return (limits[0][1] >= limits[1][0] && limits[0][0] <= limits[1][1])
|
||||||
|| (limits[1][1] >= limits[0][0] && limits[1][0] <= limits[0][1]);
|
|| (limits[1][1] >= limits[0][0] && limits[1][0] <= limits[0][1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int[][] GetLimits(string line)
|
private static int[][] GetLimits(string line)
|
||||||
{
|
{
|
||||||
string[] pair = line.Split(",");
|
string[] pair = line.Split(",");
|
||||||
string[] pair1 = pair[0].Split("-");
|
string[] pair1 = pair[0].Split("-");
|
||||||
|
|
|
@ -2,7 +2,7 @@ namespace AdventOfCode.Year2022;
|
||||||
|
|
||||||
public class Day6
|
public class Day6
|
||||||
{
|
{
|
||||||
private static readonly string _input = File.ReadAllText("inputs/day6.txt");
|
private static readonly string Input = File.ReadAllText("inputs/day6.txt");
|
||||||
|
|
||||||
public Day6()
|
public Day6()
|
||||||
{
|
{
|
||||||
|
@ -14,8 +14,8 @@ public class Day6
|
||||||
|
|
||||||
private static int? GetValidMarkerIndex(int size)
|
private static int? GetValidMarkerIndex(int size)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _input.Length-size; i++)
|
for (int i = 0; i < Input.Length-size; i++)
|
||||||
if (ValidateMarker(_input.Substring(i, size)))
|
if (ValidateMarker(Input.Substring(i, size)))
|
||||||
return i + size;
|
return i + size;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,11 @@ namespace AdventOfCode.Year2022;
|
||||||
|
|
||||||
public class Day7
|
public class Day7
|
||||||
{
|
{
|
||||||
private static Dictionary<string, List<string>> tree = new();
|
private static readonly Dictionary<string, List<string>> Tree = GetTree();
|
||||||
|
|
||||||
public Day7()
|
public Day7()
|
||||||
{
|
{
|
||||||
Console.WriteLine("Day7 Solution");
|
Console.WriteLine("Day7 Solution");
|
||||||
LoadTree();
|
|
||||||
Console.WriteLine($"Part1 Result: {Part1()}");
|
Console.WriteLine($"Part1 Result: {Part1()}");
|
||||||
Console.WriteLine($"Part2 Result: {Part2()}");
|
Console.WriteLine($"Part2 Result: {Part2()}");
|
||||||
Console.WriteLine("\n=============================\n");
|
Console.WriteLine("\n=============================\n");
|
||||||
|
@ -16,7 +15,7 @@ public class Day7
|
||||||
private static int Part1()
|
private static int Part1()
|
||||||
{
|
{
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
foreach (string path in tree.Keys)
|
foreach (string path in Tree.Keys)
|
||||||
{
|
{
|
||||||
int size = CalculateDirSize(path);
|
int size = CalculateDirSize(path);
|
||||||
if (size <= 100000)
|
if (size <= 100000)
|
||||||
|
@ -35,7 +34,7 @@ public class Day7
|
||||||
}
|
}
|
||||||
|
|
||||||
List<int> bigEnoughDir = new List<int>();
|
List<int> bigEnoughDir = new List<int>();
|
||||||
foreach (string path in tree.Keys)
|
foreach (string path in Tree.Keys)
|
||||||
{
|
{
|
||||||
int size = CalculateDirSize(path);
|
int size = CalculateDirSize(path);
|
||||||
if (size > neededSpace)
|
if (size > neededSpace)
|
||||||
|
@ -49,7 +48,7 @@ public class Day7
|
||||||
private static int CalculateDirSize(string path)
|
private static int CalculateDirSize(string path)
|
||||||
{
|
{
|
||||||
int size = 0;
|
int size = 0;
|
||||||
List<string> dirContent = tree[path];
|
List<string> dirContent = Tree[path];
|
||||||
foreach (string content in dirContent)
|
foreach (string content in dirContent)
|
||||||
{
|
{
|
||||||
string[] properties = content.Split(" ");
|
string[] properties = content.Split(" ");
|
||||||
|
@ -62,8 +61,9 @@ public class Day7
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void LoadTree()
|
private static Dictionary<string, List<string>> GetTree()
|
||||||
{
|
{
|
||||||
|
Dictionary<string, List<string>> tree = new Dictionary<string, List<string>>();
|
||||||
string currentPath = "";
|
string currentPath = "";
|
||||||
|
|
||||||
IEnumerable<string> input = File.ReadLines("inputs/day7.txt");
|
IEnumerable<string> input = File.ReadLines("inputs/day7.txt");
|
||||||
|
@ -96,5 +96,7 @@ public class Day7
|
||||||
tree[currentPath].Add(line);
|
tree[currentPath].Add(line);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return tree;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue