Advent of Code 2023 started :D

Signed-off-by: TiagoRG <tiago.rgarcia@ua.pt>
This commit is contained in:
Tiago Garcia 2023-12-02 01:39:47 +00:00
parent 8f4ed4d132
commit 496975da67
Signed by: TiagoRG
GPG Key ID: DFCD48E3F420DB42
5 changed files with 108 additions and 5 deletions

4
.gitignore vendored
View File

@ -4,8 +4,8 @@
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# Rider configuration directory
.idea/
# AdventOfCode input files
inputs/
# User-specific files
*.rsuser

6
Makefile Normal file
View File

@ -0,0 +1,6 @@
.PHONY: build
build:
@dotnet build
@echo -e "\033c\nAdvent of Code\n\nBy: @TiagoRG\nGitHub: https://github.com/TiagoRG\n\n============================================================="
@dotnet run

View File

@ -1,9 +1,9 @@
using AdventOfCode.Year2022;
using AdventOfCode.Year2023;
namespace AdventOfCode;
internal static class Program
{
public static void Main(string[] args)
=> Loader2022.Load();
=> Loader2023.Load();
}

81
Year2023/Day1.cs Normal file
View File

@ -0,0 +1,81 @@
namespace AdventOfCode.Year2023;
public class Day1
{
private static List<string> Input = File.ReadAllLines("inputs/Year2023/day1.txt").ToList();
private static int FirstNum;
private static int LastNum;
public static void Run()
{
Console.WriteLine($@"
Day1 Solution
Part1 Result: {Part1()}
Part2 Result: {Part2()}
=============================");
}
private static int Part1()
{
List<int> numbers = new List<int>();
Input.ForEach(line =>
{
List<char> chars = line.ToList();
numbers.Add(Convert.ToInt32($"{chars.First(c => Char.IsDigit(c))}{chars.Last(c => Char.IsDigit(c))}"));
});
return numbers.Sum();
}
private static int Part2()
{
string[] validStrNums = { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
List<int> numbers = new List<int>();
Input.ForEach(line =>
{
int min = line.Length;
int max = -1;
foreach (var str in validStrNums)
{
if (!line.Contains(str)) continue;
int firstIndex = line.IndexOf(str);
if (firstIndex < min)
{
min = firstIndex;
FirstNum = ParseInt(str);
}
int lastIndex = line.LastIndexOf(str);
if (lastIndex > max)
{
max = lastIndex;
LastNum = ParseInt(str);
}
}
numbers.Add(Convert.ToInt32($"{FirstNum}{LastNum}"));
});
return numbers.Sum();
}
private static int ParseInt(string str)
{
return (str) switch
{
"one" => 1,
"two" => 2,
"three" => 3,
"four" => 4,
"five" => 5,
"six" => 6,
"seven" => 7,
"eight" => 8,
"nine" => 9,
_ => Convert.ToInt32(str),
};
}
}

16
Year2023/Loader2023.cs Normal file
View File

@ -0,0 +1,16 @@
namespace AdventOfCode.Year2023;
public static class Loader2023
{
public static void Load()
{
/* Year 2023
*
* Solutions in C# for the 2023 Advent of Code
* Slower solutions are commented
*/
Day1.Run();
}
}