Added a Downloader for AoC puzzle inputs
This commit is contained in:
parent
e68be83627
commit
0b0f4eabb4
|
|
@ -0,0 +1,10 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net9.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
// See https://aka.ms/new-console-template for more information
|
||||||
|
|
||||||
|
if (args.Length < 3)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Usage: AdventOfCode-Downloader.exe <year> <day> <session-cookie>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int year, day;
|
||||||
|
if (!(int.TryParse(args[0], out year) && year <= DateTime.Now.Year && year > 2015) || !(int.TryParse(args[1], out day) && day is >= 1 and <= 25))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Invalid year or date argument.\nYear must be between 2015 and current year and day must be between 1 and 25");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "AoC-PuzzleInputs",
|
||||||
|
year.ToString(), "Prod", $"day{day:00}.txt");
|
||||||
|
if(!Directory.Exists(Path.GetDirectoryName(path)))
|
||||||
|
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
|
||||||
|
|
||||||
|
var url = new Uri($"https://adventofcode.com/{year}/day/{day}/input");
|
||||||
|
using var client = new HttpClient();
|
||||||
|
client.DefaultRequestHeaders.Add("Cookie", $"session={args[2]}");
|
||||||
|
var responseMessage = await client.GetAsync(url);
|
||||||
|
if (responseMessage.IsSuccessStatusCode)
|
||||||
|
{
|
||||||
|
var inputString = await responseMessage.Content.ReadAsStringAsync();
|
||||||
|
await File.WriteAllTextAsync(path, inputString);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var inputString = await responseMessage.Content.ReadAsStringAsync();
|
||||||
|
Console.WriteLine($"Response status code does not indicate Success: {responseMessage.StatusCode} ({responseMessage.StatusCode.ToString()})\nError Message: " + inputString);
|
||||||
|
}
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
public record Coordinate(long X, long Y)
|
public record Coordinate(long X, long Y)
|
||||||
{
|
{
|
||||||
public double GetEuclidianDistance(Coordinate other) =>
|
public double GetEuclidianDistance(Coordinate other) =>
|
||||||
Math.Sqrt((X - other.X) * (X - other.X) + (Y - other.Y) * (Y - other.Y));
|
GetEuclidianDistance(this, other);
|
||||||
|
|
||||||
public static double GetEuclidianDistance(Coordinate a, Coordinate b) =>
|
public static double GetEuclidianDistance(Coordinate a, Coordinate b) =>
|
||||||
Math.Sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y));
|
Math.Sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y));
|
||||||
|
|
@ -15,7 +15,7 @@ public record Coordinate(long X, long Y)
|
||||||
public record Coordinate3d(long X, long Y, long Z)
|
public record Coordinate3d(long X, long Y, long Z)
|
||||||
{
|
{
|
||||||
public double GetEuclidianDistance(Coordinate3d other) =>
|
public double GetEuclidianDistance(Coordinate3d other) =>
|
||||||
Math.Sqrt((X - other.X) * (X - other.X) + (Y - other.Y) * (Y - other.Y) + (Z - other.Z) * (Z - other.Z));
|
GetEuclidianDistance(this, other);
|
||||||
|
|
||||||
public static double GetEuclidianDistance(Coordinate3d a, Coordinate3d b) =>
|
public static double GetEuclidianDistance(Coordinate3d a, Coordinate3d b) =>
|
||||||
Math.Sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y) + (a.Z - b.Z) * (a.Z - b.Z));
|
Math.Sqrt((a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y) + (a.Z - b.Z) * (a.Z - b.Z));
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.HelperClasses"
|
||||||
EndProject
|
EndProject
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.HelperClasses.Tests", "AdventOfCode.HelperClasses.Tests\AdventOfCode.HelperClasses.Tests.csproj", "{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}"
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.HelperClasses.Tests", "AdventOfCode.HelperClasses.Tests\AdventOfCode.HelperClasses.Tests.csproj", "{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Downloader", "AdventOfCode.Downloader\AdventOfCode.Downloader.csproj", "{43B006C3-5296-452B-BD86-225574C0E2A2}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
|
@ -50,6 +52,10 @@ Global
|
||||||
{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}.Release|Any CPU.Build.0 = Release|Any CPU
|
{3D09528A-09A7-4B0B-9D45-7D3AAB26449A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{43B006C3-5296-452B-BD86-225574C0E2A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{43B006C3-5296-452B-BD86-225574C0E2A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{43B006C3-5296-452B-BD86-225574C0E2A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{43B006C3-5296-452B-BD86-225574C0E2A2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{4F395AE3-DABB-4546-A4D0-5A62425FE168} = {05EBAA1C-B33B-4AFE-8635-A58D7CA509A7}
|
{4F395AE3-DABB-4546-A4D0-5A62425FE168} = {05EBAA1C-B33B-4AFE-8635-A58D7CA509A7}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public class Day09Test
|
||||||
public void Part02_Test2_equals_30()
|
public void Part02_Test2_equals_30()
|
||||||
{
|
{
|
||||||
// todo: color edges as right, left, up, down to only allow rectangles between right and left or up and down edges
|
// todo: color edges as right, left, up, down to only allow rectangles between right and left or up and down edges
|
||||||
var actual = _sut.SolvePart2(Test2InputPath);
|
//var actual = _sut.SolvePart2(Test2InputPath);
|
||||||
|
|
||||||
//Assert.Equal(30, actual);
|
//Assert.Equal(30, actual);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue