Initial commit.

This commit is contained in:
Brandon Scott 2018-12-08 19:12:28 -06:00
commit 83508ce6a5
9 changed files with 1231 additions and 0 deletions

32
.gitignore vendored Normal file
View File

@ -0,0 +1,32 @@
*.swp
*.*~
project.lock.json
.DS_Store
*.pyc
# Visual Studio Code
.vscode
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/
msbuild.log
msbuild.err
msbuild.wrn
# Visual Studio 2015
.vs/

28
AoC2018.sln Normal file
View File

@ -0,0 +1,28 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26430.14
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AoC2018", "AoC2018\AoC2018.csproj", "{ECD52B05-8FB6-4B9C-80AD-1AB5C2807EAA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AoC2018Test", "AoC2018Test\AoC2018Test.csproj", "{DC118C5C-268B-4ABD-A5E6-048B8DE5AC27}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{ECD52B05-8FB6-4B9C-80AD-1AB5C2807EAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECD52B05-8FB6-4B9C-80AD-1AB5C2807EAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{ECD52B05-8FB6-4B9C-80AD-1AB5C2807EAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECD52B05-8FB6-4B9C-80AD-1AB5C2807EAA}.Release|Any CPU.Build.0 = Release|Any CPU
{DC118C5C-268B-4ABD-A5E6-048B8DE5AC27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DC118C5C-268B-4ABD-A5E6-048B8DE5AC27}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DC118C5C-268B-4ABD-A5E6-048B8DE5AC27}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DC118C5C-268B-4ABD-A5E6-048B8DE5AC27}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

14
AoC2018/AoC2018.csproj Normal file
View File

@ -0,0 +1,14 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<None Update="Input\Day1Input.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

1029
AoC2018/Input/Day1Input.txt Normal file

File diff suppressed because it is too large Load Diff

30
AoC2018/Program.cs Normal file
View File

@ -0,0 +1,30 @@
using System;
using System.Reflection;
using AoC2018.Solutions;
namespace AoC2018
{
class Program
{
static void Main(string[] args)
{
// Find all classes inheriting from Solution, create an instance, and execute Run method.
foreach (Type t in Assembly.GetEntryAssembly().ExportedTypes)
{
if (t.GetTypeInfo().IsSubclassOf(typeof(Solution)))
{
Solution solution = Activator.CreateInstance(t) as Solution;
Console.WriteLine("-----------------------------------------------------------");
Console.WriteLine($"Day {solution.Day} - {solution.Title}");
Console.WriteLine("-----------------------------------------------------------");
solution.Run();
Console.WriteLine();
}
}
Console.ReadLine();
}
}
}

View File

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AoC2018.Solutions
{
public class Day1Solution : Solution
{
public override string Title => "Chronal Calibration";
public override int Day => 1;
public override void Run()
{
string[] input = File.ReadAllLines(Path.Combine("Input", "Day1Input.txt"));
Dictionary<int, int> frequencyOccurrences = new Dictionary<int, int>();
int part1Result = 0, part2Result = 0;
bool part2Flag = false;
for (var i = 0; i < input.Length; i++)
{
part1Result += int.Parse(input[i]);
}
Console.WriteLine($"Part 1 Result: {part1Result}");
part1Result = 0;
while (!part2Flag)
{
for (var i = 0; i < input.Length; i++)
{
part1Result += int.Parse(input[i]);
if (!frequencyOccurrences.ContainsKey(part1Result))
frequencyOccurrences.Add(part1Result, 0);
frequencyOccurrences[part1Result]++;
if (frequencyOccurrences[part1Result] > 1)
{
part2Flag = true;
part2Result = part1Result;
break;
}
}
}
Console.WriteLine($"Part 2 Result: {part2Result}");
}
}
}

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace AoC2018.Solutions
{
public abstract class Solution
{
public abstract string Title { get; }
public abstract int Day { get; }
public abstract void Run();
}
}

View File

@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />
<PackageReference Include="MSTest.TestAdapter" Version="1.1.11" />
<PackageReference Include="MSTest.TestFramework" Version="1.1.11" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\AoC2018\AoC2018.csproj" />
</ItemGroup>
</Project>

14
AoC2018Test/UnitTest1.cs Normal file
View File

@ -0,0 +1,14 @@
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace AoC2018Test
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1()
{
}
}
}