Initial Days
This commit is contained in:
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
bin/
|
||||
obj/
|
||||
/packages/
|
||||
riderModule.iml
|
||||
/_ReSharper.Caches/
|
||||
*.txt
|
||||
13
.idea/.idea.AdventOfCode2024/.idea/.gitignore
generated
vendored
Normal file
13
.idea/.idea.AdventOfCode2024/.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,13 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Rider ignored files
|
||||
/contentModel.xml
|
||||
/projectSettingsUpdater.xml
|
||||
/.idea.AdventOfCode2024.iml
|
||||
/modules.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
||||
# Datasource local storage ignored files
|
||||
/dataSources/
|
||||
/dataSources.local.xml
|
||||
4
.idea/.idea.AdventOfCode2024/.idea/encodings.xml
generated
Normal file
4
.idea/.idea.AdventOfCode2024/.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding" addBOMForNewFiles="with BOM under Windows, with no BOM otherwise" />
|
||||
</project>
|
||||
8
.idea/.idea.AdventOfCode2024/.idea/indexLayout.xml
generated
Normal file
8
.idea/.idea.AdventOfCode2024/.idea/indexLayout.xml
generated
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="UserContentModel">
|
||||
<attachedFolders />
|
||||
<explicitIncludes />
|
||||
<explicitExcludes />
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/.idea.AdventOfCode2024/.idea/vcs.xml
generated
Normal file
6
.idea/.idea.AdventOfCode2024/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
28
AdventOfCode2024.sln
Normal file
28
AdventOfCode2024.sln
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day1", "Day1\Day1.csproj", "{E1C9A86B-41EA-46A2-8FB3-76B39BE8A12A}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day2", "Day2\Day2.csproj", "{58A7974C-0349-48F2-A82D-2D5B6DECAED2}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day3", "Day3\Day3.csproj", "{AB523613-5CF2-4D73-8642-2E174E58F699}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{E1C9A86B-41EA-46A2-8FB3-76B39BE8A12A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E1C9A86B-41EA-46A2-8FB3-76B39BE8A12A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E1C9A86B-41EA-46A2-8FB3-76B39BE8A12A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E1C9A86B-41EA-46A2-8FB3-76B39BE8A12A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{58A7974C-0349-48F2-A82D-2D5B6DECAED2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{58A7974C-0349-48F2-A82D-2D5B6DECAED2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{58A7974C-0349-48F2-A82D-2D5B6DECAED2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{58A7974C-0349-48F2-A82D-2D5B6DECAED2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{AB523613-5CF2-4D73-8642-2E174E58F699}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{AB523613-5CF2-4D73-8642-2E174E58F699}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{AB523613-5CF2-4D73-8642-2E174E58F699}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{AB523613-5CF2-4D73-8642-2E174E58F699}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
4
AdventOfCode2024.sln.DotSettings.user
Normal file
4
AdventOfCode2024.sln.DotSettings.user
Normal file
@@ -0,0 +1,4 @@
|
||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASelect_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F46e849375f3e8fcb25f51d7367c4f2e3c07bef61f5f208617124579d3afc5a_003FSelect_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F8874fa6fbc50b05ba8332188d36141eb4bba81fb1f92189ba9d7a25f545_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
</wpf:ResourceDictionary>
|
||||
20
Day1/Day1.csproj
Normal file
20
Day1/Day1.csproj
Normal file
@@ -0,0 +1,20 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="TUnit" Version="0.4.51" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="input.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
21
Day1/Program.cs
Normal file
21
Day1/Program.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
string[] inputs = File.ReadAllLines("input.txt");
|
||||
|
||||
var a = new List<int>();
|
||||
var b = new List<int>();
|
||||
foreach (string input in inputs)
|
||||
{
|
||||
string[] tokens = input.Split(" ", StringSplitOptions.RemoveEmptyEntries);
|
||||
a.Add(int.Parse(tokens[0]));
|
||||
b.Add(int.Parse(tokens[1]));
|
||||
}
|
||||
|
||||
a = a.OrderBy(x => x).ToList();
|
||||
b = b.OrderBy(x => x).ToList();
|
||||
|
||||
int totalDistance = a.Select((t, i) => Math.Abs(t - b[i])).Sum();
|
||||
|
||||
Console.WriteLine(totalDistance);
|
||||
|
||||
var aBucket = a.GroupBy(x => x);
|
||||
var star2 = aBucket.Select(bucket => bucket.Key * b.Count(x => x == bucket.Key) * bucket.Count()).Sum();
|
||||
Console.WriteLine(star2);
|
||||
16
Day2/Day2.csproj
Normal file
16
Day2/Day2.csproj
Normal file
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="input.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
85
Day2/Program.cs
Normal file
85
Day2/Program.cs
Normal file
@@ -0,0 +1,85 @@
|
||||
string[] lines = """
|
||||
7 6 4 2 1
|
||||
1 2 7 8 9
|
||||
9 7 6 2 1
|
||||
1 3 2 4 5
|
||||
8 6 4 4 1
|
||||
1 3 6 7 9
|
||||
""".Split('\n', StringSplitOptions.RemoveEmptyEntries);
|
||||
// string[] lines = System.IO.File.ReadAllLines("input.txt");
|
||||
|
||||
int levelsSafe = 0;
|
||||
foreach (string input in lines)
|
||||
{
|
||||
LinkedList<int> connected = new LinkedList<int>();
|
||||
var levels = input.Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse);
|
||||
foreach (var paredLevel in levels)
|
||||
{
|
||||
connected.AddLast(paredLevel);
|
||||
}
|
||||
|
||||
|
||||
Console.Write($"Testing {input} = ");
|
||||
var safe = TestLevel(connected);
|
||||
Console.WriteLine($"{(safe ? "Safe" : "Unsafe")}");
|
||||
levelsSafe += safe ? 1 : 0;
|
||||
}
|
||||
|
||||
Console.WriteLine(levelsSafe);
|
||||
|
||||
bool TestLevel(LinkedList<int> linkedList)
|
||||
{
|
||||
int unsafeCount = 0;
|
||||
var node = linkedList.First;
|
||||
List<LevelDirection> directions = new List<LevelDirection>();
|
||||
while (node != null)
|
||||
{
|
||||
bool safeRange = node switch
|
||||
{
|
||||
{ Previous: not null, Next: not null }
|
||||
=> InsideRange2(node.Previous.Value, node.Value, node.Next.Value),
|
||||
{ Previous: not null, Next: null }
|
||||
=> InsideRange(node.Previous.Value, node.Value),
|
||||
{ Previous: null, Next: not null }
|
||||
=> InsideRange(node.Next.Value, node.Value),
|
||||
_ => throw new InvalidOperationException()
|
||||
};
|
||||
|
||||
if(safeRange is false)
|
||||
{
|
||||
unsafeCount++;
|
||||
}
|
||||
|
||||
if (node.Next is not null)
|
||||
{
|
||||
directions.Add(node.Value > node.Next.Value ? LevelDirection.Increasing : LevelDirection.Decreasing);
|
||||
}
|
||||
|
||||
node = node.Next;
|
||||
}
|
||||
|
||||
bool allIncreasing = directions.All(x => x == LevelDirection.Increasing);
|
||||
bool allDecreasing = directions.All(x => x == LevelDirection.Decreasing);
|
||||
|
||||
Console.Write($" {unsafeCount}|{allIncreasing}|{allDecreasing} ");
|
||||
return ((allIncreasing || allDecreasing) && unsafeCount == 0) || (allIncreasing == false && allDecreasing == false);
|
||||
|
||||
bool InsideRange(int current, int target)
|
||||
{
|
||||
var abs = Math.Abs(current - target);
|
||||
return abs is >= 1 and <= 3;
|
||||
}
|
||||
|
||||
bool InsideRange2(int prev, int current, int next)
|
||||
{
|
||||
var p = Math.Abs(prev - current);
|
||||
var n = Math.Abs(next - current);
|
||||
return p is >= 1 and <= 3 && n is >= 1 and <= 3;
|
||||
}
|
||||
}
|
||||
|
||||
enum LevelDirection
|
||||
{
|
||||
Increasing,
|
||||
Decreasing
|
||||
}
|
||||
16
Day3/Day3.csproj
Normal file
16
Day3/Day3.csproj
Normal file
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="input.txt">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
25
Day3/Program.cs
Normal file
25
Day3/Program.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System.Text.RegularExpressions;
|
||||
// string input = "xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))";
|
||||
string input = File.ReadAllText("input.txt").ReplaceLineEndings("");
|
||||
int total = 0;
|
||||
|
||||
Regex valid = new Regex("mul\\((?<x>[0-9]+),(?<y>[0-9]+)\\)");
|
||||
Regex dontandDo = new Regex("(don\\'t\\(\\).*?do\\(\\))");
|
||||
|
||||
input = dontandDo.Replace(input, "");
|
||||
|
||||
List<(int x, int y)> multiplies = new();
|
||||
|
||||
foreach (Match match in valid.Matches(input))
|
||||
{
|
||||
string x = match.Groups["x"].Value;
|
||||
string y = match.Groups["y"].Value;
|
||||
multiplies.Add((int.Parse(x), int.Parse(y)));
|
||||
}
|
||||
|
||||
foreach ((int x, int y) in multiplies)
|
||||
{
|
||||
total += x * y;
|
||||
}
|
||||
|
||||
Console.WriteLine(total);
|
||||
Reference in New Issue
Block a user