[2022] Refactoring

This commit is contained in:
Tiago Garcia 2023-06-08 00:12:01 +01:00
parent 69b5115122
commit 13b353a2da
No known key found for this signature in database
GPG Key ID: F423E37A2415E160
6 changed files with 32 additions and 30 deletions

View File

@ -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);
} }
} }

View File

@ -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;
} }
} }

View File

@ -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
{ {

View File

@ -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("-");

View File

@ -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;
} }

View File

@ -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;
} }
} }