Initial Commit
This commit is contained in:
9
2024/AdventCommon/AdventCommon.csproj
Normal file
9
2024/AdventCommon/AdventCommon.csproj
Normal file
@@ -0,0 +1,9 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
31
2024/AdventCommon/ParsedInput.cs
Normal file
31
2024/AdventCommon/ParsedInput.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AdventCommon
|
||||
{
|
||||
public abstract class ParsedInput
|
||||
{
|
||||
public virtual object? GetContext() { return null; }
|
||||
|
||||
public abstract bool ParseLine(string line, object? context = null);
|
||||
|
||||
public virtual long GetPart01() { return 0; }
|
||||
public virtual long GetPart02() { return 0; }
|
||||
|
||||
public ParsedInput(string fileName)
|
||||
{
|
||||
var input = new AdventCommon.PuzzleInput(fileName);
|
||||
|
||||
foreach (var line in input.Lines)
|
||||
{
|
||||
if (!ParseLine(line, GetContext()))
|
||||
{
|
||||
throw new Exception("Line not formatted as expected");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
35
2024/AdventCommon/PuzzleInput.cs
Normal file
35
2024/AdventCommon/PuzzleInput.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
namespace AdventCommon
|
||||
{
|
||||
public class PuzzleInput
|
||||
{
|
||||
public PuzzleInput(string fileName, bool ignoreEmptyLines = true)
|
||||
{
|
||||
using (StreamReader reader = System.IO.File.OpenText(fileName))
|
||||
{
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
string? line = reader.ReadLine();
|
||||
|
||||
if (line == null) { throw new InvalidDataException(); }
|
||||
if (ignoreEmptyLines && String.IsNullOrWhiteSpace(line)) continue;
|
||||
|
||||
Lines.Add(line);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<string> Lines { get; private set; } = new List<string>();
|
||||
|
||||
public void Print()
|
||||
{
|
||||
for (int j = 0; j < Lines.Count; j++)
|
||||
{
|
||||
for (int i = 0; i < Lines[j].Length; i++)
|
||||
{
|
||||
Console.Write(Lines[j][i]);
|
||||
}
|
||||
Console.WriteLine();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
67
2024/AdventOfCode.sln
Normal file
67
2024/AdventOfCode.sln
Normal file
@@ -0,0 +1,67 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.6.33829.357
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Day01CSharp", "Day01CSharp\Day01CSharp.csproj", "{40E10A11-46AE-459F-8D01-BD2AE2261B4A}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdventCommon", "AdventCommon\AdventCommon.csproj", "{15399021-F5A7-4A4E-81EB-0DFB8A328D83}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day02CSharp", "Day02CSharp\Day02CSharp.csproj", "{FD978B93-02A8-492C-BB9F-91D96FD98A9E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day03CSharp", "Day03CSharp\Day03CSharp.csproj", "{94C0C575-4BA0-44C3-813E-FFB63D2A5A63}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day04CSharp", "Day04CSharp\Day04CSharp.csproj", "{0949A58E-755F-4594-ACCA-9632BFE7A0A8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day05CSharp", "Day05CSharp\Day05CSharp.csproj", "{C3681618-04D2-460C-A529-D6544A67F079}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day06CSharp", "Day06CSharp\Day06CSharp.csproj", "{5660DEAA-1FCF-4B00-A4BD-0B257F25E377}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Day07CSharp", "Day07CSharp\Day07CSharp.csproj", "{BB246D3B-246D-4CFF-9E31-1CABF3C342F4}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{40E10A11-46AE-459F-8D01-BD2AE2261B4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{40E10A11-46AE-459F-8D01-BD2AE2261B4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{40E10A11-46AE-459F-8D01-BD2AE2261B4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{40E10A11-46AE-459F-8D01-BD2AE2261B4A}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{15399021-F5A7-4A4E-81EB-0DFB8A328D83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{15399021-F5A7-4A4E-81EB-0DFB8A328D83}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{15399021-F5A7-4A4E-81EB-0DFB8A328D83}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{15399021-F5A7-4A4E-81EB-0DFB8A328D83}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FD978B93-02A8-492C-BB9F-91D96FD98A9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FD978B93-02A8-492C-BB9F-91D96FD98A9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FD978B93-02A8-492C-BB9F-91D96FD98A9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FD978B93-02A8-492C-BB9F-91D96FD98A9E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{94C0C575-4BA0-44C3-813E-FFB63D2A5A63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{94C0C575-4BA0-44C3-813E-FFB63D2A5A63}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{94C0C575-4BA0-44C3-813E-FFB63D2A5A63}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{94C0C575-4BA0-44C3-813E-FFB63D2A5A63}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{0949A58E-755F-4594-ACCA-9632BFE7A0A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0949A58E-755F-4594-ACCA-9632BFE7A0A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0949A58E-755F-4594-ACCA-9632BFE7A0A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{0949A58E-755F-4594-ACCA-9632BFE7A0A8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C3681618-04D2-460C-A529-D6544A67F079}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C3681618-04D2-460C-A529-D6544A67F079}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C3681618-04D2-460C-A529-D6544A67F079}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C3681618-04D2-460C-A529-D6544A67F079}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{5660DEAA-1FCF-4B00-A4BD-0B257F25E377}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{5660DEAA-1FCF-4B00-A4BD-0B257F25E377}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{5660DEAA-1FCF-4B00-A4BD-0B257F25E377}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{5660DEAA-1FCF-4B00-A4BD-0B257F25E377}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BB246D3B-246D-4CFF-9E31-1CABF3C342F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BB246D3B-246D-4CFF-9E31-1CABF3C342F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BB246D3B-246D-4CFF-9E31-1CABF3C342F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BB246D3B-246D-4CFF-9E31-1CABF3C342F4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {BABBCA3F-69A8-428C-BBD9-2621712E38E4}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
14
2024/Day01CSharp/Day01CSharp.csproj
Normal file
14
2024/Day01CSharp/Day01CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
97
2024/Day01CSharp/Program.cs
Normal file
97
2024/Day01CSharp/Program.cs
Normal file
@@ -0,0 +1,97 @@
|
||||
// See https://aka.ms/new-console-template for more information
|
||||
using AdventCommon;
|
||||
using System.Security.AccessControl;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
|
||||
/** P1 **/
|
||||
var p1exampleSln = Part01(new Day01Parsed("example-input.txt"));
|
||||
var p1puzzleSln = Part01(new Day01Parsed("puzzle-input.txt"));
|
||||
|
||||
Console.WriteLine("Part01 Total Distance: " + p1exampleSln);
|
||||
Console.WriteLine("Part01 Total Distance: " + p1puzzleSln);
|
||||
|
||||
/** P2 **/
|
||||
var p2exampleSln = Part02(new Day01Parsed("example-input.txt"));
|
||||
var p2puzzleSln = Part02(new Day01Parsed("puzzle-input.txt"));
|
||||
|
||||
Console.WriteLine("Part02 Example Sum: " + p2exampleSln);
|
||||
Console.WriteLine("Part02 Puzzle Sum: " + p2puzzleSln);
|
||||
|
||||
int GetDistance(int l, int r)
|
||||
{
|
||||
return Math.Abs(l - r);
|
||||
}
|
||||
|
||||
int Part01(Day01Parsed input)
|
||||
{
|
||||
int distance = 0;
|
||||
input.left.Sort();
|
||||
input.right.Sort();
|
||||
|
||||
for (int i = 0; i < input.left.Count; i++)
|
||||
{
|
||||
distance += GetDistance(input.left[i], input.right[i]);
|
||||
}
|
||||
|
||||
return distance;
|
||||
}
|
||||
|
||||
int Part02(Day01Parsed input)
|
||||
{
|
||||
int total = 0;
|
||||
|
||||
for (int i = 0; i < input.left.Count; i++)
|
||||
{
|
||||
var l = input.left[i];
|
||||
total += l * input.GetSimilarity(l);
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
|
||||
class Day01Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
public List<int> left = new List<int>();
|
||||
public List<int> right = new List<int>();
|
||||
|
||||
public int GetSimilarity(int value)
|
||||
{
|
||||
int instances = 0;
|
||||
|
||||
foreach (var item in right)
|
||||
{
|
||||
if (item == value)
|
||||
{
|
||||
instances++;
|
||||
}
|
||||
}
|
||||
|
||||
return instances;
|
||||
}
|
||||
|
||||
public Day01Parsed(string fileName) : base(fileName)
|
||||
{
|
||||
if (left.Count != right.Count)
|
||||
{
|
||||
throw new Exception("Improperly formatted input file");
|
||||
}
|
||||
}
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
var split = line.Split(' ', StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
if (split.Length != 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var l = Int32.Parse(split[0]);
|
||||
var r = Int32.Parse(split[1]);
|
||||
|
||||
left.Add(l);
|
||||
right.Add(r);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
8
2024/Day01CSharp/Properties/launchSettings.json
Normal file
8
2024/Day01CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day01CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day01CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
6
2024/Day01CSharp/example-input.txt
Normal file
6
2024/Day01CSharp/example-input.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
3 4
|
||||
4 3
|
||||
2 5
|
||||
1 3
|
||||
3 9
|
||||
3 3
|
||||
1000
2024/Day01CSharp/puzzle-input.txt
Normal file
1000
2024/Day01CSharp/puzzle-input.txt
Normal file
File diff suppressed because it is too large
Load Diff
14
2024/Day02CSharp/Day02CSharp.csproj
Normal file
14
2024/Day02CSharp/Day02CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
141
2024/Day02CSharp/Program.cs
Normal file
141
2024/Day02CSharp/Program.cs
Normal file
@@ -0,0 +1,141 @@
|
||||
Day02Parsed exParsed = new Day02Parsed("example-input.txt");
|
||||
|
||||
Console.WriteLine("Example Part01: {0}", exParsed.GetSafeReportCount01());
|
||||
Console.WriteLine("Example Part02: {0}", exParsed.GetSafeReportCount02());
|
||||
|
||||
Day02Parsed pzParsed = new Day02Parsed("puzzle-input.txt");
|
||||
|
||||
Console.WriteLine("Puzzle Part01: {0}", pzParsed.GetSafeReportCount01());
|
||||
Console.WriteLine("Puzzle Part02: {0}", pzParsed.GetSafeReportCount02());
|
||||
|
||||
class Day02Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
List<List<int>> Reports = new List<List<int>>();
|
||||
|
||||
public Day02Parsed(string fileName) : base(fileName)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public int GetSafeReportCount01()
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
for (int i = 0; i < Reports.Count; i++)
|
||||
{
|
||||
if (IsSafe(Reports[i]))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public int GetSafeReportCount02()
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
for (int i = 0; i < Reports.Count; i++)
|
||||
{
|
||||
// First see if its safe outright
|
||||
if (IsSafe(Reports[i]))
|
||||
{
|
||||
count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Remove one start to end and check again
|
||||
for (int j = 0; j < Reports[i].Count; j++)
|
||||
{
|
||||
List<int> newReport = new List<int>(Reports[i]);
|
||||
newReport.RemoveAt(j);
|
||||
if (IsSafe(newReport))
|
||||
{
|
||||
count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public bool IsSafe(List<int> report)
|
||||
{
|
||||
bool isAscending = false;
|
||||
|
||||
if ( report[0] < report[1] )
|
||||
{
|
||||
isAscending = true;
|
||||
}
|
||||
|
||||
{
|
||||
int rightDiff = report[1] - report[0];
|
||||
|
||||
if (Math.Abs(rightDiff) < 1 || Math.Abs(rightDiff) > 3)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 1; i < report.Count - 1; i++)
|
||||
{
|
||||
int leftDiff = report[i] - report[i - 1];
|
||||
int rightDiff = report[i + 1] - report[i];
|
||||
|
||||
// if ascending and either difference is negative, not safe
|
||||
if (isAscending && (leftDiff < 0 || rightDiff < 0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
// if descending and either difference is positive, not safe
|
||||
else if (!isAscending && (rightDiff > 0 || leftDiff > 0))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Math.Abs(leftDiff) < 1 || Math.Abs(leftDiff) > 3)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Math.Abs(rightDiff) < 1 || Math.Abs(rightDiff) > 3)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
int leftDiff = report[report.Count - 1] - report[report.Count - 2];
|
||||
if (isAscending && leftDiff < 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Math.Abs(leftDiff) < 1 || Math.Abs(leftDiff) > 3)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
List<int> levels = new List<int>();
|
||||
var split = line.Split(' ', StringSplitOptions.RemoveEmptyEntries);
|
||||
|
||||
foreach (var level in split)
|
||||
{
|
||||
levels.Add(Int32.Parse(level));
|
||||
}
|
||||
|
||||
Reports.Add(levels);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
8
2024/Day02CSharp/Properties/launchSettings.json
Normal file
8
2024/Day02CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day02CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day02CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
6
2024/Day02CSharp/example-input.txt
Normal file
6
2024/Day02CSharp/example-input.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
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
|
||||
1000
2024/Day02CSharp/puzzle-input.txt
Normal file
1000
2024/Day02CSharp/puzzle-input.txt
Normal file
File diff suppressed because it is too large
Load Diff
14
2024/Day03CSharp/Day03CSharp.csproj
Normal file
14
2024/Day03CSharp/Day03CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
171
2024/Day03CSharp/Program.cs
Normal file
171
2024/Day03CSharp/Program.cs
Normal file
@@ -0,0 +1,171 @@
|
||||
using System.Numerics;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
var exParsed = new Day03Parsed("example-input.txt");
|
||||
var ex2Parsed = new Day03Parsed("example-input2.txt");
|
||||
|
||||
Console.WriteLine("Example Part01: {0}", exParsed.GetPart01());
|
||||
Console.WriteLine("Example Part02: {0}", ex2Parsed.GetPart02());
|
||||
|
||||
var pzParsed = new Day03Parsed("puzzle-input.txt");
|
||||
|
||||
Console.WriteLine("Puzzle Part01: {0}", pzParsed.GetPart01());
|
||||
Console.WriteLine("Puzzle Part02: {0}", pzParsed.GetPart02());
|
||||
|
||||
|
||||
public class Mul
|
||||
{
|
||||
private static readonly int INVALID_VALUE = 9999;
|
||||
|
||||
private int leftOperand = INVALID_VALUE;
|
||||
private int rightOperand = INVALID_VALUE;
|
||||
|
||||
public int LeftOperand { get { return leftOperand; } }
|
||||
public int RightOperand { get { return rightOperand; } }
|
||||
|
||||
public Mul(string line)
|
||||
{
|
||||
try
|
||||
{
|
||||
var split = line.Split(',');
|
||||
|
||||
// left side
|
||||
var leftOperand = split[0].Substring("mul(".Length);
|
||||
System.Diagnostics.Debug.Assert(leftOperand.Length <= 3);
|
||||
|
||||
this.leftOperand = Int32.Parse(leftOperand);
|
||||
|
||||
// right side
|
||||
var rightOperand = split[1].Split(')')[0];
|
||||
System.Diagnostics.Debug.Assert(rightOperand.Length <= 3);
|
||||
|
||||
this.rightOperand = Int32.Parse(rightOperand);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsValid()
|
||||
{
|
||||
return leftOperand != INVALID_VALUE && rightOperand != INVALID_VALUE;
|
||||
}
|
||||
|
||||
public int GetResult()
|
||||
{
|
||||
if (!IsValid()) throw new Exception("OBJECT INVALID YO");
|
||||
|
||||
return leftOperand * rightOperand;
|
||||
}
|
||||
}
|
||||
|
||||
class Day03Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
public Day03Parsed(string fileName) : base(fileName)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private int part01 = 0;
|
||||
private int part02 = 0;
|
||||
|
||||
private void UpdatePart01(string line)
|
||||
{
|
||||
string pattern = @"mul\([0-9]{1,3},[0-9]{1,3}\)";
|
||||
|
||||
var m = Regex.Match(line, pattern);
|
||||
|
||||
while (m.Success)
|
||||
{
|
||||
var mul = new Mul(m.Value);
|
||||
part01 += mul.GetResult();
|
||||
|
||||
//Console.WriteLine("'{0}' found at position {1}", m.Value, m.Index);
|
||||
m = m.NextMatch();
|
||||
}
|
||||
}
|
||||
|
||||
private bool UpdatePart02(string line, bool lastMul)
|
||||
{
|
||||
bool mulEnabled = lastMul;
|
||||
|
||||
SortedDictionary<int, string> ops = new SortedDictionary<int, string>();
|
||||
|
||||
string[] patterns = [
|
||||
@"mul\([0-9]{1,3},[0-9]{1,3}\)",
|
||||
@"do\(\)",
|
||||
@"don't\(\)"
|
||||
];
|
||||
|
||||
foreach (var pattern in patterns)
|
||||
{
|
||||
for (var r = Regex.Match(line, pattern); r.Success; r = r.NextMatch())
|
||||
{
|
||||
ops.Add(r.Index, r.Value);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var op in ops)
|
||||
{
|
||||
//Console.WriteLine("{ " + op.Value + " }");
|
||||
|
||||
string canary = "mul(549,60)";
|
||||
if (op.Value.Contains(canary))
|
||||
{
|
||||
//Console.WriteLine("poop");
|
||||
}
|
||||
|
||||
if (mulEnabled)
|
||||
{
|
||||
var m = new Mul(op.Value);
|
||||
|
||||
if (m.IsValid())
|
||||
{
|
||||
part02 += m.GetResult();
|
||||
|
||||
// Console.WriteLine("Added: {0}", m.GetResult());
|
||||
//Console.WriteLine("New: {0}", part02);
|
||||
}
|
||||
|
||||
// m not valid, is it a don't?
|
||||
if (op.Value.Contains("don't"))
|
||||
{
|
||||
//Console.WriteLine("Setting do() to false");
|
||||
mulEnabled = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (op.Value.Contains("do()"))
|
||||
{
|
||||
//Console.WriteLine("Setting do() to true");
|
||||
mulEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return mulEnabled;
|
||||
}
|
||||
|
||||
private bool lastMulEnabled = true;
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
UpdatePart01(line);
|
||||
|
||||
lastMulEnabled = UpdatePart02(line, lastMulEnabled);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public override int GetPart01()
|
||||
{
|
||||
return part01;
|
||||
}
|
||||
|
||||
public override int GetPart02()
|
||||
{
|
||||
return part02;
|
||||
}
|
||||
}
|
||||
8
2024/Day03CSharp/Properties/launchSettings.json
Normal file
8
2024/Day03CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day03CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day03CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
1
2024/Day03CSharp/example-input.txt
Normal file
1
2024/Day03CSharp/example-input.txt
Normal file
@@ -0,0 +1 @@
|
||||
xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))
|
||||
1
2024/Day03CSharp/example-input2.txt
Normal file
1
2024/Day03CSharp/example-input2.txt
Normal file
@@ -0,0 +1 @@
|
||||
xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))
|
||||
6
2024/Day03CSharp/puzzle-input.txt
Normal file
6
2024/Day03CSharp/puzzle-input.txt
Normal file
@@ -0,0 +1,6 @@
|
||||
<,:[*where()%mul(53,612)!^}&mul(3,518)??$~select()>??]mul(245,515),why()who()*@from()(where(242,190)mul(817,764)^select(),+who(851,301)where())from(){;mul(431,780)mul(110,982)what()what()]mul(441,829)??where()mul(269,112)>when()?who()<mul(131,147))}]what()^~)mul(186,137)when()'when(443,998)when()+-^what(770,821)?mul(742,949)>$**#!@mul(343,569),;what()from(){(;}mul(486,404)why()]#~when()%@do()+:'why(256,886)why()who(868,710)mul(103,406)?>mul(563,652)from()$-@when())!@:from()mul(744,992)[<^~}mul(822,789)],+select(45,52)!,why()<mul(609,728))who(879,937)&who(770,986):<-mul(723,41)<;select(366,476)why()(who()(%:'do()][@select()how(509,958)%^-<mul(402,767)]how()} #how();don't()how()mul(761,839)!%[#who()who()how()who(),-mul(769,131)>*mul(433,911) }why()<&&how()who()?]mul(877,899);':what())#{]@mul(401,705)@&<how()#mul(970,37)&# #+why()!how()mul(18,953)+what()mul(185,46)'/select()!{mul(474,848):>mul(627,54)? )~+mul(668,930)%)}do()what()#from()$/when()[:when() mul(545,444)how()]<how()^:?+-how()mul(470,601)how()~%from():how()mul(344,452)why()what(266,804)why()how(){who()do()mul(368,423)<#mul(662,80))+mul(7,851)mul(412,165)^,from()'*mul(653,405){}/,from()how()^#mul(592,415);}}>mul(409,150)>?%?@mul(295,205))'mul(321,875)mul(915,728){?when()what(644,532)*?;<<mul(61,812)#select()when()mul(101,342)<<!~why()mul(767,779)~#(^mul(176,413)}-]@>):(:mul(566,595)%'mul(499,468)/'where()}mul(721,340)]when()mul(162,291)mul(73,373)<]where()mul(100,385)][what()]mul(832,226)mul(675,546)who()how()#<^+how()'mul(119,723)what(){+,-mul(959,612)select()mul(758,905)!mul(247,521)&}$?don't()!'$ what()where(353,94)select(){mul(997,311)@from()/mul(987,583)&select(207,730)mul(299,379)select()do()what()select()when()select()]*?(?mul(841,179)!when()what()where()@:why()'>]mul(265,944)mul(968,747)what()}),(mul(541,36)~how()~select()where()when()-+when()mul(448,567)select()where()why(342,599) -when()<}mul(566,357)/$*>> mul(414,962)mul(904,116)what():/'@--}where()mul(390,663)who()~~],when()&where()[%mul(304,146))'who()>+when(){mul(526,627)!;(]@}where()where()mul(253,767)-^+]how()>,,!do():~[^when()]mul(263,450)mul(757,944)><'<mul(919,322)'mul(622,437)@mul(656who()[why()mul(998,113)<who()from()mul(103,114),from()where()/what()((select()'mul(961,712)$<when()select()[{}from(){when()mul(353,694)how()},what()mul(893,557)why()mul(137,971)<why()how()~&<,from()mul(925,982)]$+why()$why()]mul(721,960)[< ,&{when(293,949)select()@mul(788,237)%?+ > (],mul(934,282)@{who()+%when()mul(136,652)mul(366,573)!$//where()mul(501,845)}+~select()+]mul(532,462),~},from()mul(322,350)@~mul(64,374)&what()>[){mul(962,241),?/}-'+mul(39,522)%!$do()^}mul(447,40)mul(971,488)()mul(983,842)where()/mul(956,799);*+)^mul(233,820)mul(957,287)&>[when()<who()]%mul(48,993)# /:&when()]mul(164,671))?+~#;@mul(276,696)how()<+mul(557,793)?/select()mul(644,816)select(375,883)mul(10,640)?(~select()?!%,,'mul-;mul(976,164)*who()[mul(99,562)@why()!<:@mul(678,254)](/from()!]+%+mul(301,985)who()}[who()who()$mul(990,670)-<mul(187,242) mul(643,672)&?;mul(935,319);why()<[/](+((do()+]mul(137,423)*~ #!select(){mul(507,799)~:mul(351,147)
|
||||
;mul(355; }~-&'mul(929,70)what()where()>why()where(855,333)<@)mul(304,558){~from(),how(){mul(555,718)]]-where() mul(881,781);^&);mul(231,766)$)mul(7,979)^why()'/,mul(352,951)mul(575,449)'mul(803/#(<^when()>mul(500,697)]~^<>[select();^when()mul(822,422)@[where()what() how()&;[(mul(756,744)how() @mul(741,854)what()(do()&how()){what()'^}-mul(664,580)<+ &+mul(788,961) -&}#!,how()who()mul(378,886)[!{,mul(53,236)what())select():~>why()~@who()mul(275,625)*from():what(80,711)why()@don't()mul(426,724)?&from()-)/^-mul(47,60)&+select()?%why()&where()mul(706,388)from()/how()mul(2,761)mul(377,995),from()*?{how()mul(198,840)why()&';[/+^~mul(72,849)mul(720,901 <(mul(998,859)mul(409,24)>?#-)why()mul(208,800)~how()+^?why()^mul(765,394) )mul(269,340)>mul:$~&select();mul(466,453)why()mul(59what()-?'where()?;who()mul(474,555)<[]]when()%-how(225,412)mul(626,574)/,{{what(832,679)where()how()mul(250,300)<#$;+mul(840,193)who(562,102),mul(390,251)(mul(6,397%~what();%who()from()#![mul(95,829)where(811,818)@mul(847,742)'~+&~@/mul(329,961)>~mul(625,917)#+what()<!+why()(how();mul(608,813)}(}how()!when()&+(mul(103,676)>%?>mul(314{mul(392,487)mul(770,684)]'mul(607,73)]where()/#what(378,688) :}'why(778,249)mul(732,423)from()$;@why()>mul(255,618),#+from(849,914);>mul(99,409):]mul(948,905)select()<@mul(342,35)$!@how()/)where():mul(49,617)mul(396,154)>mul(671,367)mul(68,795)~select()<:select()~/mul(900,855){ why(622,665)#when()-<@mul(629~{;~+how(){'mul(907,182)}<;+{' mul(223,519)}+>mul(776,473):where()what()^when()don't()/^ -/(/mul(894,814)mul(698,226)}<mul(188,843)when()mul(933,889)do()}~&%+,:>~/mul(570,960),?@?what()select()}/mul(918,543)'[from()&why()where())~from()[mul(321,507)mul(616,831)why()when()/]{mul#>[!!; mul(480,401)'%%~](from()mul(643,85)who()where()mul(982,510)when():,(mul(799,43[from())$what()%where()@;)mul(420,538)how()mul(358,891)who()what()what()select()(?how()*)mul(612,717)<+(where();who()from(170,645)how()why()where(310,422)mul(789,673)<what(139,371)mul(653,849)(mul(694,267){$(^ !mul(235,885)*>mul(779,49)what()who()[from()$*'&mul(211,472)why()< mul(77,895)?&:*-;^mul(861,148)/what()[+#}when(360,356)mul(905,744):~<-how()][-where()^mul(272,757select()'mul(994,335) what(362,794)$;$mul(242,327)who()when()who();don't()$mul(808,996);don't()/}from()(what()who()mul(398,570)from()~select()[mul(420,441)+mul(452,212)who();~what()#how()what()mul(557when(699,863)mul(184,806)&')from(),:'';don't()[select()mul(139,882~^(how()&mul(931,970)</what()^mul(123,183)select()/^where()when()+#mul(78,494)mul(77,46how(526,601),what(173,89)don't()mul(17,636)why()what()(?do()?what()+when(){;how()why(881,708):mul(424,30)]+mul(137,11)how()where()mul(436,135)from();* %how()-+<mul(682,942+from() from()+where()<%~mul(496,756)^when()-/;</mul(221,864),@,when()mul(451,731)<:why()(mul%<why()from()?~mul(578,746) ]]}!}#mul(392,317)why()](from(685,426)mul(742@:!<mul(348,805))$^mul(157,336)who()$$[{$,)#mul(104,791)what()mul(366,291)?@select()'{from()*mul(528,408)when();'$ ^[:mul(599,79):*;;,from()how(849,837) mul(450,261):<}why() ]@#mul(391,298)<;@why()@,'+,~mul(292,347)mul(306,66) (mul(918,583) @{~from(907,861)'~ ]what()mul(688,890)]what()~ who()when()&?< mul(664,167)>>]] &do()&*)(,:;,mul(924,272)who()$$%select()?/[mul(712,215)~,<from()*?mul(387,653)&mul(915,277)!where(){mul(896,316)what()$mul(60,641)why()mul(190,493)?*{why()+?-mul(516,394)
|
||||
how()from()*^+from()from()where()}where()mul(109,757){;#mul(809,131)$from()where(43,487)mul(738,564):$*![mul(412#},,^mul(554,33)%why()-mul(617,108)why()mul(528,212)why()from()'!*mul(290,237)-mul(483,362)mul(326,290),who()#(%how()what(){[when()mul(135,76)mul(876,399)!}[^&~from()mul(827,264)%when()~&mul(347,10)mul(315,717)~'where()mul(650,381);,/mul(223,697)}%-*[$mul(296,607)@how()mul(766,686)-]:/when()what()mul(247,762)mul(840,623)$-]mul(879,79)]don't():where(838,375){:(%&when()mul(623,855)@++mul(401,488)!why()mul(713,679)! ?*;/^<%?mul(171,963){$$$~$[@)>mul(114,862) :select()#who()$&how():mul(617,150)]why()~(&@?mul(28,990)-)mul(221,546from()^:<&/[select()mul(5,78)mul(476,316)(<'%[mul(227,163)from()where()who()why()[ mul(229,680)>/+?how()<mul(969,755)!^why()how(965,419)mul(323,258)?>;select()&$[mul(110,33)~{)#who()]^+/mul(479%%#{#from()select()when()what()what()<mul(474,447)'where()mul(643,404)&*)@?('mul(768,724)@)?']>;)//mul(229,348)how()*/mul(643,351)mul(615,362(/->(how()-when()mul(499,697)*don't()mul(992,821){from(413,389));when()who()#mul(921,742)mul(253,580)]how()how(102,372) mul-from()where()mul(104,127)what(),{what() what()[*mul(657,659)'-select()mul(612,851)how()<~-when()$select(718,662)from()(!mulselect()-/^,<&^~mul(497,827)who()-how()-$select()+*mul(943,533)@;mul(403,629)why(826,610)} +:>mul(943,942)why():-)>^why()what()how()mul(302,757'mul(22,286):/-{mul(391,954)mul(528,734)select()-where()why() mul(909,426)!/($+mul(106#&-from()^mul(592,459)'(select()]!when()@{}*mul/&'>mul(894,472)who(),-#mul(924,264)%where()-{from()!mul(956,587)-$do()&why(173,205))$&~where()#&}mul(615,17)how(){>%from()from()@where()mul(683,358),how()when()<!@mul(32,94)!;why()mul(777from()+, :]}why()do()<'mul'>-}](;/mul(688,622)/select()}(what()mul(872,568)/why(){mul(600,562) #mul(733,946)( ?]/when()$(mul(606,986)@!when()mul(597,648)what()-who()from()?,>]<when()mul(18,911)/ how()@,]- {mul(267,646)}do()why()@!;why()mul(322,612),,;?(?^who()mul(34@*+[+^+<how()@#mul(946,367){^,mul(325,609)@#mul(496,574)?~)'*^~when()$'mul(493,377)+#~+>!'mul)>-&@~who()/%!mul(486,264)from())mul(556,968)(who()[:$:,*mul(564,519)# %)&/from(390,158)mul(583,746)how()why()('#/mul(519,835)&(/?^#,mul(447,762){?,]]]/@mul(257,451)&<$why()(mul(670,126){#:mul(555,660)}+%$:(select()mul(723,37)why()who()}where()}how()%)>don't()#where()how()]%what() select()mul(726,542)how()mul:how()/~}</>) mul(753,350)mul(905,645)+ how():(when(879,434)mul(632*?'$/,<*what()mul(442,98)$&(&;mul(424,515)!mul(443,813)**),^%how()what(),mul(252,469)select()[)mul(370,416)%&::&+%mul(885,78)how()^mul(885> {&,why()$mul(52,196)+,{%select(),!##;mul(714,770)mul(607,394)when()how() -@]mul+^@mul(90,350)~@+where()mul(934,150)when(788,941)^mul(557,327)mul(86,867) :~$-how()select()who()mul(166,855) what() %]mul(928,22)%when()-how()$!what():mul(628,252)~{>,who()~where(967,401)#mul(943,366)'[*>@mul(781,986)>:when()?&don't()~ :where()who()<what()who()mul(645,747)$,({$[mul(75,880),$?:when()what()[!when()mul(617,589)how()from()why()what()from()mul(63,146)'from()who()mul(530,247)!mul(747,431),(mul(920,122)mul(206,825)+when(414,126)>select():what()mul(839,261) *&*where())/]when()mul(24,536)how()how()'who()why())<,~mul(254,257)^@:where()mul(945,657)!&]select()from()}'[#)mul(148,151)-#!/usr/bin/perlwhere()>%why()}!/]{;mul(549,60)
|
||||
how(477,669) mul(853,888)<[/who()>}+mul(361,751)mul(837,651)-mul(8,515)(}>!!# do()&@!:^][@mul(143,286)&?^&*how()&!'mul(88,781):}who(){!*!&mul(348,435)mulfrom()?>]-}+ }@mul(33,697)do()what()why()}(#]:mul(3,176):$mul(613,679),'how(882,581)who()*mul(519,798)from()mul(865,503),+~mul(767,837)/)?^why()/mul(520,288)where(){)who()what(); )mul(274,562)$:<^*what(423,612) from()>)mul(375,282)#select()from(646,967)?(*!'$mul(991,635)mul(598,876)%^?+mul(716,646)!)&mul(699,500){^^who()when()from()what()mul(314,198)%@;mul(419,800from()]$mul(844,419)$&]mul(317,754))<;^@(mul(222,12)##:what(751,642)$[from()%;mul(205,32)when()&{>+'>why()+mul(864,418)*@select()mul(911,629)*why();)^who()mul(248,4)}mul(132,503)/when()why()%mul(441,482)-mul(818,349)(#(where();(who(22,952)mul(534,621)$'~]where()why()-mul(199,973)mul(746,506)@'select()%{mul(866,951)from()mul(381,827)[select()*}(what()mul(744,979)mul(907,379)how(347,456)who()@what()##>;@mul(114,609),}what()'mul(406,863)][who()/when()mul(900,454)<'-)->[select()!select()mul(499,399)who()mul(349,409)',-~)select()mul(234,866)'why()mul(225,989)-(-mul(626,378);,$who()mul(597,85)mul(977,267)select(){mul(111,206):(&mul(989,396)#[:)<~{who()select()mul(689,817)mul(240,827)#how(){-+-@mul(663,156)'^$from())mul(416,908)*%why(714,896)#^+mul(993,707)'when()#;who()>where()select()?mul(978,206)@how(315,762)*/>why()({mul(998,362)who()$<(mul(488,946)},when()):}?where()where()}do()[!;?~{select()mul(673,574)%[::@;why()#]+mul(455,366)$~:mul(351,347)%,~-?what(595,890)]*select()mul(186,325)where()/:why(744,171)mul(513,868)/+why(118,201)mul(691,608) %mul(469,265)why()do()[mul(80,813)*<:mul(925,31):((mul(640,344)when(758,885)where()mul(474,482)?[>{where()]!mul(66,500)why()![# -mul(549,187,how()'where()*don't()#-<>%select()?who()]mul(581,943)?]what()}?) mul(54,791)]do()+$-)mul(255,793)who()]mul(338[)how()!@mul(253,351)++who()$mul(696,214)select()&mul(899%what()~}/what()-mul(302,687)when()#&mul(842,464)}?^$when()([()mul(579,190)<mul(432,910)^)mul(9,997)who()::what()from()mul(480,244)&)#mul(574)$@-]+$;mul(550,817)why()]<}[}who())]mul(129,159#$(?when()who()$^ mul(266,573)@mul(624,390)what();select()*from()mul(22,674$:]mul(675,762)(why(){://mul(493,757)*,$mul(624,120)?how()where()}mul(225,47):@)why()select(378,744)%& mul(867,37)~how()mul(91,26)$@]%){#select()*@mul(138,170)?*mul(531,483)-+<+)mul(714$who()select(569,250)}{)how()don't()?-when()when()-^%+^mul(475,925)why();!:from(){why()why()mul(231,576)'~@why()who(681,216)%(,/when()mul(393,115)^>@mulwho()where()~mul(238,298)from()<^(+,mul(766,436)how()^)%':{mul(427,646) ?%}(?<mul(476,338)from()why()&-[;'what()~mul(724,149~mul(25,405)mul(107,418){select()mul(107,999){why();]]mul(13,404)&^<@mulwhen()->mul(995,814)#~where()'}mul(267,274)']mul(174,583[,((!what()+when()*)mul(146,807)!:where()+!mul(856,39)?;@!mul(653,577)%}^do()^mul(961,701)::mul(23,391)<where()(from()~mul(915,472),& ?<select() when()mul(3,160),]select()?mulselect(),+from()]who()}]where(728,127)}:mul(742,873))mul(419,682)~/;#mul(330,468)[^?#*@~where()^/mul(352,725)>what()^*~-do()how()how(832,138);!}($#+mul(841,486)how()+# mul(255,21))-$who()when() -)> mul(427,236);&who(),where()+{mul(97,633)
|
||||
::<where()mul(633,320)]([)what()why()^);'mul(695,733);<%how()-select()(;[mul(284,802)&?;when(372,205)mul(860,681),why()how()select(77,254)!;mul(284,605)?mul(312,805)when()how()#mul(256,855)-:#mul(252,605)who()mul(188,300)&-#<from()@where()^why()mul(696,379){how()~;when())mul(202,912)what()how()how(){](:-,mul(889,648),)[-when()!,mul(887,787)%;~{mul(559,711){&mul(664,834)#@where())+>where(946,25)!where()do()?where()-why()mul(129,728)>^&mul(557,253)mul(535,49)who()~$><?!mul(950,144)select(399,41)'':[when()mul(984,990)%/:select()~'^'@-don't() )mul(862,540)from()]who(964,165)don't()from()mul(378,581)[[from(295,573)~]/!)mul(29,139)mul(992,600))mul(560,53)>mul(342,811)([*don't(),+how(398,338)}why()<:mul(556,398)[@??:^(),how()mul(708,821):;-?</where()mul(160,2):when()select()mul(870,629))^]&when()^select(859,207)don't():{who()who(29,837)select()'}}who()~mul(392,813)'mul(145,581)mul(805,802)what()$]@+who()/do()#&how():select()])mul(472,752)>where()/when()select()%?how(955,77)why()mul(428,310)how()where()'mul(759,360)(#>;where()when()mul(396,975)}{mul(131,376)(!@what()%] @mul(100,818)mul(478,394)<%$<:%($&/mul(337,545)mul(227,220)who()-'+why()select()select()don't()why():';!mul(49,915)+))[do()?[when()mul(886,984)'^ who()>when()~mul(468,20)from()(<>why(){mul(791,347)? &} +mul(389,748)/[<;when()select()*mul(370,770)::[select();what()mul(63,701)why()^mul(361,364)when(592,110)select()+: ]mul(988,308)$mul(693{from()!(how()~/mul(782,22)why()mul(355,443)}<)%how()how(){[mul(47,507,^}>)&#don't()why()mul(459,418)?who()/(how()select()when(456,391)?select()mul(451(mul(473,946))who()how()*<how()+!@what()mul(228,381)mul(800,750)how()')<+)from(),when()'mul(292,596)*select()why():what(158,611)(,who()#mul(825,578)mul(990,239)!^~,$>mul(733,242)mul(575,863)why()*>&,}%!]^mul(613,249){#from()mul&]who()where()}+}}$+mul(94,794)mul(813,82)#mul(294,897)mul(995,245)!%#!^why()mul(411,763)/}</where()who()when()mul(629,353)<]when():do()*mul(657,319)**?select()^&%(<mul(900,780'~how():who()^when()<*mul(685,253)-<mul(465,59)&mul(570,657)-&mul(314,390){@what()%mul(730,685)}from()when()&],<}mul(952,18)what()/;?#^?from()mul(214!/'],(]don't()%?+]-?^^-&mul(108,152)&~(]do();:(mul(27,545)<how()how()how()*mul(20,169)&~how()how()when()@mul(679,797)[how(),/mul(744,612),mul(270,322)mul(803,691);{select(427,50)mul(805,251)'?}mul(308,255)[[!^!who(){<;where()mul(817,821)/<who() where(698,784)$when(867,773)]mul{>what(),)mul(952,776)<mul(215,986)<mul(617,955)?^,[@('where()mul(984{,~#)-how()mul(758,488)$mul(87,191)from()/;}from(595,784)!when()mul(284,414):*>mul(868,728) ':~$}mul(869,784#who()don't()%@-} (mul(766,260)']who()@^&select()<when()<mul(812,773)%from()who()why()[:^mul(998,763)when()-mul(34,331)where()who()/]]mul(854,2)do()#what()mul(342,466)+$@ ?,who()*mul(92,63)#'from()who()~;when();where()?mul(175,64)+;mul(128,996)?from()mul(123,206)select()>mul(723,930)what()what()from()-#~!mul(873,766)%:,?mul(520,521)& mul(407,520)select()$mul(547,416)~?}%^mul(677,996)mul(661,622)[~!mul(310,928)^;>-mul(740,171) /$#$*don't()select()>: &mul(306,628)*{select()$mul(705,686$/mul(803,660)mul(485,760)[select()'select(){@mul(917,878)#mul(188,324)(>}<:select()'mul(281,982)(select()},what()mul(730,931)}-#mulwhat(469,510)select()'from()where()#from()#do()/mul(869,458)
|
||||
when()from()mul(912+{@mul(635,991)>}mul(158,871){[*{>'$*/ mul(686,481)mul(339,86)$>how()[when()mul(78,204)+&'mul(58,734)<{who()where()]';~mul(964,213)&select()where()@where(513,771)mul(471,186)'%$)@~<how()%how()mul(363;(]>({# mul(517,787){+%from()>]{,mul(762,604),~from()~+do()select()mul(827,656)$^>['-what()mul(318,236)select()'+>who(530,155)*mul(394,518)&#)select()from()!)select();:mul(805,79)why()}how()/&<mul(199,198)+mul(206,829)who()^}select()(]mul(216,978)@why()from()mul(129,689))~/,?where()mul(894,847)select() /#(]*mul(145what(119,568)mul(605,74)select() <when(246,601)-what();mul(642,999)@/;}+from():mul(423,41)mul@<+mul(90,853)what(565,411)![who():mul(971,380))who()mul(303,454)?#$#-'-do()who()]@}why()?!>?mul(924,569)who()$%where()]~*&[why(621,535)mul(152,407)[why()]#<!*select()#[mul(486,227who()*?)<where()%}mul(920,490)<$)#*$#mul(987,463)~?who()from()<(,mul(92,447)how():who()<+&why()>mul(478,24)mul(107,697)<why()who()%/>select()'>~mul(481,432) mul(248,61)^:+don't()mul(400,374)^]{who(){mul(959,329)from(){))]mul(566,182)}what()(where()>from()&don't()select()who():+?!]]/mul(766,741)why()@ !how()who()?select();<mul(434,357)%from()what()'^:!]when()?mul(798,701)#{,!:select()@what()%~do()]what() $&from():(&*mul(875,691)?%why()&[select();[/]mul(665,14)~:$*%mul(841,909)!<</#why()!]how(153,944)>mul(470,17)/mul(374,487)%@@mul(685,185)} {<#(mul(845,259)'why(230,429)[??^select()^>/mul(791,324)$how()/?mul(478,641)+/ <{(when()mul(794,547)why()[select()!*-mul(474,709)#select()# select()}select()mul(896,775)select()-where():!mul(817,123)mul(333,359)mul(433,461)mul(722,474)@'!@$mul(49,892) #(+,mul(726,435)what()>,;mul(957,798)) #%)$ mul(541,867)-?*# do() -]who(265,168){'*>{mul(770,902)+,-who()*what()mul(21,402)mul(843,622)~#mul(604,248)how()%(why()where()[;where()+mul(342,802))from()*when())#,<#,mul(439,954)}@-&)>+what()mul(593,520)>?,what();+,select()~mul(202,526)where()+#-]? mul(654,204)>why(),(]+mul(95,133)mul(626,152)@,[+mul(811,855)when()$when(387,144)when()who()mul(781,279))+&@&mul(77,160),why()%from()do())#mul(982,99):mul(722,476)mul(757,193)from()when()select()who(){mul(569,549)]*$mul(943,277)why()@who()}{from()!when()]mul(714,885),;*do()@where()^how()mul(941,709)~@{when(215,138)how()mul(772,310)~,what()>who()!?++]mul(858,573)-what()<(from()from()mul(254,457)mul(890,367)from()why()[mul(590,183)/@who()*#-^?~mul(446,447)<how()-)<}/how()mul(737,533),{>how()$select()mul(734,361)]~where();}when()mul(50,364):(where()-<^why()!&mul(692,682)from())&mul(949,43)mul(923,776)^/mul(987,377)!who()mul(286,329)#what()~from()^who()#/mul(13,658)why()>@(>]mul(592,423)mul(148,486)*mul(878,721)$%#how()what()mul(710,18):[#%do()where()@!(~mul(357,115)where()select()how()don't()mul(356,206)@,? how()^^what(295,729)[mul(759,861)from()*/select(334,18)&*how()@>what()mul(580,828)+;where()^;*select();what()mul(542,530)~where()[mul(549,51)'!mul(12,992)#why()don't()!;how()-(+{(mul(543,363)[what()from():mul(135,364)/select()mul(312,500)@where()[when()&$)]when(610,72)mul(215,533)~;who()}how()from()*)>~mul(522,58)@mul(402,510)!!;who()mul(867,26)-mul(25,987)?select()mul(973,76)why()&#{(/mul(148,345))^'%@when()-how()mul(233,85)
|
||||
14
2024/Day04CSharp/Day04CSharp.csproj
Normal file
14
2024/Day04CSharp/Day04CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
197
2024/Day04CSharp/Program.cs
Normal file
197
2024/Day04CSharp/Program.cs
Normal file
@@ -0,0 +1,197 @@
|
||||
var exParsed = new Day04Parsed("example-input.txt");
|
||||
|
||||
Console.WriteLine("Example Part01: {0}", exParsed.GetPart01());
|
||||
Console.WriteLine("Example Part02: {0}", exParsed.GetPart02());
|
||||
|
||||
var pzParsed = new Day04Parsed("puzzle-input.txt");
|
||||
|
||||
Console.WriteLine("Puzzle Part01: {0}", pzParsed.GetPart01());
|
||||
Console.WriteLine("Puzzle Part02: {0}", pzParsed.GetPart02());
|
||||
|
||||
class Day04Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
static readonly string WORD_TO_SEARCH = "XMAS";
|
||||
|
||||
List<string> letterGrid = new List<string>();
|
||||
|
||||
public Day04Parsed(string fileName) : base(fileName)
|
||||
{
|
||||
}
|
||||
|
||||
public override int GetPart01()
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
for (int i = 0; i < letterGrid.Count; i++)
|
||||
{
|
||||
var row = GetRow(i);
|
||||
|
||||
for (int j = 0; j < row.Length; j++)
|
||||
{
|
||||
var words = GetWords(i, j);
|
||||
count += CountWords(words, WORD_TO_SEARCH);
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public override int GetPart02()
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
for (int i = 0; i < letterGrid.Count; i++)
|
||||
{
|
||||
var row = GetRow(i);
|
||||
for (int j = 0; j < row.Length; j++)
|
||||
{
|
||||
if (IsMASX(i, j)) { count++; }
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
public bool IsMASX(int i, int j)
|
||||
{
|
||||
try
|
||||
{
|
||||
string wordToSearch = "MAS";
|
||||
string rwordToSearch = new string(wordToSearch.Reverse().ToArray());
|
||||
|
||||
if (GetEntry(i,j) != 'A') { return false; }
|
||||
|
||||
string backwardSlash = String.Format("{0}{1}{2}", GetEntry(i-1,j-1), GetEntry(i,j), GetEntry(i+1,j+1));
|
||||
string forwardSlash = String.Format("{0}{1}{2}", GetEntry(i-1,j+1), GetEntry(i,j), GetEntry(i+1,j-1));
|
||||
|
||||
if ( (String.Compare(backwardSlash, wordToSearch) == 0 || String.Compare(backwardSlash, rwordToSearch) == 0)
|
||||
&& (String.Compare(forwardSlash, wordToSearch) == 0 || String.Compare(forwardSlash, rwordToSearch) == 0))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch (Exception) { }
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
string GetRow(int i) => letterGrid[i];
|
||||
string GetColumn(int i) {
|
||||
string toRet = "";
|
||||
foreach (var line in letterGrid)
|
||||
{
|
||||
toRet += line[i];
|
||||
}
|
||||
return toRet;
|
||||
}
|
||||
|
||||
char GetEntry(int i, int j) => letterGrid[i][j];
|
||||
|
||||
static int CountWords(List<string> words, string wordToSearch)
|
||||
{
|
||||
int count = 0;
|
||||
|
||||
string rwordToSearch = new string(wordToSearch.Reverse().ToArray());
|
||||
|
||||
foreach (var word in words)
|
||||
{
|
||||
if (String.Compare(word, wordToSearch) == 0 || String.Compare(word, rwordToSearch) == 0)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
List<string> GetWords(int i, int j)
|
||||
{
|
||||
List<string> words = new List<string>();
|
||||
|
||||
// Scan only with X
|
||||
if (GetEntry(i, j) != 'X')
|
||||
{
|
||||
return words;
|
||||
}
|
||||
|
||||
var row = GetRow(i);
|
||||
var col = GetColumn(j);
|
||||
|
||||
// Get horizontal
|
||||
try
|
||||
{
|
||||
words.Add(row.Substring(j, WORD_TO_SEARCH.Length));
|
||||
} catch (Exception) { }
|
||||
|
||||
// Get backwards
|
||||
try
|
||||
{
|
||||
words.Add(row.Substring(j-(WORD_TO_SEARCH.Length-1), WORD_TO_SEARCH.Length));
|
||||
} catch (Exception) { }
|
||||
|
||||
// Get vertical down
|
||||
try
|
||||
{
|
||||
words.Add(col.Substring(i, WORD_TO_SEARCH.Length));
|
||||
} catch (Exception) { }
|
||||
|
||||
// Get vertical "up"
|
||||
try
|
||||
{
|
||||
words.Add(col.Substring(i-(WORD_TO_SEARCH.Length-1), WORD_TO_SEARCH.Length));
|
||||
} catch (Exception) { }
|
||||
|
||||
// Top Right Diag
|
||||
try
|
||||
{
|
||||
string diag = "";
|
||||
for (int x = i, y = j; y < j+WORD_TO_SEARCH.Length; x--, y++)
|
||||
{
|
||||
diag += GetEntry(x, y);
|
||||
}
|
||||
words.Add(diag);
|
||||
} catch (Exception) { }
|
||||
|
||||
// Down right Diag
|
||||
try
|
||||
{
|
||||
string diag = "";
|
||||
for (int x = i, y = j; y < j + WORD_TO_SEARCH.Length; x++, y++)
|
||||
{
|
||||
diag += GetEntry(x, y);
|
||||
}
|
||||
words.Add(diag);
|
||||
} catch (Exception) { }
|
||||
|
||||
// Down left Diag
|
||||
try
|
||||
{
|
||||
string diag = "";
|
||||
for (int x = i, y = j; y > j - WORD_TO_SEARCH.Length; x++, y--)
|
||||
{
|
||||
diag += GetEntry(x, y);
|
||||
}
|
||||
words.Add(diag);
|
||||
} catch (Exception) { }
|
||||
|
||||
// Up right Diag
|
||||
try
|
||||
{
|
||||
string diag = "";
|
||||
for (int x = i, y = j; y > j - WORD_TO_SEARCH.Length; x--, y--)
|
||||
{
|
||||
diag += GetEntry(x, y);
|
||||
}
|
||||
words.Add(diag);
|
||||
}
|
||||
catch (Exception) { }
|
||||
|
||||
return words;
|
||||
}
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
letterGrid.Add(line);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
8
2024/Day04CSharp/Properties/launchSettings.json
Normal file
8
2024/Day04CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day04CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day04CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
10
2024/Day04CSharp/example-input.txt
Normal file
10
2024/Day04CSharp/example-input.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
MMMSXXMASM
|
||||
MSAMXMSMSA
|
||||
AMXSXMAAMM
|
||||
MSAMASMSMX
|
||||
XMASAMXAMM
|
||||
XXAMMXXAMA
|
||||
SMSMSASXSS
|
||||
SAXAMASAAA
|
||||
MAMMMXMMMM
|
||||
MXMXAXMASX
|
||||
140
2024/Day04CSharp/puzzle-input.txt
Normal file
140
2024/Day04CSharp/puzzle-input.txt
Normal file
@@ -0,0 +1,140 @@
|
||||
MXXMASAMXSAMXSXMAMXXAMXASAXASMSMXAAMAMXXMMXAMXSXMAMSAMSAMMXASXXXXMXSXMSMSXSMSMMSSMMXSAMXSSSSXXXMMSSSMMXMAMXAXAMXMSMSSSMMSASMXSXAAXMSSMXXXSXS
|
||||
SASAMXSAMAMXAAAMSMSSMSAMXMAMAAAMSSMMSMXXMAXSAMXMMAAAAASASMXSXAMSMSAAXXMASASAMXXAAAXAXXMAXMAMAMSAMXAAMMSXXASMSMAMXAASXXAXSAXAASXSXMXAAAMMMMAA
|
||||
MASXSXAMMSXMSMMMMAMAASASMAAAMXMMXAMAAAASMAXMAMAMSASMMMMAAAMMMXMAAMMXMSMAMAMAMMMSSMMAMMMSSMAMAMSAMMXMAAAASXSXAMAMMMSMASMMMMMMMSAMXAMSSMXAAMXM
|
||||
MXMAMMMMAXAMMAAAMAMMMMAMASMXMXXXSAMSSMMMMMMMAMMMAAMXSSMSMAMXAMSMSMSAAAMAXXAMXXAMAMXMXAAMAXXSAMXAMXAXMMXXSASAMSXSASAMMMMAAAXMAMAMAXMAMASXXSAS
|
||||
SXMXMAXMASAMSSMMSAMMAMAMXXMASAMXMXMXAAXAAMMSAMXMXSMSMSAAXAXMXMASAAMMSMSAMXXAXMMSAMSMSAMSAMXXMSSSMSMSASXMMXMAMAXMMXASMAASXSMXAMAMMXMASAMMXMMM
|
||||
MMMAXMXMAMAMXMAXSXMXAXXXSMSAMAAMSAMXSASMMSASXSASXMXXAMXMMMSMSSXSMMMXMXMASMSMSAMSXMAAXAXMAXSSMAXAAAASAMMAMAMMMSSSSSXMMSXMMMASMSMSAASAMAXXAMAS
|
||||
XASMSMSMSSMMAXSXMMMSSMSAXAMMSMMXSASAMMXMAMMSAMASAXMMXMXSAAAAXMASAMSASAMSMAAXAXXXMSMSMSMSXMMAMSSMMMXMAMSASXSXAXXAAMXMMMASMMMMXAAMMMMAXSMMASAS
|
||||
MMAMAMSAXXXSXSMMSMMAAAMAMSAXAAXASMMMMAAMAMXMAMSMMMASMMASMSMSMMMMAMSASMSAMMMMMMSMAXAXAMXMMXSAMAAMXMASAMXAMXAMXSMMMMSMXSAMMAAAMSMSXSSSMXASXMAS
|
||||
XMAMMSMMMMMMMSMAAAMMSMMXMXASXSMAXXAAMSMSASAMMMMASXMXXXAXAAAXXSAMXMMAMXSAXXASXAAMSMMMXSAMAASAMMSSSSMSSXMAMMSMSXMASXAAAMAXSSMMAAXMAAAAXXXASMAM
|
||||
ASXMSAXAAAMAAMMSXSMAMMMAXMASAMMSMMMSMXAMASXSMASAMMSMSMASMMXSAMXXAXMAMAXAMXMSMSXMMAXMASASXXMAMXXXMAMXASMMMAMMXAXXSSMMSSSMMXSASMSMMMSMMSSMAMAS
|
||||
MAMXSASXXSSSXXAMXXMASASMSMXXAMXAAAAXAMAMAMAXMAMAMMAAXMAXAAXMAMSSMMSASXSSXSAXAXMXXSMMMSXMASMAMXMMSMMMMAXAMXMSSMMMXMXMAAAAXAMXMSMXSAMXXAMXMSAS
|
||||
AXSAMXMXSMMASMAMXXMASXMXXXMSSMSSSMSMASMMMSMSMASAMSMSMSMSMMMMSMAAAXAMXAXAAMMMMSMSXMASXSXMAMMAXASAAXASXMSXSMMAAAXMASAMMSMMMMSAMASXMXXXMMSSXMAS
|
||||
MXSAMXMXAAMAMMAMMMMMSXSXMAMAMAMAXAXXAMXXAMXMXASXXAMAXAAAXAXMXMMXMSXSMMMMMMMASAAXAXXMXMXMAXAXSASXMXAXAXMMSAMSSMASMSASMAAXMASXSASMMSMXMXAMXMAM
|
||||
XAMAMAAXMSMSSSSMSAASMAMXMAMASXMSMMMMMSSSXSASMXXXXSSSSMSMSMMSAMXSAMXXAAAXAASMSMSMSMMSAMMSXSMMAXMAASXSMMSASAMAMMXXXSXMXSSMXMSAMXSAAXMAXMMMSMAM
|
||||
MMSAXMSMXMAXMXMASXSMMSMMMAXAMAAXMAAAXXAAASASXMMSXMAMXAMMXAAMAMAAAXSXXAXXMXMXMXAAXAASASAMMMXAAAMXMMAAMAMXSSMXSSSMMMMSAMXMAAMMMMSMMSSXSXSASASX
|
||||
XMAMAAAXAMMMMAMMMMXASAMAXSSSSMMMSSSSSMMMMMMMXMAXAMXMMMMMXMSSSMSSXSMMSSSMSASASXMSMMMMXMAXMMAXSMSAXMSMMXSAMXXXSAMXAAAMASASMSMXMASAMXXXAXMASAXA
|
||||
MMAMMXMXMSSMSMSMAMXXMAMSMMAAMMMAXAAXMXXAXAXASMMSSMAXASAMMXAAAAXXMSAAAXAASXSASMMMAMXXSSSMAMSMXXSXSMMXXMMMXMSMMXMXSSMMAMXMXAMXAMXAMAMMMMMAMMMM
|
||||
AMSMSASMAAXXAAAMAMMAMXMAAMMMMSMMSSSMMSMMSMSAXSAAMSSSMSAMASMMMMMMMSAMSMMMMMMMMMMSSMMXMAMMAMMAMMMXMAMAAMASAMXXMASXAAXMSSMSSXXMSMSAMASAMMMAAMAS
|
||||
SMXASASMMMSSSSMSMSAXAAMMSAMXXMAMAAXAXAAXAMMAMMMMMAMXASXMXXAXSXMAMMXMAAXAMXAAASMAAAMXMAMSSMMAMASMMSMAMSASMSXMSASMSMXXAAAAMXSMMAAXXXMASXSMXSAS
|
||||
MXMMMAMMMMAAXXAXAXMMMSSMAXMAMXAMMMMSMXMMASXMMMSMMMSMXSXMXASXMASMSSMMXSXSMSMSSSMSSXMAMMXAMXSASMSAAXXSMSASXMMAMXSAMSMMSMMMMXSAMMMMMASAMAMSAMXX
|
||||
SMSMMMMMAAMXMSXMAAMAXXAXMSXMSSSXSAAXMMSSMMMXSAMMAAAAMMAMSAXAMASAXXAMSAMXMAAMXXXAXXMSSSMASXSASASMMMMAAXASAMXSMMMMMAXAAMAXMAMXMSAXSAMXSAMMMMSX
|
||||
SAMXAASXSSXMAMAAXXSASXMMXMASMAAASMSMSAAAAAAXMAMSMSSSMSAMXASXMASMSMSMSAASMXMMMSSMMSAMXASAMAMAMMXXMAMMMMSMMMAMAAAASMMSSXSAMXXAXMXMAASAMXSXXAAX
|
||||
MMMXMSAAAXXAXSMMMXAXSAXMXSSMMMMMMAAAMMSMMMSXMAMXXAAAAXXXMMMMMXSXXAAASMMMXSAAXMAAAAAASMASMMAASXSMSASAXMXAAMAXMMSXSAAAXXXAAAMSXMXMAXMASXSMMMSX
|
||||
MSSSMXMMMMMSXMAAMMSASMMMAMAAXXXSMSMSMAXXXSAMSASMMSSMSMSXAAAXSXMMMSMXXAXAAXXMSSMMMSMMMXMXSXSASASXSMSAMXMSMSSSMAXASMMSSMSAMSXMASMMMXSXMXMASAAM
|
||||
XAAAAXXMMXAAMMSMSAMMXAAMASMMXAMXAMXXMASMMSAMSAMMAXAAXAMXSSSSMAXSAXSSSSMMMXAXMASXMAMXXSXMMMMMMMMAMMMMXMMMXAAAAXMAMAAXAAXXMXASXMAAXAMAMMSAMMMA
|
||||
MMSMMMSMAMSMSAXAMXSSSSMSMSAMSSMMAMXSMXSAAMAMMSMMXSMMMSAXXXMAMAMMMSXMAMXAAXSMMASMSSSMXMAMMXAAXAMXMAAXAMASMMSXMAMSAXXMAMMASMMMSSSMMXXAMAMMSXXS
|
||||
AAAAMAAMSXMAMAMXAMAMAXAAASAMAXAMASAXAASMMSSMXMXXMXXMSXXXMMSSMXSAMXMMAMMXSMMAMASAAXXMASAMAMMXXXSASMSSXSASAAXAXMMAMSAAAMSMMAAAXMAMSMXMSXSMMAMX
|
||||
SSSSMXXMMAMSMXMASXMMAMSMXSXMASXMAMXXXMXAAAASAMAAAMMMMXMAAAAAXMSASXAMASMAXASXMASMXSMSMSASXSSSMASASAMMAMXSMMSMMMXAMXXMXXXASXMXSXMMAAAXMASXMASM
|
||||
AXAXASXXMXMAMAMAXAXMMMXMASXMAMXMASMSMSASMXSMMSMSXXAAXMSASMSSMMSSMMMSAAMASAMMSXXMAMASASAMAAAAMAMMMMMMAMXMAMMMASMSSXMMMASXMASXSXSSMSMSAXMASASA
|
||||
XMAXSAMXMASMSAMXSSMMXMAMAMXMASASMMAAAXAMMXMXMAAMAMSMSAMAXMAXAXMASAXMMMMAMAMAAAMMSXSMMMAMMMMMMXXAMXAMAMAXAMASMSAAXAXMAXMASXMAMAAXXAXAAMSXMAMX
|
||||
SXAXMMXMXASXSXXMMMMSASXMASMSASMSXSMMSMMSXAXASMSMMMAASMXAMMSSSMASMSMXAXXMMSMMSXSAMMXXXMAMXSSMXXMAMXSSSSXSASXMMMMMXMMMSMXMMXMAMXMASMSMXAXMMSMM
|
||||
SAMXSMMSXASAMXMAAAASMSXSXMAMASXMAMXAXAASMASXMMXMXSMMMMMMXXXAXXXMMXXMASMSAMAMAMMASASMSMMXAAASAMSSMAXAMXAMXSAMSAMMASAMASMASXSASXXAMAAAXSXSAMAS
|
||||
MAMAXAAXMMMXMAAXMMMSXXAMAMSMMMAMAMMMXMMSSMXMAXAXMXMMAXXAMSMMMXSASXMASMAMXSSMAAMXMASAAXSMMSXMXXAXMXMAMMSMAMAMXAMSASASASMXMAMASMMMMMMMMMAMASAM
|
||||
SAMXSMXXAXAASASAMXXMMMAMAMAASXMSXSASASMMXXMASMSSMMASMMMMSMAAAXSAMSASAMSMXMXSMSXSMMMMMSMAAMAMMMMSMMSAMAAMASAMXXMMXSAMASASMSMXMAXAASMMSMAMMMMM
|
||||
XXMMMASXSMSMSAXMMXSXAMSXMXSSMAXAXMASAMAMXMSMXAXSAAAXXAMXAMSMSMMAMASAXSXSXSASMMAAASAMMXXMMSASAAXAAASAMSMSASMXAMXSAMXMSMXMAMXAXASXMSAAXXSMXMAS
|
||||
SXSASAMXAAMAMXMXXAXMSSMAXAMAMSMMSMMMXSXMAXMAMSMSSMSSSMSXMMXXMASXSXAMXSAMXMASAMSMMMAMSAMXASAMMSSSSMSSMAXMASASMMMXAXMMMMMMAMMSMASMASMMXAMXMSMA
|
||||
AASMMASXMXMAMMMMMSSMMAMMMXSAMXXXAAAAXMASAXMAMAMXXXAAAAMMSXMASXMASAMXMMAMAMAMAXAXAXXMMMSMMSMMXXXAXASMMSSMXMAMAAXXXMMMSAAMASAXMAMMAMAAXSMSAAXM
|
||||
MXMXSAMMXMSAMMAXMASASAMMAMMXMXMSSSMMXXAMXASASMSASXMSMMMAXASAMAMXMXXMXSAMXMXSMXSXMXXSAXMXAXXXXXMMMMMMAMMMMMAMSMMASAMASXSXXMAXMAXMXMAMXMAMSAMX
|
||||
MXMASAXXMAXAMXMMSASMMASMAAASMMAAAXASMMAMMXXASXMASAAMAMMMSMMMSMSMMXXXAMASMMMXMAMASAMSMSMMMXXXMXMXAAAMASAAAMXXAASMSAMXSAMXSXMXSSSSSMMMAMXMASAX
|
||||
XXMASXMMXSSSMXMMMAXAMAXXXMXMASMMMSAAMXMASMSMMASAMMMMAXAMXMMAAAAASASMSSSMAMAXMASAMAMMAAXAXMSMSASXSXSXMSMSXSMSSMMXSXMMMXMAMSXXXAAAXMASAMXAAMSS
|
||||
MXMAMAMXAAAMAASMMSMAMMSAMXMSMMAXXMMXAAMXAAAMXXMASXSSSSMXAMXXMSMSMASAAMASMMSXSAMXMXMXXSXMSXAASASAMXMMMMAXAAMAMAXAXAAMAAMAMMXMMMMMSSMSSMSMMSAX
|
||||
MXMSSSSMMSSMSMSAAASAMMAMXAAAXMMMXXSXMXSSMSMMMXMAMAAAAXMMSMMAMMMAMXMMMSAMXAAAMMXMXSMSAMAAAMMMMMMAMMMAMMAMXMMSSMMSSSMMXSSMSMAAMXMAXMAXAXSAMMMS
|
||||
AMXMAAXAAAAXXAXMSMSXXXSXSMSMSASMSMMAXSAXXAAASMSSMMMMMMSAMAXXMAXXMAXAXMAXMXMMMSSSXAASASXMXMMMSAMAMASMSMXMXXAXXXAXAMAXSAXMAMSXSAMMSMMMMMSAMAAX
|
||||
AAMMMMMMMSSMMAMXAAMMMMMASXMASAMXAAMMMSAMXMMMSAMXXAMSMAMASXMASAMMSMSMSMMMSMXSAAAXSMAMAMMSAXSASXSASXSXSXAXMMXMMMXSXSAMMMXSXXXASXXMAAAAXASXMMSS
|
||||
MSAXXMXAAAMXMAXMMMMAMAMAMMMMMAMSSSMAAMXMMMSXMXMMMSMMMAXMMAAMMASXAAXXAAAAAAXAMMXMXMAMAMASAXMAXMAMXAMAMMXAXSASAAASMMXSMXXMMMMMMAMSSSMSMXMASXAX
|
||||
SAMAAMSSMSSMMSSMSASASAMASAXAMXMXXAAMASMSXAAXMMMSAMASXMASAMSXSAMMMMMXSSMSSSMMXAXSXMASAXXMSMMAMMXMMMMSMAMMASASASXSAMASAMXAAMAMMSMAAAAXMASAMMSM
|
||||
XAMMXMAAMXAXAXAASMXMSASAMASXXMSXSXMXXXAXMMMSXAAMMSAMAXXAAXXXMAMMSASAXMAMAMAXMMSAAMAXXMAAAXMMSAAXAXMAMXMMAMXMAMMSAMASASMSXXAMMMMMXMMMSXMASXMA
|
||||
MMMXXMSSMSAMMSMXMASAMAMAMMMXAASAMXMXMMXSASMMXMSSXMASMMSMMSSMSSXASASMMMAMAXAMAXSMSMSMSAMXMXAXMMSXMMXMXASMSMSXAMXSXMMSAMAAASXMSAAMMSAMXSMMMAMS
|
||||
XASAMMMXMMAMMXXSXMASXXMMMMASMMMMMAAAXAASXMAAMSMMXXMAAXSAMMAMAMMMMMMXASXSMSMXMXMAXAXASAXMMXMXSAXAXSSXMMSAMASMSMXMAMMMAMMMMMAASXXSMMASASXAMAMA
|
||||
MMMMMAXAMXXMXSXSAXAMMXMSMMAMAMAMSMSAMMMSXSMMMAAMMSSSXMSAMSAMASAXSSSSMMXSAAAASAMXMASMSAMXMASMMASMMMAAAMMAMAMAAMMSAMAXAMAASMMMMASAXMXMASMXSSSS
|
||||
XAAAXMSMSAMAXMASMMSMSAMAAMAMASAMAAMXMMXMAMMXSMSAAAMAMXSXMSMXMSMSXAAMMMAMXMMMSASXSAMXSAMXSAMAMAMMXSAMSSMSMAMXMXASMMMSSSXXXAXMASAASXMMXMAXXMAM
|
||||
MSXSXXAXMAMMMMAMAAAAMASMMMMSASMSMSMASXMXAMMMMXXMMXMAXAMXXMSAMXMXMMMMAMXSXSXASAMXMASAMAMAMMXSAMXSAXASXAAASXSMSMMSAXMAMMMSSMMMSMMMMAASXMSMSMSM
|
||||
MMAXXSASMSMSAMXSMMXMMAMAMAMMAMASAAMMSAMXMSXAMAMXXMSMSMSXMASXSAXMAAXXASAMAXMMMAMXSAMXMSMSMSAMAMAMXXMMMMSMSMSAXMMMXXMASAAXASXSXXMXSXMMAMAXSAMX
|
||||
AMXMAXASAAXXXXXSASAMSASAMSMMXMAMXMMMSMMASAMMSSXMXMAAAMAAMAMXSAMSSMSSXSAMXMXSASMXMASXMXAAAMXSAMSMSASASXMASAXMASAMMMMXSMMXAMXAMSMXAMAMAMAXMAMX
|
||||
MMMSSMMMXMMSSXMSAMAMSAMMMMAMXMXSMMAAXAXXMASXAXAMASMSMSXXMASXMXMAAAXXMXAMAMASAMAXSAMXAMSMSMAMASAAXAMMXAMAMXSXASXSAASMMMXMXMMSMAMXMASMMSSMMAMX
|
||||
XXAAAAXXXMAAXMAMAMMMSXMXAMXMMMAMASMSSMMSMMMMMSSSXSXMXMXMMMSAMXMSMSMASXSMXSAMAMSXMASMXMAAAMASXMMSMMMSMSMAMMSMMMAMXXXAAASXSMXXSMSXXAMAAAMASASX
|
||||
SMMSSMMXXMMXSAXSAMXAXASXSSMMAMAXMMAMAXAMASXAXAAMMXAMMSASAAXXMAXMAMMAMXMAXMXSXMXASAMXXAMMMMXSAMXAAAAXAXSASXXAASAMXSSMMMSAAMAMAXAXMMSMMMSAASAX
|
||||
AAMAMASXMMSASMMSXXMXMSMAXMAXMMXSMSSMAMMSAMMMMMSMAXAMXSXSMXSASMSMAMMXXAMXMAAXMASAMASAMXMASMMMMMSXSMSMMMXXMASXMSASAASXAXMXMMASAMSSMAMAMXMASMSS
|
||||
SXMAMAMAMAMMSAMSXMASXAXXMSSMXSXAAAXMXSXMASAAXXMMXSAMXMAMAXSXMAAMSMAMXMSMSMSSMAMASXMXMASASAAXSAXXXXXAMSAMXAXMASAMAAMSMMMASXXMAMAAMAMSAMXMMMAM
|
||||
XXMSMMXSMXMAMAMXAMAMSMMXAAAAAXSMMMSAMMXXAXXXMMXAAMAMAMXMSMSAMSMXAMXSAAAASAAXMXSAMXAMXXMASMMSMASAMASMXMAMMMSMXMXMMMAXMASMSMMSMMSSMAMMAMMSAMAM
|
||||
SAAAASXXMMMSXMMSXMAMAXXXSSMMMMAMXSXAAAAMSSSSSXMMMMAXASXMAASAMMSXXSAMMSMSMMMMXMAXMXSXSXAXMXMAMXMMMXMAXSAMASAMXAAXXXXXMMSAMXMAAXMAXMSMAMASMSAS
|
||||
SMMSXMAXAAAMASMMSSMSSSMMMAXXMASMXASXMSXMAAAAMSMAASXSMSASMXMAXAAMSMMXMMXMMAAXSSMSSMMAMXMSMASASAMXXSXMASASMSMSMXASXSXXMSMXMASXSMSAMXAMAMXSASAX
|
||||
XAAAAXASMMMSAMAAXXAAAAAASMMSAAAMAMXXMAMMMMMMMASMMMAAASXMXMSMMMXMAAMXSAMXSMMXMAAMMAMXMAMAMMSXSASXMSAAXSMMMMMAAAMXMXMASXAXSASAMXMXXSMSXSAMMMSM
|
||||
SMMMMMXSXAAMMXMMMMMMSMXMMAXXMMSAMXMXSAMMAMMXSMSXSMSMMMMMMXAAAAMSMSMAMAMASAMXSMMMMXMMXMSMSXSMSMSAASAMXXMASASXSXXAMXAMAMXMMMMXXMSMMXAXMMASAAMX
|
||||
MXSAAMASMMMSSXXMASAAAMMSMMSXSAXMXAAAMAMSAXMAMXMASAXASAAAMSSSMSAAAAMASAMXSAMXXASASMMSAAAAAAXAXAXMMMMXMASMSASAAAMSMAMAXXAMASXMMXAASMMMMSAMMSSM
|
||||
XAMMSMASASXAXMAXASMSXMAAAXAAMASXXMMMSAMXMSMMXXXXMXMAXMMSXMAXAMMMXXMAMAXASAMMSMMXXAASMSMSMMMMMMMXSASAMMMMMMMMMMMXASXMMSXSASAAXSMSXAXAMASMMAXA
|
||||
MXXSAMXMXMMSSMSMAXMXAMSXSMMXMSMMXSMXSASXAMMAMSMSMSMSMSXXASMSSXSXMSXSSSMAMAMASXMXSMMMXAMXAAAXAXSXSASXSAXXXSSXSMXMAXXAASAMASMSMMXAXSMXSAXXMAMM
|
||||
MAXSASMSMXAXAAAMSMSMMXMAAXXXMXAMASAXMAXMSMMAAAAAAAAAAAASAMXAAXXAXAAMAMXXMAMMMASAMXAXXXXSMSSSSSMAMXMAMMMMAMMAMMSMSMSXSMAMAMMAAXSSSMAXMASXMXSX
|
||||
ASXSXMXAMXSXMMMSMAMASAMMMMXMAAMMASMSMSMAAXSMXMSMMMSMSMXMMMMMSMSXMMXMAMAMMSMSSXMXMMMSMSMAAAMXMAMXMMMMXSAAASMAMXSAMXXMXMSMXSSSSMAXAASXMXMMMMAM
|
||||
MXAMXSSMSMXMXAXAMAMMMAXSAMMAMMSMXSXAAXMSMXXAAXMXMMMXMMXMSAMSAAXMXSASAMASXXAXXMSASXMAMAAMMMXXXXMASXMXAMXXAXMASXMMMXXASAMXXMAXAMMSMMMMMMSXSASX
|
||||
XMAMAMAXXXAXMASMSMSXSAMMAMSASASXSMXMSMMAMSMSMSAASAMAXMAMMAXSMMMMAAXMXSASAMSMSASASMSMSMXXMMMSMMSAMAXMMMSMASMXSAMSMMASAMSMSMAMXAXSAMXAAAXMAMXM
|
||||
MSAMXSMMSSMSMXMAAMMXMAMSAMXAMAXSXMAMXASMSSXAXMMMXAXAMSASXSMXASMMSSMMXSAMXMMAAAMAMAAAAMSXSAAAAAMASXMMSAXAAXMASXMAAXSMMXAAAXSSSXXMMMMMSSMXSAMX
|
||||
MSMSAMXAAAXAMAMSMSSMSAMMASMAMMMSXSMSXMMXAXMXXSASXSMSXSAXAAXMXMAAAMXXAMMMMMMSMXMAMSMSXSAASMSSMMSXMASAAAXMXSMMMMSMSMXAXSMSMMMAMSSMSSMMXAMAMMMM
|
||||
ASMMXXMMMSMXMMMXAAXASAMSAMXAXAMXAXAAMMSMSSSMASXSAMAMMMXMSMMMXSMMMSXMAMSAXMAMMMSAMXAMXMMMMMMAXAXXMAMXSSSMMAMMAMAAXMXSMMAXXMSAMXSAAAASXXMASAMA
|
||||
XSMSMASMMXMSAMAMMMSXSAMMMSMSXSMSSMMMSAAXAAAMXMAMAMXMXXSAXASAMAXSXXXAMXMMSMASXAXXXMAMAXXSMSSSMMSMSMSAMAAXXMASASMMMSAXAMAMXXMAMXMMMSMMAXSASASX
|
||||
MXASXMSASMASAMASAXMXMMMAAAAMAMAXMAXAMXSMMSMMAMXMMMXSAXMASAMSAMSAAMSSXXAAMMMMMSSSSMSSXMAAXAAAMXAAAAXAMSMMXSASASAMAMASMMMSSMSMMASAMAMMSMMASAMM
|
||||
AMMMAXSAMMAMAXASMMXAMXXMSMMMAMAMXXMXXAMXMAAMASXSAAXMAXMAMAMXSXAMXMAMMSMSSMMMXMAMXAAMAMXMAMSMMMMSMSMMXMXMAMMSXSAMMXAXXAXMAAAMXASAXXMAXAMAMAMA
|
||||
SAASMMMAMMSSSMMSASMMMAXXMXAMAMAAAXSSSMSXSSSMMSAAMAMMAMMASMMXXSMXAMSXMAAXXAASMMAMMMMSXMASMXAMAXMAAXMSASAMAMAMXMMSSMMSSSMXMMMSMAMAMSMXSAMSSMMS
|
||||
MSMAAXSMSAAAXXMMMMAAAXMXASXXAXMMSXAAXAXXMMXAXMMAMXAXASXAMAMXXXXSAMXASMSMSSMMASXMXMXMASXSMXMSMSMMSMAMASASASMSASMAAAAAMASXAAAAMSMSMMAAMAMMAMAX
|
||||
XAMSMMMASMMSMMMASMSMSSMMXMASXSXAXMMMMMMXSAMMXMMXMAMXAMMMSAMXAXMAMXSAMAAXMASXXMXMASASAMXMXMXAAXXSMMXMAMAXAAMSAMMMSMMMMAASXMMXXXAMAMMMMSMSAMXS
|
||||
AXAAMAMAMSAMXASXSAAAAAASAMXMMAMXSAASMMAAMASXMMAASXSSMMSAMASAXSSMSXMAMSMMMXMXAAAMXSXSAMXMAAXMMMXMAMSMAMXMASMMXMAMMAXXMSASXSXSAMAXXMAAAXASXSXS
|
||||
MMSMSAMXSMMMSXSMMMMMXSMMAXMAMMSMSXMAAMMSSMMMAMSMSAMAAAMMSMMMMAAAAXSAMMXXSASMMSXSXMASASASXSXSAAAMAMXSASXAAXXAASASXMMXMXAMAMMMXSMMSSMSSMAMXMAS
|
||||
XAAXXMSXMASAMXMAXMXSAMASAMXAMXMAMAMXMMXAMAAAMAMAMAMMMMSXAAAAMSMMMXMXSMAMSASXMXMAMXAXASASAMASMSSSXSAMXMMMMXMXMSASAAXSAMMMAMXXMAMAAAXMXMXMXMSM
|
||||
MSSMSASXSAMXSASMMXAMAXAMXMSASMSSSXMAXSMSMSASMSSMXAXXAAXXSSSMXMAMXSXAAMAXMMMAXMXAXMXMAMAMAMAMXAAAAMASXMSMSASMXMASMMAAASASASXSMSMMSSMMAMAMXMAM
|
||||
AXAAMSMMMXSSMAAMMMMSSMMSXXAASAAXMASXMAAMAXAXXAAXMMXSMXSAXAAXASXMAMMSMSMXAAMXMSMSXSAAAXXXAMXSMMSMMSAMXAAASAMXAMXMMMMXXXAXXAAAAAAXXMAMAMAMMXMS
|
||||
SMMMMXMASAMXMAMAAAMAXAXMMMMXMMMMSAMSAMXMMMSMMSMMXSAXMAXXMXMSMMXMAMAAXAMSMMMSXSAAASXMXSMSXSAXMXXMASASXSMMMAMSMSMMXAMSSMSMSMMMXMSAXMSMSSMXSAXA
|
||||
MMSXXXSXSMSMSASMMSMMSMMXASAXMAMMMAXXSXXXXSAMAAXMAMMSMMXSASXMXXXMXSXXSXMAAAXMAMXMMMMSMAAAXMASXMAMMSXMAXXXXXASAMXMMXMXAAXAMXAXSAMMSXXAMAAAMAMM
|
||||
AAAXMASASAAAAAMAMMXAAXXMMMMXMASXSSMAXXSMMSXXSASMXSASAAAAXMAASMXSASXASMSMMMAMXMMXXAAASMMMSMMSMSMMAMAMAMAMSAAMMMAXMMMSXMMAMSXXAAAAXMXMSMMMXSAX
|
||||
MMSMSAMAMMMSMSSMMMMSMSMAAAXMAXSXAAMMMASAAMMXXAMXAAXXMMSSMSMMAAAXAXMXMASASMSAMXMMSMSXSXAMAAAXMAXMASAMXSAAAMAMXSMMMAXAAXXXXMXXSSMXMMAMAXAAAASX
|
||||
XMAMXSMAMSMXXAAASMMAAAASXSSXSASMSMMMSASMMXAXMSSMMSSXSMMAAXAXMMMMMMMMMXMMMAAMASXAAXXXMXSSSMMSSMXSAMASXMXSXXXMAMXAXXSMSMXSAMMMMAMSMSASXSXMASXM
|
||||
MSMMMMSXMAAXMMMMMASMSMXMXAXAXMSAAAAAMASXMASXMASAMXAXSASMMMSXXAXAAAAMMMSAMXMXSAMSMSXMSAMXMMAMXAAMASMMXXXMASMMSSSMSAMAXAMMAXAAMAMAAMAXXMMXMAXA
|
||||
XAAAAMAMSMMMSMASXMMAXMXSXMMSMASMSSMSMAMXMAXAMMSXMMXASAMAAMMSSMSSSSXSAAMASMXXXMAXAMAMMXSAMXAXMMMMAMAAAXMXMMMAMAMAAXMAMAMSMMSMSMSXMSXSASMMMASX
|
||||
SSSMSSXMASAAXXAMAAMAMXAAAXAMMMMAXXXXMXXXMXSAMXSMMASASMMXMMMXMXAMAAXSMSSMMMMMMXAMAMXMAAXASMSMSMAMASMMMMMAAAMXMAMXMXMMMAMAAMAASASMAAASXMASAMAA
|
||||
XAAAXAAMAMMMMMSMSMMSSMMSSMSXMXMMMSSXAASMMASXMAMAXXAAMXXXSASASMMSAMXMXAAASXAAXMASXMMMMMXAMAXAMXAXAMXMXAXSSMSXSXMMXMMMXXXMMMMMMAMXMMMMASAMAMMX
|
||||
MSMMMSMMSSSMSXMAAXAAXAMAMAAAMMMSAAMMMMXAAASAMXMMMMMMMXMMSASASAXAAXAMSSSMMSSSSSXAAXXSASMSMAMAMSMSMASAMXMXAMXAXAXSASXMASMSXXAAMAMAXXXXXMASXMXS
|
||||
AXASAAAXAAAAXAMSMMMSSMMASMSMMAAMMXMAMSSSMMSXMASASAXAMMMAMXMASXMMXMXXAAAMXAMMMMMSMMMSASMAMXSAMAMAMMSMMXSMSMSXSMMSASXMASAAMSSMSXSMSMMSSSXMXSAM
|
||||
MSAMSSMMMSMMMXMAXASAMMSXMXAASMMXSASMSMAAMAXAMAXMXXMSXMMSSSMXMASASMSMMSMMMXSXXXAMASXMMMMSSMSXSXSASXMASAXXAAAMAAAMXMXSAMMMMAAMMAXAAAXAAXXSXMAS
|
||||
AAXAXXAAXMAAAXSXSXSASMMAMMMMXAAAMXMMAMXMMSSSMSSSSMXMAMAXAXMASXMAAAAMXMAXMMMAXSMMAMXAAAXMAMXXMXMMMAMAMXSMMSMAXMASXSAMMSAAMXSAMMMMMMMMSMMMXSAM
|
||||
AMMSAMSSMSSMSXMASMSAMXXMMSXASMMMSAMSSMMSMMAXAAAAAXAXAMMMAMSXSXMXMSMSASMSSMMAMMAMSMSSMSSSMMSASAMSSMMMSMAXXAXXXXASAMXSASMSAXMAAXMASAMXMMAAASAS
|
||||
XXAXAMXAMXXAMXMASASAMXXSAMMMSMAXSAMAAAAAXMAMMMXMMSMSSMXMAMSSSXXXMAMSASAAAXSMSMAMXAMXMMXAXAMAMXSAAAMSAXAAMSSSSMAMAMAMASAXMSMXMASASASASMXXASAM
|
||||
XMAXMMMMXMMXMAMXSXMMMAAMAMAXMMSXMAMSMMMSAMXMAXMXXXAAXMAMAXXASAXSSMMMMMMMMMXAAXAMMXMSXMAMXAMAMMMMSMMAAMXSAXAXXAXSXMASXMMMXAAASXMASMMASASXAMMM
|
||||
XSSMSAAXSASASASAMMSMMXSSSSXSAAMASAMASMXMASASXSASASMMMSSSSSMMMSMAASMAMAXXSMMSMSMSSMAXMAXSAXSAXMXAXAMMMMXAMMAMMSAMXSMMMAXMSMMMMAMAMAMMMAMMSMAM
|
||||
AAAASXMSAAMASAMXMSASAMXAAXXAMASMMSMAXXAXXSAXAXXMAAXXXAAAMXASAXMSMMSASMXMAMXAAAMAAMMMMMAAMMSMSSMMSSMSSXMMXSAMAAAXMXAMSSMXMASMSMMXSMSXMSMAAMAS
|
||||
SMMMMMXMMMMXMAMAXSASMSMMMMAXMASXMAMMSXSMMMMMSMXMMMMMSMMMSSMMMSMAAMMMSXASXMSMXMMSXMMAMXMMXAXAAMAAAAAAMMAXAMAMXSXMSMMMAAMXAAAXAAXAAXMAMMMSMSAS
|
||||
XASXXXAMMSMXXAMXAMXMASXAMXAXSXMASMXMAMXAMAAAMASXSXAMAXXAMMAAAAXMSMAXXMXMAMMSMXAMAMSMSAXXSMMMMSSMSMMMSSSMMSXMXXAAXASMSSMSXSMSXSMAMMSXMAAXXMAS
|
||||
SXMAXSAXAAAMASXMMMXMAMSMSAMXAXMXMSXMAXSAMXMMSMXAXSMSMSMMSMXMSSSXMMMMMMXSMMAAMMASMMAASXSASAAXMXMAXMMAMXMXMAMXASXMXSMAAXAMAMXMMXMAXXAAMMXSAMXM
|
||||
MMMXMMAMXSAMAAASXSAMXXMMAMMMMSXSASMXXXMMMAMXMAMSMXXAXXAMAMAAXAXAMMSMXAAMXMSSXSAMXSMMMASASAMXSMMSMXMSMSXMASXMASAMSMMMMMAMMSAMAMXAMASAMAASXMAS
|
||||
SASASXXMMAAMMSXMASXXSASXMSAAXMAMAMMMSSMSMMXAMSMMAXSMMSSMAXMSMMMMMAAAAMXMAMMAXMASASXAXXMAMMXAXAXXXXSAAASMMMASASXMAAAAXMAXXSAMSMMXSAMSSMMSASAS
|
||||
XMSAMMMSXSXMAMAMXMAXSAMXAXMMAMAMAMMAMAAAASXMMMAMSMAAAAMMMSMMAXAASXMXXXMXXSMSMSAMMXMMASMXMMMXXXXMAXXMSMXSASXMASXMSSMSSSXSAMXMAAXAMAMXMMXSXMMS
|
||||
XMMXMAXXAXXMXSAMXMXMMSMMSMMSMSAMXMMAMMMMXMAMASXMXSMMMMSAASASXMMXXAAXSMSMMMMMMMXXMAMXMAAAAXASXMSXSASXMMASXSMMAMAXAAXAAXMMAMXSXSMMSSMAMSAMSSMX
|
||||
XMASXSMMMMMMMSAMXMXSAMXAAAAAMAMMSMSMXMAXASAMASAMAMXSAMMMXSAMMAMSSSMMSAAAAAAAXSSSSMMAXSAMXMXSAAAAMSAAXMAMXXXMASXMASMMSMXSAMAMMMAXAAMAMMASAMXA
|
||||
XMXMAMXXAAAAASAMSAXMASMSXXMXMAMXAAAAASMSMSAMXSAMXSASASXSXMASXSMMAMXAXSMSSSMMSAAMASXXXAXSXMASMMMXSMMMMMSSMMASMMXSXMASAAASMSMSASXMSSMAMSXMMMMX
|
||||
SSSMSMAMXSSMMSMMSAMSMMMMASMSSSSSMSMSMAAAAMMMASXMXMXSAMXAMXSAAAXMAMMMXAMXAAASAMXMAMXXSSMSAXAMAMMXMAASAXXAXXAMAAAXAAXSMSMMAAXMASAAAXXAXMAMASMM
|
||||
MXASAMXSAMAXMXXAXAMXSAMXAAAAAAAAAMAXASXSXSAMXSASMSAMXMSXASXMMXMXAMXXSSMSSMXMAMXMAMXMAXASXMASAMMASMMSMSSSMMMSMMSAMXMMMMXMMMXSAMMMMXMXXSMMASAA
|
||||
AMXMMXAMASAMXAMXSAMXSMSMSMMMSMSMMMASAMAXASMSASMSAMXMAAXAMAXXSSMSASMXSAMAXXAXXMAMASAMXMXMMMXMMXSASAMXAMMMAAAAXSAMSMMAASASASAMXSXMXSSSMAXMXSMM
|
||||
MAAMXMXMAMXMMSSMAXXMMXXAXXXXMAXAXXMMAMXMMMAMXXXMXMASXSSSSSSMAAAASAMXXAMXSSMMSXMSAAAMSMSAMXASXMMASXMMMMASXMMMSAAXMASMMMASAMXXMXMMXXAAAMSXMMXS
|
||||
MSSSMMSMMSXSAAAAMMMMMAMXMASXSAMMMXXSXMXMSMMSMSMMMSXMMXMAAAMMMMMMMMXSSXMMMMMXMAMMMXMMSAXASMMSAAMAMMMSMSMSSSXXMMMMSAMXSMXMXMXSAAMSMMSMMXSASMAA
|
||||
MAMAMAMAMAASMMMSAAMASAXASXMMXAMXAXMASMXAAAXAAASXMMMSMSMMMMMASAMXXXMMAMXXAAMMMMMAMXSAMAMXXAXSXMMMAAXAAAAMAMMMXAAXMASAMXMASMMSSMSAAMAXAXSAMMSS
|
||||
MASMMMSAMXMMAXAMMMMAMMMMSAXAMSMMMSAAASMSMSSMXMMXAAAASAAXMMSASASMMMXMAXSXMMSAAASXMAMASAMXSAMXAXAXSXSMSMMMAMAAXMSMMAXASAMAXXAMAMXMSMXSMMMAMAMM
|
||||
XMMXAASAMXMSXMXMASMSXSAMXAMSSMAAXMMMMXMAXAXXSXMSSMSSSSSMSAMASXMASASMSMSASASMSMSAMXMAXMAMXSAMMXXXAAMAMAASMSMXSAAMMSXMXAMXMAMSAMSXXAAAAASAMASX
|
||||
SXAMMMXAMAXMASXMMXAAAXAXMAMXAXMMMMSMSAAMXMAXSAMAAAXAMAXAMMSAMAXSAMXAAASXMAMXXXSASAMSSMSXAMMXXMMAMXMAMSMXAAAXMXMSAAASMSMSMAMMAMAMMMXSMMSXXXSA
|
||||
AMAMXSSMSXXMAMXXXMMMSSMMMXXSAMXAAXAASASXAXMASAMSMMMSMMMSMMMMSXMXAMASMMMMMSMAMAMXMAXMAAMMMMASXSMAMSMXXXAMSMMMXAXMMMMMAMAAMSXSAMMAAAAXAMXXSASM
|
||||
MMXMAMAAAASXMXXMXAXAXAXAXAXMAASXSXMXMAMXXSMMSXMAAXAMASXAXMAASASXAMXMMXAAAAMAMAMXXSMSMMMXMAMSAASXMAAXMMSMMAASMMSMSMXMAMSMSAASMMMMSMMSSMAAMMMX
|
||||
XAAMSSMMMAMAMASXMMMXSMMMMMSSSMSAXAMAMAMXXMAAMASMSMASXMSMMMMMXMASXXXSXSMMMSXXMAXXAXAMXAAXXMSMMMMXSMSSXAAASMMSXAAAAXXSAXMXSMMMMAMXXAAAAMXMXXAX
|
||||
XSXXMAMXXMSXMASXAXMMMXASAXAXMAMAMXSASXMMXSMMSAMAMXMMAXXXASMMSAMAMXAXXMMSXMASXMSMAMAMMXAXMMAAMMMXSXAMMSSMMMAMMMMSMSAMXXAAXAMXSAMMSMMSSMAMAMAM
|
||||
MAMXXXMAXMXMAMMMSMMASXXSASMXMSMSMXMAMXMAXSMMMAMAMASXMMMXMAAAAXXAXMAXSXAMAMAMAAXXAXSMMMMAASMMMAMMMMMSAAXAMMSMAMAMXSXMXMMMSSMAMXXXAAAAAMAXASAS
|
||||
XSXSMSMSMASXSMSMMMMASMAMAXMAMAAASXMAMXMSXMAXSMMMSAMXXMAMMSMMSMSXXASMSMXSMMSSMMMXXXXAXAMXXMAXSAXAAAXMMMXXMAMMAMXSMMAMXAAAXAMXSAMSAMMSSSXMAMAS
|
||||
AMASXAAAAXXAMAAAMSMMXMAMXMSSSMMMMMSSMSAMASXMAASAMASXSMXSXAAMMAMMMXMAXAMAAAAAAXXASASMMXSXASXMSASXSSSSSSSXMASMMMXSASAMMSMMSMMAMAXSMMXXMAMMSMAM
|
||||
AMAMSMSMSMMMMSSSMAMAMMSXMXAMXAAAXMAAMMAMAMAASXMAMAMAAAMSMSSMSSSMSMMSMSASMMSSSMSXMASASAMMAMAAMAMMAMXAAAAMMAMAASXSASXSAASAAXMXSSMMAXXAMAMAXAMX
|
||||
SMAMXXAXAAAAXMAXMMMASXMASMMSXSSMMAXMASXMXSMMXMSSMXXSMMMMAMXAAAXAAXXAAMMXAMAAAAAXSXMAMASXMAMXMMMASMMMMMMMMSMSMMAMAMAXMAMXSMSXMAMXAMSXMXMXSSXX
|
||||
ASXSXSMSMSMSSMAMXXMAXXMXMAMAAMAXAMMXMSXMAMXAMMAXXAMXMAMMXMMMMMMXMSMMSMASXMMSMMMAMAMXMXMXXAMMSSMAMMAAXAAXMXMXAMXMSMMMSMSAXASXMAMMSMMAXSXAXAMM
|
||||
AAMMASAAXAAXMMSMSMSMSASXXXMXMMAMMXMAMXXMASAMAMASXXAAXSXMAXAXXXSAASMSMMXMAMXAXXMAXXMASMMMMXSAAAMSSSSSSMXSAAXXAXMAXAMXAAAAMMMAMXSXMASMMMMMSMAA
|
||||
XXAMAMMSSMSMXAMSMAAAXAXAASMSAMSMXXXMSMMSASASMSASMSSMSMAMMMMSMAXMXMMAAAXSAMMSMXSSMMMXXAAAAAMMSMMAAMAAXMASMMMSSMSMSXMMMSMSMXSAMXMAMXMAMAAAAXXS
|
||||
MSSMMSXMMMMXMASAMMMSMMMMMAAXMAMMXSXXAAXMXSMMXMAXAMXMAMAMXXAAMXMSASMSXMMXASAAXXXXAXSSSSMSMMXMMAMMXMMMMMMXAXXAMAAXMMSMMAXMAAMMSSMAMSSSMSMSSSMX
|
||||
XAXAASAMXASAMXSXSAXAASAASMMMMAXSAMXXMSMSXSASAMXMSMSSMSMSAMSXMMAMASAMSXMMXMMSSMMMSMAAXAXAMMAXSXMAMXXMAAMXMSXMMSMSMAMASMSMMMSMAMXASAAAXMAMAAMX
|
||||
SSSMMSSMMMSMSMMASXSMMMXXXAMXSMMMMSSMAMAMASXMXXXAXAMXXAXMAXMASXSMAMAMAXMASAMXAAAAMMMMMXSXSXMXXAMMSMASXMSAAAMXXAAXMASXMAMAXMAMAMXMMMSMMMSMSMMS
|
||||
XXAMXMXSXAXXAXMMSASXSSMMSSMMMXAAAAAMXMAMAMAXMMSAMXMMMMXMMMSAMAXMMMMMMXAASAMSSMMXSAXXAMMASAMXXMMAAMXMAASMSMSXSMMMSASXMASAMSASXSXMAMAMXAAXXAXA
|
||||
MSMSAMXAMASASXMXMAMAAAAMAMAAAMSSMSSMASXMSSMMAASAMASXMSAAAXMAMXMASASAXXMASAMXMSMAXMAMSAMASMMSMAMSXMAMMMMAMASAMMSMMASXMXMMXSASAAMXSSMSMMSSSSMM
|
||||
ASASXSAMXAMAMASAMAMMMSMMASMMSMXAXMAMASAAAAASMXSAMAXAAASXMXSAMSAMSASASXMASAMXAAMMSXAXMSMXMXAASAMAASXSAAMXMAMAMAAAMAMXMAMSAMSMMAMAMAMXAAAMAAAX
|
||||
SMAMMMMXAMMAMXSXSSXMAXXSMMXAMXSMMSAMXSXMSSMMMXSAMXSMMMXXSASXSXSAMXMMXMMXSXMMSMSXSMXSXXMASMSXSSSXMASMXXSAMXSMMSSSMXSXSXSMMSXMASMXSAMSMMSMSMMM
|
||||
14
2024/Day05CSharp/Day05CSharp.csproj
Normal file
14
2024/Day05CSharp/Day05CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
196
2024/Day05CSharp/Program.cs
Normal file
196
2024/Day05CSharp/Program.cs
Normal file
@@ -0,0 +1,196 @@
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
var exParsed = new Day05Parsed("example-input.txt");
|
||||
|
||||
Console.WriteLine("Example Part01: {0}", exParsed.GetPart01());
|
||||
Console.WriteLine("Example Part02: {0}", exParsed.GetPart02());
|
||||
|
||||
var pzParsed = new Day05Parsed("puzzle-input.txt");
|
||||
|
||||
Console.WriteLine("Puzzle Part01: {0}", pzParsed.GetPart01());
|
||||
Console.WriteLine("Puzzle Part02: {0}", pzParsed.GetPart02());
|
||||
|
||||
class Day05Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
public class Page : IComparable<Page>
|
||||
{
|
||||
public static Dictionary<int, HashSet<int>> RulesByPage = new Dictionary<int, HashSet<int>>();
|
||||
|
||||
public Page(int value) => Value = value;
|
||||
|
||||
public int Value { get; set; }
|
||||
|
||||
public int CompareTo(Page? other)
|
||||
{
|
||||
if (other == null) throw new Exception("Other is null");
|
||||
|
||||
if (this.Value == other.Value) return 0;
|
||||
|
||||
if (!RulesByPage.ContainsKey(this.Value))
|
||||
{
|
||||
// If there's no key, then this MUST be at the end so its the "biggest"
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (RulesByPage[this.Value].Contains(other.Value))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
else if (RulesByPage[other.Value].Contains(this.Value))
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
throw new Exception("Unable to compare!");
|
||||
}
|
||||
}
|
||||
public class OrderingRule
|
||||
{
|
||||
public OrderingRule(string line)
|
||||
{
|
||||
LeftPage = Int32.Parse(line.Split('|')[0]);
|
||||
RightPage = Int32.Parse(line.Split('|')[1]);
|
||||
}
|
||||
|
||||
public int LeftPage { get; set; }
|
||||
public int RightPage { get; set; }
|
||||
}
|
||||
|
||||
public class Update
|
||||
{
|
||||
public Update(string[] pages)
|
||||
{
|
||||
foreach (var page in pages)
|
||||
{
|
||||
Pages.Add(Int32.Parse(page));
|
||||
}
|
||||
}
|
||||
|
||||
public List<int> Pages { get; set; } = new List<int>();
|
||||
}
|
||||
|
||||
public Dictionary<int, HashSet<int>> RulesByPage { get; set; } = new Dictionary<int, HashSet<int>>();
|
||||
|
||||
public List<OrderingRule> Rules { get; set; } = new List<OrderingRule>();
|
||||
public List<Update> Updates { get; set; } = new List<Update>();
|
||||
|
||||
public Day05Parsed(string fileName) : base(fileName)
|
||||
{
|
||||
foreach (var rule in Rules)
|
||||
{
|
||||
if (RulesByPage.ContainsKey(rule.LeftPage))
|
||||
{
|
||||
RulesByPage[rule.LeftPage].Add(rule.RightPage);
|
||||
}
|
||||
else
|
||||
{
|
||||
RulesByPage.Add(rule.LeftPage, new HashSet<int>() { rule.RightPage });
|
||||
}
|
||||
}
|
||||
|
||||
Page.RulesByPage = RulesByPage;
|
||||
}
|
||||
|
||||
public override int GetPart01()
|
||||
{
|
||||
List<Update> validUpdates = new List<Update>();
|
||||
|
||||
Updates.ForEach(update => {
|
||||
if (IsUpdateValid(update)) validUpdates.Add(update);
|
||||
});
|
||||
|
||||
// We have all the valid updates, now get the "middle" item
|
||||
int middlePageNumberSum = 0;
|
||||
|
||||
foreach (var update in validUpdates)
|
||||
{
|
||||
middlePageNumberSum += update.Pages[update.Pages.Count / 2];
|
||||
}
|
||||
|
||||
return middlePageNumberSum;
|
||||
}
|
||||
|
||||
public override int GetPart02()
|
||||
{
|
||||
List<Update> invalidUpdates = new List<Update>();
|
||||
|
||||
Updates.ForEach(update => {
|
||||
if (!IsUpdateValid(update)) invalidUpdates.Add(update);
|
||||
});
|
||||
|
||||
|
||||
int middleSum = 0;
|
||||
|
||||
foreach (var update in invalidUpdates)
|
||||
{
|
||||
List<Page> pages = new List<Page>();
|
||||
|
||||
foreach (var page in update.Pages)
|
||||
{
|
||||
pages.Add(new Page(page));
|
||||
}
|
||||
|
||||
pages.Sort();
|
||||
|
||||
middleSum += pages[pages.Count / 2].Value;
|
||||
}
|
||||
|
||||
return middleSum;
|
||||
}
|
||||
|
||||
|
||||
private bool IsUpdateValid(Update update)
|
||||
{
|
||||
bool isUpdateValid = true;
|
||||
|
||||
for (int pageIndex = 0; pageIndex < update.Pages.Count; pageIndex++)
|
||||
{
|
||||
if (!RulesByPage.ContainsKey(update.Pages[pageIndex]))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var rules = RulesByPage[update.Pages[pageIndex]];
|
||||
|
||||
// Make sure current page has rules that say its before all the subsequent pages
|
||||
for (int subIndex = pageIndex + 1; subIndex < update.Pages.Count; subIndex++)
|
||||
{
|
||||
if (!rules.Contains(update.Pages[subIndex]))
|
||||
{
|
||||
isUpdateValid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Go backwards and make sure none of the previous pages have an existing rule
|
||||
for (int i = 0; i < pageIndex; i++)
|
||||
{
|
||||
if (rules.Contains(update.Pages[i]))
|
||||
{
|
||||
isUpdateValid = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return isUpdateValid;
|
||||
}
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
if (line.Contains('|'))
|
||||
{
|
||||
// It's a rule
|
||||
Rules.Add(new OrderingRule(line));
|
||||
}
|
||||
else if (!String.IsNullOrWhiteSpace(line))
|
||||
{
|
||||
// Must be an update
|
||||
string[] pages = line.Split(',');
|
||||
|
||||
Updates.Add(new Update(pages));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
8
2024/Day05CSharp/Properties/launchSettings.json
Normal file
8
2024/Day05CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day05CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day05CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
28
2024/Day05CSharp/example-input.txt
Normal file
28
2024/Day05CSharp/example-input.txt
Normal file
@@ -0,0 +1,28 @@
|
||||
47|53
|
||||
97|13
|
||||
97|61
|
||||
97|47
|
||||
75|29
|
||||
61|13
|
||||
75|53
|
||||
29|13
|
||||
97|29
|
||||
53|29
|
||||
61|53
|
||||
97|53
|
||||
61|29
|
||||
47|13
|
||||
75|47
|
||||
97|75
|
||||
47|61
|
||||
75|61
|
||||
47|29
|
||||
75|13
|
||||
53|13
|
||||
|
||||
75,47,61,53,29
|
||||
97,61,53,29,13
|
||||
75,29,13
|
||||
75,97,47,61,53
|
||||
61,13,29
|
||||
97,13,75,29,47
|
||||
1380
2024/Day05CSharp/puzzle-input.txt
Normal file
1380
2024/Day05CSharp/puzzle-input.txt
Normal file
File diff suppressed because it is too large
Load Diff
14
2024/Day06CSharp/Day06CSharp.csproj
Normal file
14
2024/Day06CSharp/Day06CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
334
2024/Day06CSharp/Program.cs
Normal file
334
2024/Day06CSharp/Program.cs
Normal file
@@ -0,0 +1,334 @@
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text.Json;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
var exParsed = new Day06Parsed("example-input.txt");
|
||||
|
||||
Console.WriteLine("Example Part01: {0}", exParsed.GetPart01());
|
||||
Console.WriteLine("Example Part02: {0}", exParsed.GetPart02());
|
||||
|
||||
var pzParsed = new Day06Parsed("puzzle-input.txt");
|
||||
|
||||
Console.WriteLine("Puzzle Part01: {0}", pzParsed.GetPart01());
|
||||
Console.WriteLine("Puzzle Part02: {0}", pzParsed.GetPart02());
|
||||
|
||||
class Day06Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
public enum Direction
|
||||
{
|
||||
UP,
|
||||
DOWN,
|
||||
LEFT,
|
||||
RIGHT
|
||||
}
|
||||
|
||||
public enum BLOCK_STATE
|
||||
{
|
||||
UNTOUCHED,
|
||||
OBSTACLE,
|
||||
VISITED
|
||||
}
|
||||
|
||||
public class GridSquare
|
||||
{
|
||||
public GridSquare(BLOCK_STATE state)
|
||||
{
|
||||
State = state;
|
||||
}
|
||||
|
||||
public BLOCK_STATE State { get; set; } = BLOCK_STATE.UNTOUCHED;
|
||||
|
||||
public bool hasVisited() { return State == BLOCK_STATE.VISITED; }
|
||||
|
||||
public bool VisitedFacingUp { get; set; } = false;
|
||||
public bool VisitedFacingDown { get; set; } = false;
|
||||
public bool VisitedFacingLeft { get; set; } = false;
|
||||
public bool VisitedFacingRight { get; set; } = false;
|
||||
|
||||
public GridSquare Clone()
|
||||
{
|
||||
return (GridSquare)MemberwiseClone();
|
||||
}
|
||||
}
|
||||
|
||||
public class Guard
|
||||
{
|
||||
public Guard() { }
|
||||
public Guard(Guard other)
|
||||
{
|
||||
CurrentDirection = other.CurrentDirection;
|
||||
X = other.X;
|
||||
Y = other.Y;
|
||||
IsGone = other.IsGone;
|
||||
}
|
||||
|
||||
public Direction CurrentDirection { get; set; }
|
||||
public int X { get; set; }
|
||||
public int Y { get; set; }
|
||||
public bool IsGone { get; set; } = false;
|
||||
|
||||
public Guard Clone()
|
||||
{
|
||||
return (Guard)MemberwiseClone();
|
||||
}
|
||||
}
|
||||
|
||||
public class Level
|
||||
{
|
||||
public List<List<GridSquare>> Grid { get; set; } = new List<List<GridSquare>>();
|
||||
public Guard SecurityGuard { get; set; } = new Guard();
|
||||
|
||||
public int CountVisited() => Grid.SelectMany(x => x).Count(x => x.State == BLOCK_STATE.VISITED);
|
||||
|
||||
public bool GuardIsAround()
|
||||
{
|
||||
return SecurityGuard.X >= 0 && SecurityGuard.Y >= 0;
|
||||
}
|
||||
|
||||
public enum SIMULATION_RESULT
|
||||
{
|
||||
CONTINUE,
|
||||
DONE,
|
||||
LOOP
|
||||
}
|
||||
|
||||
public SIMULATION_RESULT SimStep()
|
||||
{
|
||||
if (SecurityGuard.IsGone) return SIMULATION_RESULT.DONE;
|
||||
|
||||
try
|
||||
{
|
||||
int newY = SecurityGuard.Y, newX = SecurityGuard.X;
|
||||
|
||||
switch (SecurityGuard.CurrentDirection)
|
||||
{
|
||||
case Direction.UP:
|
||||
newY = SecurityGuard.Y-1;
|
||||
break;
|
||||
case Direction.DOWN:
|
||||
newY = SecurityGuard.Y+1;
|
||||
break;
|
||||
case Direction.LEFT:
|
||||
newX = SecurityGuard.X-1;
|
||||
break;
|
||||
case Direction.RIGHT:
|
||||
newX = SecurityGuard.X+1;
|
||||
break;
|
||||
}
|
||||
|
||||
if (Grid[newY][newX].State == BLOCK_STATE.OBSTACLE)
|
||||
{
|
||||
switch (SecurityGuard.CurrentDirection)
|
||||
{
|
||||
case Direction.UP:
|
||||
SecurityGuard.CurrentDirection = Direction.RIGHT;
|
||||
break;
|
||||
case Direction.DOWN:
|
||||
SecurityGuard.CurrentDirection = Direction.LEFT;
|
||||
break;
|
||||
case Direction.LEFT:
|
||||
SecurityGuard.CurrentDirection = Direction.UP;
|
||||
break;
|
||||
case Direction.RIGHT:
|
||||
SecurityGuard.CurrentDirection = Direction.DOWN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (Grid[newY][newX].State == BLOCK_STATE.VISITED)
|
||||
{
|
||||
// We've already visited this block, check if we're looping
|
||||
bool hasLooped = false;
|
||||
|
||||
switch (SecurityGuard.CurrentDirection)
|
||||
{
|
||||
case Direction.UP:
|
||||
if (Grid[newY][newX].VisitedFacingUp) hasLooped = true;
|
||||
break;
|
||||
case Direction.DOWN:
|
||||
if (Grid[newY][newX].VisitedFacingDown) hasLooped = true;
|
||||
break;
|
||||
case Direction.LEFT:
|
||||
if (Grid[newY][newX].VisitedFacingLeft) hasLooped = true;
|
||||
break;
|
||||
case Direction.RIGHT:
|
||||
if (Grid[newY][newX].VisitedFacingRight) hasLooped = true;
|
||||
break;
|
||||
default:
|
||||
throw new Exception("Unknown direction");
|
||||
}
|
||||
|
||||
if (hasLooped) return SIMULATION_RESULT.LOOP;
|
||||
}
|
||||
|
||||
SecurityGuard.X = newX;
|
||||
SecurityGuard.Y = newY;
|
||||
|
||||
Grid[newY][newX].State = BLOCK_STATE.VISITED;
|
||||
switch (SecurityGuard.CurrentDirection)
|
||||
{
|
||||
case Direction.UP:
|
||||
Grid[newY][newX].VisitedFacingUp = true;
|
||||
break;
|
||||
case Direction.DOWN:
|
||||
Grid[newY][newX].VisitedFacingDown = true;
|
||||
break;
|
||||
case Direction.LEFT:
|
||||
Grid[newY][newX].VisitedFacingLeft = true;
|
||||
break;
|
||||
case Direction.RIGHT:
|
||||
Grid[newY][newX].VisitedFacingRight = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// Guard left the area
|
||||
SecurityGuard.IsGone = true;
|
||||
return SIMULATION_RESULT.DONE;
|
||||
}
|
||||
|
||||
return SIMULATION_RESULT.CONTINUE;
|
||||
}
|
||||
|
||||
public SIMULATION_RESULT SimulateAll()
|
||||
{
|
||||
SIMULATION_RESULT result;
|
||||
|
||||
for (result = SIMULATION_RESULT.CONTINUE; result == SIMULATION_RESULT.CONTINUE; result = SimStep());
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public Level Clone()
|
||||
{
|
||||
bool useJson = false;
|
||||
|
||||
if (!useJson)
|
||||
{
|
||||
Level other = new Level();
|
||||
|
||||
// Copy the grid
|
||||
foreach (var row in this.Grid)
|
||||
{
|
||||
List<GridSquare> newRow = new List<GridSquare>();
|
||||
foreach (var s in row)
|
||||
{
|
||||
newRow.Add(s.Clone());
|
||||
}
|
||||
other.Grid.Add(newRow);
|
||||
}
|
||||
|
||||
// Copy the guard
|
||||
other.SecurityGuard = SecurityGuard.Clone();
|
||||
|
||||
return other;
|
||||
}
|
||||
else
|
||||
{
|
||||
var jsonString = JsonSerializer.Serialize(this);
|
||||
var copy = JsonSerializer.Deserialize<Level>(jsonString);
|
||||
if (copy == null) throw new Exception("Failed to clone");
|
||||
return copy;
|
||||
}
|
||||
}
|
||||
|
||||
public GridSquare GetGridSquare(int x, int y) => Grid[y][x];
|
||||
}
|
||||
|
||||
Level CurrentLevel { get; set; } = new Level();
|
||||
|
||||
public Day06Parsed(string fileName) : base(fileName)
|
||||
{
|
||||
}
|
||||
|
||||
public override int GetPart01()
|
||||
{
|
||||
var level = CurrentLevel.Clone();
|
||||
level.SimulateAll();
|
||||
return level.CountVisited();
|
||||
}
|
||||
|
||||
public override int GetPart02()
|
||||
{
|
||||
// First simulate everything as a base
|
||||
var simulatedOriginalLevel = CurrentLevel.Clone();
|
||||
simulatedOriginalLevel.SimulateAll();
|
||||
|
||||
int loops = 0;
|
||||
|
||||
// Iterate across the level and find loops
|
||||
List<(int,int)> visited = new List<(int,int)>();
|
||||
|
||||
for (int y = 0; y < simulatedOriginalLevel.Grid.Count; y++)
|
||||
{
|
||||
for (int x = 0; x < simulatedOriginalLevel.Grid[y].Count; x++)
|
||||
{
|
||||
if (simulatedOriginalLevel.Grid[y][x].State == BLOCK_STATE.VISITED)
|
||||
{
|
||||
visited.Add((x, y));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Run simulations in parallel because we can
|
||||
Parallel.ForEach(visited, coords =>
|
||||
{
|
||||
int x = coords.Item1;
|
||||
int y = coords.Item2;
|
||||
//var loopTest = coords.Item3;
|
||||
|
||||
var loopTest = CurrentLevel.Clone();
|
||||
loopTest.GetGridSquare(x, y).State = BLOCK_STATE.OBSTACLE;
|
||||
var result = loopTest.SimulateAll();
|
||||
if (result == Level.SIMULATION_RESULT.LOOP) loops++;
|
||||
});
|
||||
|
||||
return loops;
|
||||
}
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
List<GridSquare> list = new List<GridSquare>();
|
||||
|
||||
int index = 0;
|
||||
foreach (char c in line)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case '.':
|
||||
list.Add(new GridSquare(BLOCK_STATE.UNTOUCHED));
|
||||
break;
|
||||
case '#':
|
||||
list.Add(new GridSquare(BLOCK_STATE.OBSTACLE));
|
||||
break;
|
||||
case '^':
|
||||
var gridSquare = new GridSquare(BLOCK_STATE.VISITED);
|
||||
|
||||
int guardY = CurrentLevel.Grid.Count;
|
||||
int guardX = index;
|
||||
|
||||
CurrentLevel.SecurityGuard.CurrentDirection = Direction.UP;
|
||||
CurrentLevel.SecurityGuard.X = guardX;
|
||||
CurrentLevel.SecurityGuard.Y = guardY;
|
||||
|
||||
gridSquare.VisitedFacingUp = true;
|
||||
|
||||
list.Add(gridSquare);
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new Exception("Unknown character");
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
|
||||
CurrentLevel.Grid.Add(list);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
8
2024/Day06CSharp/Properties/launchSettings.json
Normal file
8
2024/Day06CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day06CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day06CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
10
2024/Day06CSharp/example-input.txt
Normal file
10
2024/Day06CSharp/example-input.txt
Normal file
@@ -0,0 +1,10 @@
|
||||
....#.....
|
||||
.........#
|
||||
..........
|
||||
..#.......
|
||||
.......#..
|
||||
..........
|
||||
.#..^.....
|
||||
........#.
|
||||
#.........
|
||||
......#...
|
||||
130
2024/Day06CSharp/puzzle-input.txt
Normal file
130
2024/Day06CSharp/puzzle-input.txt
Normal file
@@ -0,0 +1,130 @@
|
||||
........................#........#................#.............#..#....#.#.#.........#........##..................#..#...........
|
||||
.#........#......##........#.................................................#.#.........#......#.................................
|
||||
...........#.#.##.#.........#.#..#............#.....................................................#.............#...............
|
||||
..........#...............#......#...............#.#..............................#..........#........#..#...##.........#..#......
|
||||
..........................................................#...........................................#...........................
|
||||
................#.....#.............#...........................................................#.....#..........#...#...##.......
|
||||
.....................#......#....................#..................#.....................#................................#......
|
||||
......#........#.........#.....................................#......................#...........#................#.......#......
|
||||
.........#.......#...#..................##.#...#...........#.......#............#...#....#...........#................#...........
|
||||
..........................................#..........................#........#.....##............#.........................#.....
|
||||
..........#...................##.......#.............#....##..............#.........#..............#........#..........#....#.....
|
||||
.#....##........#.....................................#...#.............................#..............#.....#....................
|
||||
....#..#................................................#.......#..........#.....#.....#..........................................
|
||||
.............##...............#..........#...............................................#............#..............#..##....#...
|
||||
......#...............#...............#.........................................................................#.#..............#
|
||||
......#........................................................................................#.......#.....#................#...
|
||||
.......#..#...#.............................#......#.....#........................................#.........................#..##.
|
||||
.................................#..................#.......#......#...................#...................#.......#............#.
|
||||
......#....................#.........................#........................................................#...#.......#..#..#.
|
||||
..##....#...............................#.................#....#........#......#..........#....#........#..................#......
|
||||
..................#..........#................................#.........#...........#..#......#.....................#.............
|
||||
##.................................................#..............#....#...............#..........................................
|
||||
....#..............#.............#..........................................................................#................#....
|
||||
..................................................#...#..#.......#................................................#...........#...
|
||||
.....#.......#...............................................................#......#.....#......................................#
|
||||
....#....................##....................#............#................................#..#....#....#..........#............
|
||||
.#.........................#.....................#..........................##............................................#.......
|
||||
.......................#.........................................#................................................................
|
||||
...............#........................................................................#..........#.............................#
|
||||
.#..............................#..#....................#........................#......#.#......#.......#....................#..#
|
||||
..........................#........#.........#.........#...#..#................#........#.........................#...............
|
||||
..#.................................#.........#......................#............................................................
|
||||
...........................#..............................................#.................#...............#.....................
|
||||
..........#..................#.............................................#.......................#..............................
|
||||
....................#............##..........................#...............#..........#.......................................#.
|
||||
....................#....#.....................................................................#.................................#
|
||||
....#.......#...................#....#.#....#..................................#.#....#..#.............................#.....##...
|
||||
.............#.#...................................................................#........#..............................#......
|
||||
.......................#.....................#.......#.........................................#..........#.......................
|
||||
...............#..............#..................................#.............#..................................................
|
||||
......................................................................................#........#......................#.....#.....
|
||||
.........#.....................................................#................#..........................#........###...........
|
||||
...................#..##...............#......................#...................................................................
|
||||
.............#........................................#..................................#.#.#....................................
|
||||
......#............#.........................#..........#..#.................................................................##...
|
||||
............#...............#..................................#...........#...............................#...........#..........
|
||||
................#.......#.......................#................#.............#................................#.................
|
||||
.........................#.#.........#..#.....#.....................................#................................#............
|
||||
..#...............#..#..........................#.#.....#....................#....................................................
|
||||
................................................................................#..........#..............#.......................
|
||||
............#.#......#......#........#..................#...#.....................................................................
|
||||
....#......................#........................#..................#......#.....#.............................................
|
||||
.#..................#...........................#..........#..........................................#....#......................
|
||||
...............#......................#.......#.....#...#.................#...............................................#.......
|
||||
#...#.......#..............................................................................................#...........#......#...
|
||||
........................#......................#..........#...............................##......#...........................#...
|
||||
....................#....#..............#.....#.....#................#............................................................
|
||||
................#........................................................................................#........................
|
||||
...##................#.............#..............................................................................................
|
||||
.#....#........................................................................................................................##.
|
||||
..#...................................#......#.#......#...................#........#.............................#....##..........
|
||||
.......................................................#..#....#..#.................................................#.............
|
||||
............#..................#......#.....#...........................................................#..#........#............#
|
||||
..#................................#....................................................................#.............#......#....
|
||||
..#..........#........#..............................................................................................#............
|
||||
.....#.....................#..............#.................................#................................#...#................
|
||||
........................#........#..................................................................................#.............
|
||||
...#...........#.............................................#....................#....#..........#...............................
|
||||
...................#...........#...................................................................#...........#..................
|
||||
...........#............................#......................................................................................##.
|
||||
#..............#.#.......................................#.......................#.....#...........#.......#...........#.##.......
|
||||
..............................................................##.........................................#.............#.........#
|
||||
...........................#.#..................................................#..................#..#...........................
|
||||
.....................................#...............#.....#...................................#..................................
|
||||
..#...................#.#....#...#......................................................#.#..................................#....
|
||||
..........................................#......................................................................#................
|
||||
.............#...................................................................#...#....#........#...................#..........
|
||||
.......................#.......................................##...........#......#......#..............................#........
|
||||
.......#..............#..............#..............................................................#............................#
|
||||
...........................................#...#.......#......#...............................#.........#.........................
|
||||
.......#...................................................#........................^..#..........................................
|
||||
.#..........................................................................................#.......#.#..#........................
|
||||
............................##........................................................................#..#........................
|
||||
..........#.#..#....#.##........................#.................................................................................
|
||||
......#.#...................................#...#...................#.............#.....#.........................................
|
||||
.................#........................................................................................#..#.#..................
|
||||
#....................#.......................................#..#..#.....#..............#......................................#..
|
||||
..............#.#............................................................#.....#......................................#......#
|
||||
....................#.......#.............................#..............#.........................................##.............
|
||||
.....#................................#.#...........#...........#.......................................#...#....#................
|
||||
...............#...#......................#............................#..................................#.......................
|
||||
....#........##...............................................................#......#...#.........#.....#..................#.....
|
||||
...............................#......................................................................#...........................
|
||||
............................#.............................#........##...............#................#....#...#..............#....
|
||||
.......................#................#.......#........................................................................#........
|
||||
..................................................................................#......................#.......#.#..............
|
||||
........#.........................#........#.........................#.......................#......................#......#......
|
||||
.........................#..#...........#..#.......................#.#.................#..........................................
|
||||
......#.................#......................................................................#........................#.........
|
||||
......................................##..........#...........................#........#...........#..............................
|
||||
.......................................#...........................#.........#....#................#...............#..............
|
||||
...........#...........#.........................#.......#.................#....#.#...........#..................#.##...........#.
|
||||
...#..................#..#...............#..#...................................#.......#................#...................#....
|
||||
...............#............#.......#.............#............#......###.............#.............................#..........#..
|
||||
.......................................#...........................................#........#...........#.........................
|
||||
................#...........#.....#..#...........##..................##..........#....#.....#...#........#........................
|
||||
...............................##.............................................................#..........#...#....#...............
|
||||
............#.................#...##.........#.......................................................................#............
|
||||
...........#.#............................#...............##...........................................#............#....#........
|
||||
...............................................#...........................................#..........#......................#....
|
||||
......................................#........................................#.....................##...........#.....#..#.#....
|
||||
..............................#.......#...#.#...............................................................................##....
|
||||
................##......#..#.......#...........#............#.#......#..#................#..#.....#..................##...........
|
||||
#.....#...........................#....................#.........................................................................#
|
||||
............#.............#........#........#.#...............#...........................#.........#.............#......#........
|
||||
#...#.........#.....#...................................................#.........................................................
|
||||
.....................#...........#....................#.....#............##..........#....#..........#......#..........#..........
|
||||
...................................#.........#.....#.................................#..........................................#.
|
||||
......................................................#.........#.................................................................
|
||||
...............#..............#........................................................................##.......#.............##..
|
||||
...............#.......#.........#.........................#.......................##.............................................
|
||||
..................#....................................#......................................................##...#....#.......#.
|
||||
..#........#.....#...............#...............................#.........................#.#........#....#......................
|
||||
..#.............#.......##...#......#....................................................................................#........
|
||||
............................#.......#...........#.............#.............#..........................#..........................
|
||||
.............#........................#........................................................#.........#........................
|
||||
.#............#.....#...........................................#..#............................#..............#..........#.......
|
||||
................#.....................................#..............................#............................................
|
||||
..................#........................................#.#.................................................................#..
|
||||
.#............#.......#..................................#....#.................................................#..............#.#
|
||||
14
2024/Day07CSharp/Day07CSharp.csproj
Normal file
14
2024/Day07CSharp/Day07CSharp.csproj
Normal file
@@ -0,0 +1,14 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\AdventCommon\AdventCommon.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
98
2024/Day07CSharp/Program.cs
Normal file
98
2024/Day07CSharp/Program.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
// See https://aka.ms/new-console-template for more information
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
var exParsed = new Day07Parsed("example-input.txt");
|
||||
|
||||
Console.WriteLine("Example Part01: {0}", exParsed.GetPart01());
|
||||
Console.WriteLine("Example Part02: {0}", exParsed.GetPart02());
|
||||
|
||||
var pzParsed = new Day07Parsed("puzzle-input.txt");
|
||||
|
||||
Console.WriteLine("Puzzle Part01: {0}", pzParsed.GetPart01());
|
||||
Console.WriteLine("Puzzle Part02: {0}", pzParsed.GetPart02());
|
||||
|
||||
class Day07Parsed : AdventCommon.ParsedInput
|
||||
{
|
||||
class Equation
|
||||
{
|
||||
public long LeftHandSide { get; set; }
|
||||
public List<long> RightHandSide { get; set; } = new List<int>();
|
||||
|
||||
public int MaxOpCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return RightHandSide.Count - 1;
|
||||
}
|
||||
}
|
||||
|
||||
List<long> ValidOps { get; set; } = new List<long>();
|
||||
|
||||
public bool IsValid()
|
||||
{
|
||||
for (int i = 0; i < (int)Math.Pow(2,MaxOpCount); i++)
|
||||
{
|
||||
long eqTotal = RightHandSide[0];
|
||||
|
||||
// a value of 0 for a given bit is +, 1 is *
|
||||
for (int opIndex = 0; opIndex < MaxOpCount; opIndex++)
|
||||
{
|
||||
if ((i & (1 << opIndex)) == 0)
|
||||
{
|
||||
eqTotal += RightHandSide[opIndex + 1];
|
||||
} else
|
||||
{
|
||||
eqTotal *= RightHandSide[opIndex + 1];
|
||||
}
|
||||
|
||||
if (eqTotal > LeftHandSide)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (eqTotal == LeftHandSide)
|
||||
{
|
||||
ValidOps.Add(i);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public override int GetPart01()
|
||||
{
|
||||
int sum = 0;
|
||||
foreach (var equation in Equations)
|
||||
{
|
||||
if (equation.IsValid())
|
||||
{
|
||||
sum += equation.LeftHandSide;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
List<Equation> Equations { get; set; } = new List<Equation>();
|
||||
|
||||
public Day07Parsed(string fileName) : base(fileName) { }
|
||||
|
||||
public override bool ParseLine(string line, object? context = null)
|
||||
{
|
||||
Equation equation = new Equation();
|
||||
|
||||
equation.LeftHandSide = Int32.Parse(line.Split(':')[0].Trim());
|
||||
|
||||
foreach (var v in line.Split(':')[1].Split(' ', StringSplitOptions.RemoveEmptyEntries))
|
||||
{
|
||||
equation.RightHandSide.Add(Int32.Parse(v));
|
||||
}
|
||||
|
||||
Equations.Add(equation);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
8
2024/Day07CSharp/Properties/launchSettings.json
Normal file
8
2024/Day07CSharp/Properties/launchSettings.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"profiles": {
|
||||
"Day07CSharp": {
|
||||
"commandName": "Project",
|
||||
"workingDirectory": "C:\\dev\\dev-drive\\DevSandbox\\AdventOfCode\\2024\\Day07CSharp"
|
||||
}
|
||||
}
|
||||
}
|
||||
9
2024/Day07CSharp/example-input.txt
Normal file
9
2024/Day07CSharp/example-input.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
190: 10 19
|
||||
3267: 81 40 27
|
||||
83: 17 5
|
||||
156: 15 6
|
||||
7290: 6 8 6 15
|
||||
161011: 16 10 13
|
||||
192: 17 8 14
|
||||
21037: 9 7 18 13
|
||||
292: 11 6 16 20
|
||||
850
2024/Day07CSharp/puzzle-input.txt
Normal file
850
2024/Day07CSharp/puzzle-input.txt
Normal file
@@ -0,0 +1,850 @@
|
||||
80453: 65 232 17 4 253 1 1
|
||||
11072880: 9 5 91 338 8
|
||||
251359026: 801 36 2 1 4 7 9 34 3 3
|
||||
5146105932: 3 4 73 2 105 4 1 8 6 4 8
|
||||
3217192: 32 99 49 156 33
|
||||
1240885: 980 2 568 2 2 4 85
|
||||
761411281: 8 13 16 4 1 79 76 3 6 5 8
|
||||
1773078: 300 75 788 6 78
|
||||
363734176: 5 10 32 928 2 7 177 1 1
|
||||
44388674: 64 8 9 82 4 49 75
|
||||
2405604276: 3 9 9 4 85 9 433 3 991 7
|
||||
693989: 693 333 1 30 628
|
||||
13925303275: 7 909 38 6 4 186 327 5
|
||||
63263200: 63 7 79 16 715
|
||||
8544146: 58 33 5 89 147
|
||||
869069580: 564 99 233 31 16 5
|
||||
14736199074: 5 997 63 9 3 819 4 46
|
||||
61182660: 3 3 2 95 77 697
|
||||
8680: 4 84 376 7 8
|
||||
1796382720: 934 9 62 9 6 6 64 5 1 2 8
|
||||
1158: 100 968 8 74 6
|
||||
309536: 4 64 569 4 2
|
||||
98070674452: 7 815 1 191 6 30 3 3 2 2
|
||||
765702: 6 3 85 70 3
|
||||
486500: 44 2 37 556 7
|
||||
857641310086: 653 1 1 4 9 41 8 7 5 4 8 8
|
||||
12655: 970 2 81 63 6 151
|
||||
11037: 5 8 5 49 9 657 1 1 567
|
||||
15426904: 6 9 156 2 7 5 74 14 86 3
|
||||
255584836: 82 317 56 3 2 5 5 981 1
|
||||
2795079846: 9 31 693 260 23 3
|
||||
59474651: 9 2 33 1 472 1 42 123 4
|
||||
31392: 5 3 8 7 4 22 7 326 709 8
|
||||
202335: 3 1 195 2 615 719
|
||||
10072161288612: 329 76 973 414 6 12
|
||||
304800: 62 8 12 8 75 1
|
||||
410694814: 7 74 2 9 9 7 8 4 602 6 22
|
||||
37200044757: 590 3 9 5 27 3 7 21 57
|
||||
1879341: 238 388 44 6 3 3
|
||||
1199889306: 52 8 4 1 9 8 11 8 316 18
|
||||
531918519: 9 4 48 1 504 1 8 7 189 8
|
||||
13077712: 653 88 52 2 6
|
||||
2861487998: 74 58 10 921 379 97
|
||||
7476829: 51 274 535 645 94
|
||||
162477: 2 799 4 64 9 97
|
||||
166412: 7 78 8 9 975 1 3
|
||||
451743: 3 4 624 7 6 9 578 7 1 1 2
|
||||
92311037059: 9 4 4 9 7 1 9 61 9 91 51 7
|
||||
67295279430: 2 82 3 1 4 67 7 99 6 2 9
|
||||
8793: 822 1 4 1 10 476 1 39 8
|
||||
3794488742: 949 7 425 5 84 8 211 2
|
||||
1579094: 2 97 2 5 72 54 2 563 3
|
||||
25871540: 4 14 7 871 539
|
||||
805: 3 777 23 4
|
||||
592118916732: 30 783 6 71 7 24 7 7 9 4
|
||||
995405888: 625 5 158 546 9 416
|
||||
6335512: 633 509 2 39 9
|
||||
24861: 322 77 65
|
||||
70077355183: 2 6 685 3 773 551 74 7
|
||||
7674310: 64 2 98 595 1
|
||||
53167296001: 50 4 50 60 510 10 52 8
|
||||
9921503: 21 79 9 91 2 4 3 3 2 9 8 5
|
||||
26477554: 7 214 1 9 557 943 2
|
||||
4451398: 8 5 2 9 355 9 179 3 6 4 2
|
||||
18133152: 3 185 8 87 96
|
||||
4075412211: 815 5 3 1 247 875 13
|
||||
149028: 749 27 32 6 6
|
||||
3932866: 9 25 971 5 9 3 6 6 8 8 12
|
||||
2115650020: 77 223 86 61 4 205
|
||||
31439100: 9 64 8 19 72 87 7 7 4 75
|
||||
16388: 3 27 8 74 87
|
||||
1418098: 1 4 47 5 7 7 6 5 6 85
|
||||
178644: 9 7 1 864 2
|
||||
350280828: 4 15 7 3 713 315 825
|
||||
307320304: 4 985 78 30 4
|
||||
2362320: 7 5 158 85 144
|
||||
142823: 307 9 134 32 1 44
|
||||
2721809: 30 907 6 48 8 69 84
|
||||
3950727505: 2 20 5 3 13 7 9 5 43 7 5 2
|
||||
131968643: 2 9 2 1 4 1 1 903 730 8 2
|
||||
2757417345: 851 193 93 4 64 71 1
|
||||
572376238: 7 647 87 814 74
|
||||
11313873117: 3 36 68 3 7 6 5 786 478
|
||||
445454: 25 3 2 88 11 8 50 7
|
||||
241: 17 1 8 3 3 7
|
||||
265704964: 7 54 2 5 7 1 8 29 2 6 1 4
|
||||
25524498: 8 573 348 8 2 14 764 8
|
||||
41898086205: 20 94 1 872 31 824
|
||||
30006791: 28 6 4 4 5 3 6 8 864 7 2 1
|
||||
161840: 44 4 48 8 7 3
|
||||
529760419: 9 3 6 8 85 8 1 22 1 208 2
|
||||
10827556512: 500 581 1 4 3 5 5 6 515
|
||||
278813227280163: 9 968 913 352 50 5 4 8
|
||||
107410: 1 4 5 74 11
|
||||
111966: 6 703 59 85 391 9 7
|
||||
1820799016210: 1 43 9 58 9 9 5 1 1 62 10
|
||||
34086: 51 2 6 1 46 2 90 9 409
|
||||
658814461: 4 82 68 6 76 8 5 2 784
|
||||
6248684908090: 762 965 19 3 7 49 2 39
|
||||
49325079: 39 87 367 227 23 73 9
|
||||
128180486: 419 8 956 4 6
|
||||
12146408: 482 70 3 6 4 2
|
||||
46151352: 4 7 1 6 5 5 17 8 8 5 5 950
|
||||
268237: 6 51 4 78 37
|
||||
75087: 7 149 7 1 213 7 71 469
|
||||
2030410: 57 9 10 7 4 554
|
||||
8190500163: 21 7 12 9 946 538 7
|
||||
4627959995970: 66 7 1 7 959 995 9 73
|
||||
472457: 471 180 941 304 33
|
||||
2843491: 9 2 1 5 2 59 990 71 9
|
||||
1662060690: 281 528 94 83 2 59 8 3
|
||||
71528448486: 4 51 6 758 44 2 8 73 5
|
||||
159099841: 7 231 81 1 22
|
||||
12663773526: 4 2 2 11 6 3 6 47 5 22 2
|
||||
927300212: 9 4 4 90 781 2 2 85 388
|
||||
6782849: 4 6 5 3 68 8 8 598 1 8 8
|
||||
299601: 287 1 83 2 62 355 5 4 2
|
||||
51682789: 4 9 44 68 9 9 6 579 5 86
|
||||
153393346: 22 66 7 45 9 427
|
||||
102623: 89 3 8 48 7 82 6
|
||||
27139448: 79 6 3 8 1 681 7 9 8 2 9
|
||||
44209555513: 44 209 55 49 6 13
|
||||
19102: 9 970 1 1 19 6 96 9 390
|
||||
90534: 8 5 830 104 54
|
||||
25134318083801: 364 9 984 869 7 803
|
||||
84393891730: 7 85 7 405 403 91 3 55
|
||||
790: 1 19 5 63 5
|
||||
12009921: 3 50 8 9 921
|
||||
9781206: 4 473 8 858 6 3
|
||||
5218166016: 5 51 5 4 558 2 7 8 6 7 7
|
||||
14119: 3 2 435 32 7
|
||||
219619443: 586 9 359 114 38 4 9 3
|
||||
494506865160: 8 3 4 12 84 7 2 7 8 603 5
|
||||
25643796039: 18 694 3 4 5 5 5 2 67 9 7
|
||||
6715112: 9 2 8 201 29 1 4 2 4 1 99
|
||||
4608: 4 433 1 2 1 1 2 40 5 18
|
||||
991684: 5 3 9 77 27
|
||||
369627102: 461 342 691 88 8
|
||||
12453: 67 2 1 45 9 1 51
|
||||
41985868: 4 457 208 9 867
|
||||
230112045: 2 14 340 940 5 9 37 8
|
||||
1558443235357: 25 4 5 740 3 2 3 9 22 6 6
|
||||
7658313312: 2 463 1 31 4 557 897 4
|
||||
21551778: 536 7 441 7 9 1 41
|
||||
350465040: 2 1 740 2 800 6 4 4 37 4
|
||||
99964808: 9 4 534 52 10
|
||||
5550930: 52 7 37 238 1 405
|
||||
22715297428: 8 739 7 14 782 8 217
|
||||
384007419: 320 120 7 41 8
|
||||
25916002: 16 42 9 80 550
|
||||
80805925: 5 676 2 6 733 4 4 6
|
||||
136800: 227 1 5 15 8
|
||||
2656155: 9 6 74 53 8 82 9
|
||||
16286: 1 7 7 676 61
|
||||
1139100: 92 2 146 83 7
|
||||
623772543: 529 89 6 51 725 40
|
||||
1142: 14 42 23 42 405 84
|
||||
50415: 50 841 7 14 30 4 7
|
||||
301413: 42 9 6 99 900 92 849
|
||||
848103923: 6 14 810 392 4
|
||||
53940: 51 54 741 24 62
|
||||
144491721762: 1 2 994 46 8 6 3 33 19 7
|
||||
45386287: 784 29 437 39 931 37
|
||||
10108943: 130 877 3 894 4
|
||||
21658: 9 1 5 7 55 47 4 4 82 4 1 2
|
||||
759325513853792: 83 95 963 138 5 37 93
|
||||
722643: 289 8 4 24 92 153
|
||||
399639247996: 3 370 109 36 79 95
|
||||
3051058: 40 2 280 11 38
|
||||
1202: 4 962 233 1 2
|
||||
4727573267: 6 69 9 367 57 1 1 4 70 1
|
||||
52677907: 49 461 313 10 33 7
|
||||
10050892265: 5 86 35 915 8 922 66
|
||||
2987: 34 79 78 217 6
|
||||
583746: 583 7 46
|
||||
9646: 36 7 38 1 69
|
||||
2807723736: 46 137 41 495 9 9
|
||||
18826860280: 8 8 547 76 3 1 8 8 1 44 8
|
||||
971981682: 97 1 9 453 363 82
|
||||
5977403: 8 51 1 77 393 7
|
||||
14303180: 528 901 4 9 178
|
||||
36134415: 6 4 20 7 7 2 931 463 9
|
||||
35109: 38 634 30 50 9
|
||||
12606003: 4 4 5 75 764
|
||||
17683203483: 5 3 6 73 323 95 4 1 255
|
||||
355577: 901 7 795 9 5 8 16
|
||||
654126: 7 7 1 6 89 5 8 5 1 5 6 96
|
||||
762858: 7 636 3 754 9 152 1 6
|
||||
4466521: 67 7 4 6 77 4 57 1
|
||||
40257693486: 349 1 2 9 10 8 71 37 4 9
|
||||
26709004: 3 4 151 981 84 98 2
|
||||
32746679: 71 79 6 648 9
|
||||
39625: 1 4 748 52 469
|
||||
9709: 97 248 9 617 1
|
||||
144459502: 1 164 42 4 23 651 2
|
||||
235672: 360 61 128 82 31 4 89
|
||||
514215: 8 61 110 30 41 5 4 25 3
|
||||
626870234975: 9 3 5 6 25 2 67 14 497 4
|
||||
343752250: 902 74 103 1 50
|
||||
867: 2 8 2 41 2 45
|
||||
229252821: 9 6 339 6 49 919
|
||||
335358: 353 95 8
|
||||
1260845177: 3 93 45 1 533 515 2 2 5
|
||||
35513409: 5 8 74 558 2 31 367
|
||||
4811913: 473 7 6 2 2 5 3 45 38 73
|
||||
1593555586: 9 122 2 54 2 7 1 1 5 5 8 8
|
||||
386835: 187 5 4 6 8 934 205
|
||||
6294685256: 9 62 4 113 9 6 7 4 662
|
||||
2094621: 9 9 5 826 127 8 6 7 1 6
|
||||
223546540: 3 7 5 3 87 6 5 571 28 8 5
|
||||
3562: 306 1 501
|
||||
3251820: 6 34 5 3 639 6 6 102 9 4
|
||||
47425: 4 3 8 80 5 7 8 5 8 1 58 6
|
||||
17359545: 577 1 15 3 21 131 1 2 3
|
||||
44797453: 57 44 8 44 5 1 4 51
|
||||
1167206: 35 6 5 116 427 779
|
||||
44153: 6 8 19 659
|
||||
661320: 5 5 6 6 5 402 7 6 3 167
|
||||
459856: 535 24 1 8 82
|
||||
1093763483: 4 2 64 11 7 6 7 685 9 8
|
||||
587890: 58 1 1 6 46 1 9 1 79 5 3
|
||||
3152812902: 38 9 1 72 4 6 8 4 3 5 70
|
||||
991368: 991 3 5 8 7
|
||||
26501810: 1 24 356 287 9 27 230
|
||||
831526448802: 203 30 72 409 800
|
||||
107361118: 3 7 18 93 9 9 509 802
|
||||
903435238: 991 2 214 6 355
|
||||
2494172365978: 5 42 4 958 42 8 7 29 6 4
|
||||
66960781: 9 63 930 7 80
|
||||
2954430774: 29 9 62 85 9 723 50 2
|
||||
1843044: 1 5 3 959 4 8 17 7 5 7 7 6
|
||||
1515944541939: 639 77 237 861 13 6
|
||||
15580038: 2 7 69 16 6 24 7 390
|
||||
557225206481: 85 72 69 65 27 8 6 478
|
||||
663960349137: 4 36 37 6 404 767 111
|
||||
446472: 9 9 8 689 1
|
||||
55448739: 553 7 7 840 34 1 10
|
||||
139151273: 8 6 1 608 2 2 3 8 1 1 27 2
|
||||
8745053673: 5 10 83 9 29 6 634 9 3 6
|
||||
567594: 4 8 2 3 472 5 7 52 94 4 2
|
||||
1563994: 6 4 5 401 78 89 5
|
||||
113165: 537 7 6 2 2 1 546 5
|
||||
3191: 237 1 745 1 78
|
||||
2692218: 10 964 691 4 9 73
|
||||
1339821860: 670 33 619 9 9 40 589
|
||||
496620: 5 4 2 2 154 587 888 36
|
||||
1414877058462: 360 9 3 8 4 1 98 459 2
|
||||
1491097042: 1 710 21 1 8 6 945 99
|
||||
445501530: 4 45 5 90 142 8 5 25
|
||||
647931: 17 90 7 113 7 42 1
|
||||
1215: 4 7 1 93 3
|
||||
31518901471558: 8 41 851 9 52 3 944 1 8
|
||||
1797: 1 5 9 69 8 9 991 8 650 8
|
||||
9543: 89 41 43 9 547
|
||||
132436687408: 55 3 5 4 583 2 925 8 8 3
|
||||
13224041600: 1 4 748 902 784 5 1 1
|
||||
33761367370: 722 868 481 2 8 56 6 4
|
||||
427416: 46 23 172 36 63 105
|
||||
32747264: 13 4 7 1 2 8 4 6 4 8 8 29
|
||||
2839: 458 6 7 3 81
|
||||
3430168: 921 4 3 66 7 9 4 9 7 6 2 4
|
||||
346202395: 341 5 125 77 396
|
||||
16819164083: 552 549 555 7 3 7
|
||||
41630: 15 793 8 89 46
|
||||
48577788812329: 771 9 68 4 7 81 2 3 28
|
||||
13311605: 18 739 5 81 376 3 8
|
||||
704954971: 747 5 248 540 7 91
|
||||
29030550: 7 1 20 3 8 4 4 1 105 39 6
|
||||
66521838: 4 371 5 8 310 9 3 8 5 5
|
||||
380988: 5 3 39 7 96 3 4 7
|
||||
123491364: 17 46 842 84 274
|
||||
2025360000: 79 1 1 580 10 45 97
|
||||
55161058858: 9 913 636 222 354 5 8
|
||||
2507866928: 70 4 457 356 6
|
||||
4912132550: 97 1 2 3 5 1 1 4 3 254 9 1
|
||||
56991: 32 4 74 2 6 43 6 1 98
|
||||
661189130: 7 4 6 2 4 39 9 5 917 5 7 1
|
||||
13350852: 6 59 1 5 2 320 839 1 6 9
|
||||
6790: 9 1 15 1 8 84 4 62 5
|
||||
22855536: 3 3 4 396 614
|
||||
199118969: 7 1 5 9 42 554 9 4 7 8 7
|
||||
402931407: 36 8 8 5 4 4 1 743 873
|
||||
5695722994: 982 58 757 472 94
|
||||
54060007: 7 60 15 7 858
|
||||
3759488: 4 9 41 87 1 802 9 4 2 8 4
|
||||
1719433: 1 625 8 936 31
|
||||
3701529415: 790 32 562 45 4 12
|
||||
268276291: 46 6 8 5 9 9 762 92
|
||||
1129772527: 26 899 7 3 7 2 1 530
|
||||
64155: 6 761 7 1 2 2 4 194 20 9
|
||||
53740: 9 5 2 3 6 115 9 7 1 704 2
|
||||
5177612188: 4 88 457 36 4 70 13 2
|
||||
51687: 4 1 8 6 62 4 1 9 908 686
|
||||
171158415: 759 41 55 39 18
|
||||
160706087: 5 356 86 3 5 9 6 3
|
||||
375053: 1 9 164 4 1 57 507 569
|
||||
227289829: 2 9 184 5 6 6 10 7 2 98
|
||||
371838930252: 37 18 389 2 56 46 51
|
||||
363488: 864 7 42 315 1
|
||||
1779996: 329 3 90 74 57
|
||||
4874444999: 5 193 82 1 5 7 176 7 5 6
|
||||
5253: 3 49 5 1 3
|
||||
815: 5 3 65 8 5
|
||||
38820: 865 44 11 5 744
|
||||
3980: 9 8 2 3 6 1 76 5 3 2 8 4
|
||||
2057374: 33 7 565 11 34
|
||||
126929: 6 3 9 7 927
|
||||
121779: 555 53 3 6 87 34 165 9
|
||||
41269: 157 5 52 448 3
|
||||
1095433: 316 1 33 493 32
|
||||
759: 2 1 9 69
|
||||
9590393: 304 15 6 798 3
|
||||
8186291236: 818 62 91 238 1
|
||||
156397000: 6 9 6 4 6 2 1 783 88 250
|
||||
140024803776: 2 488 505 54 807 4 88
|
||||
253929288: 552 46 9 28 9
|
||||
53475506: 562 58 32 95 6
|
||||
316964278497: 566 56 427 8 48 1 4
|
||||
1987: 9 3 73 8 8
|
||||
18061344: 6 330 1 96 87 9 6 7 6 35
|
||||
1093604: 6 269 913 7 92
|
||||
52749645553: 1 975 6 4 2 8 7 172 7 9 7
|
||||
55123: 5 689 2 8 3
|
||||
1018: 9 43 66 7
|
||||
45663: 34 4 12 35 28
|
||||
221867989: 913 27 1 99 3 797 9
|
||||
17413621878: 290 227 6 13 5 78
|
||||
39627552: 81 91 896 169 6 33 7 2
|
||||
623627490: 3 7 260 3 1 27 3 6 470
|
||||
210555237: 1 1 6 319 2 2 2 3 6 23 5
|
||||
111797277: 5 837 4 4 1 981 8 5 9 8 6
|
||||
4489668616: 3 663 30 9 4 6 22 57 7
|
||||
70992: 61 648 9 4
|
||||
10136086086: 8 515 36 246 7 5 411
|
||||
125553456: 415 19 84 9 4
|
||||
432099851242: 3 9 8 9 5 998 5 1 17 7 2 1
|
||||
1197740: 57 15 53 14
|
||||
9841: 3 51 2 6 2 24 52 6 104 7
|
||||
1095765: 251 9 1 2 7 32 4 5 6 1 4 5
|
||||
1418604: 153 843 4 1 487 954 6
|
||||
395781: 40 38 98 4 54
|
||||
19638635: 2 2 4 71 49 722 9 226
|
||||
4122: 1 2 963 4 225
|
||||
259532427: 59 7 1 434 426
|
||||
9280106: 256 725 3 5 86 5
|
||||
36067626950: 89 15 83 8 27 953
|
||||
1320: 9 59 553 146 93
|
||||
144106119080: 98 94 971 6 15 77
|
||||
14557125649733: 8 1 8 554 811 986 8 7 5
|
||||
1677997: 1 26 63 1 385 4 9 94
|
||||
336386821: 10 5 32 550 73 187 7
|
||||
59025094863: 4 4 36 287 39 6 779 3
|
||||
96589446: 7 91 675 9 818 5 3 2
|
||||
7317283837: 4 60 18 67 114 34 3
|
||||
90806: 7 2 7 7 92
|
||||
96480541939: 459 431 15 21 21
|
||||
873: 33 1 4 23
|
||||
1695206159: 221 851 285 2 4 90
|
||||
6130571: 2 61 61 5 68
|
||||
39372208: 1 8 8 7 99 20 35 4 7 8
|
||||
18612096: 4 112 16 94 5 5 60 96
|
||||
6853511: 85 51 587 75 1 9
|
||||
266310616: 40 1 8 9 8 66 6 1 6
|
||||
9981672331684: 53 4 4 68 76 4 981 7 4
|
||||
44867478: 4 4 8 649 9 8 4 92 7 379
|
||||
76841: 18 4 754 93 23
|
||||
43763: 429 83 24 45 653 58
|
||||
362472323020: 891 1 3 53 17 9 460 4 5
|
||||
46448727: 7 1 5 3 9 6 81 8 6 6 67 6
|
||||
2461730: 82 3 17 32
|
||||
5284: 63 20 5 60 6
|
||||
116: 55 54 7
|
||||
939960134464: 71 752 681 95 7 1 131
|
||||
953880648: 2 362 8 67 83 503
|
||||
2976255212785: 87 4 3 30 95 7 3 2 786
|
||||
62433231224: 52 43 2 292 2 5 698 1
|
||||
2687832: 68 77 97 252 2
|
||||
9445356541: 5 8 37 30 5 5 163 41 9 1
|
||||
340425769: 12 73 89 45 772
|
||||
1097: 4 8 54 459 1 2 46
|
||||
5042559329287: 9 7 2 2 5 5 796 8 8 81 2 7
|
||||
10847196: 69 6 4 3 898 4 2 4 9 9 30
|
||||
18516887: 661 2 91 28 740
|
||||
391114505: 7 3 19 3 5 2 5 386 7 15 5
|
||||
28751890: 7 5 4 53 62 11 85 88 7 3
|
||||
3775884100: 65 101 4 50 58
|
||||
4291172291: 395 831 5 246 7 91
|
||||
4553304576: 93 765 376 8 64
|
||||
262: 4 56 66 88 48
|
||||
5949008: 586 8 80 320 691
|
||||
21516: 94 1 54 2 498 2
|
||||
499402575: 975 156 6 616 6 3 545
|
||||
15886516: 6 23 8 45 914 314
|
||||
566023992: 3 45 3 6 119 14 35
|
||||
1788409: 57 663 31 854 2
|
||||
761967136: 17 46 60 884 904
|
||||
1348913535713: 47 287 13 535 714
|
||||
1793: 4 424 1 2 86 8
|
||||
1541149: 570 52 7 35 7 5 1 89 7
|
||||
879: 26 357 496
|
||||
19725338: 52 7 995 48 7 458
|
||||
1407751082089: 9 5 7 7 91 9 138 7 5 49 8
|
||||
119: 2 3 2 53 6
|
||||
967365: 967 3 66
|
||||
75140232: 75 139 743 457 29
|
||||
2095326: 54 715 57 6 3 1 806 3 9
|
||||
8469341066: 4 3 66 4 8 8 66 2 8 907 9
|
||||
4527087: 2 20 17 93 9 30 86
|
||||
14688: 27 1 9 5 5 3 4 6 9 5 94 14
|
||||
764545: 2 8 1 4 37 66 594 9 67
|
||||
10374592350: 110 351 17 94 349
|
||||
93138130236: 7 225 5 2 8 5 4 1 29 591
|
||||
6309501: 381 92 5 2 4 2 6 9 1 6 1 8
|
||||
144372247: 67 59 267 8 7
|
||||
32204: 8 333 63 78 7 8 592 85
|
||||
12794630625: 395 789 6 88 48 5 5 45
|
||||
147538: 92 47 8 535 4
|
||||
341844: 506 7 7 1 6 2 8 8 1 976 3
|
||||
113702: 9 76 166 149 8
|
||||
1523526690: 3 91 5 41 6 140 93 6 90
|
||||
4914429: 44 5 6 51 4 438 69
|
||||
20976: 36 8 64 1 40 3 9 46
|
||||
645125222: 5 15 7 8 20 7 4 4 8 58 9 2
|
||||
18774236: 474 50 35 7 358
|
||||
65485435: 8 5 7 6 8 7 5 517 4 69 9 3
|
||||
43201942787: 54 686 79 278 7
|
||||
2213: 579 651 2 418 2 8 553
|
||||
1925205028706: 7 3 7 3 4 4 3 887 8 654 6
|
||||
2196748: 5 5 122 311 8 2 6 487 4
|
||||
7402752: 9 33 72 8 3 102
|
||||
135500: 767 969 1 78 14
|
||||
8821063171: 94 209 449 9 173
|
||||
16207705800: 7 2 130 22 834 755
|
||||
67661: 3 18 641 14 60
|
||||
2704169: 3 1 1 51 3 1 2 72 6 9 283
|
||||
4658180909: 36 5 4 6 566 5 81 8 8 80
|
||||
7562497803: 75 549 75 977 2 3 78
|
||||
108818150: 141 45 49 1 4 2 25 7
|
||||
55201563135: 51 4 194 7 563 138
|
||||
17: 9 4 4
|
||||
280065690098: 64 1 9 7 41 9 49 84 775
|
||||
250635474: 7 574 770 7 393 5 9 1 9
|
||||
22949642: 75 995 383 5 7 8 2
|
||||
3338140: 7 3 26 963 1 2 9 4 1 370
|
||||
8629264656: 63 89 45 2 68 342
|
||||
17658484538: 966 914 1 227 20
|
||||
990156: 2 987 973 178 4
|
||||
5098320: 49 6 67 4 6 5 9 776 5 9
|
||||
83260: 802 8 84 11 92
|
||||
91848: 288 47 9 267 1
|
||||
113480: 67 9 34 3 480
|
||||
187926960: 5 82 8 310 871
|
||||
928486: 871 2 95 35 2 61 871
|
||||
38547: 494 78 1 8 6
|
||||
350258: 8 4 99 5 8 4 9 6 6 78 8 2
|
||||
32403520: 9 8 4 16 111 1 8 3 5 40 8
|
||||
64168545: 2 14 13 1 4 1 228
|
||||
4901: 5 1 96 5
|
||||
32185440: 61 3 744 31 40 4 7
|
||||
1791603: 179 91 867 1 95
|
||||
312242: 77 3 7 6 8 5 3
|
||||
1968834563: 948 59 1 5 65 88 4
|
||||
96959: 358 27 22 7 9
|
||||
10843626757: 299 57 87 532 633
|
||||
188756400: 1 3 586 31 49 805
|
||||
9878383: 15 462 879 5 253
|
||||
223460: 7 446 4 300 295 145
|
||||
6522815: 24 4 3 1 5 1 6 349 5
|
||||
319259894: 57 56 595 3 97
|
||||
16356414611: 4 9 625 5 345 5 3 3 1 2 2
|
||||
10925466561: 79 52 834 66 561
|
||||
210847: 2 5 2 154 83 8 63 7 91
|
||||
9771484818: 2 64 371 9 44 21 5 4
|
||||
1517: 7 1 9 701 797
|
||||
366017164: 14 22 60 17 161
|
||||
705406145: 2 278 3 57 11 9 7 3 7 39
|
||||
4320: 8 54 2
|
||||
1136938409: 1 6 411 4 794 7 619 71
|
||||
26151: 4 5 645 714 4 75
|
||||
12141509451: 64 3 1 7 22 3 7 9 1 4 6 7
|
||||
6643619611: 277 72 54 4 443
|
||||
37988330: 51 8 67 310 31
|
||||
344528998: 353 976 989 5 5
|
||||
86260: 4 3 85 7 705 25 3 2 61 6
|
||||
207821952: 9 3 442 933 7 52 9 32
|
||||
68857957: 1 377 50 85 666 44 5
|
||||
22549414: 3 5 7 517 6 7 9 10 403 8
|
||||
91219296896: 4 91 1 362 784 883
|
||||
13340717: 7 9 74 601 5 8 54 3 6 4 7
|
||||
13277825: 236 6 7 98 7 4 53 25
|
||||
34904568801: 3 5 4 7 720 8 2 327 3 66
|
||||
365440507746: 35 75 291 232 91 6
|
||||
1217646: 87 7 310 1 883 3
|
||||
4542786: 4 5 114 3 78 13 2 3 74
|
||||
2487245: 76 58 2 94 6 5
|
||||
71519: 3 7 5 337 71 4 2 3 62 3 7
|
||||
367213749: 1 5 918 171 9 2 4
|
||||
394549089609: 4 5 1 977 3 727 240 4 9
|
||||
117940712: 4 897 69 46 349
|
||||
147064770258: 41 3 69 8 81 918 8 483
|
||||
10138575600: 6 50 6 474 51 233 1
|
||||
11877: 6 5 319 9 4
|
||||
10018771: 9 8 89 5 7 4 2 5 15 9 421
|
||||
4919: 328 1 817 85 4
|
||||
1399115897647: 4 62 6 7 7 42 8 60 54 9
|
||||
702776: 8 7 483 97 8
|
||||
63862: 3 71 863
|
||||
12256176: 8 5 3 8 6 834 126 3 4 6 8
|
||||
33442856: 899 186 25 7 8
|
||||
3609624055: 7 7 8 9 9 5 2 9 704 701 3
|
||||
1730553335: 24 2 9 505 67 66 333 4
|
||||
223848: 5 471 5 6 588 3 1 1 29 8
|
||||
410887: 6 36 6 369 61 55
|
||||
71437850: 34 7 7 9 1 74 8 9 1 2 8 2
|
||||
22671: 27 793 1 336 924
|
||||
189519651: 920 89 21 5 98
|
||||
35790480396: 2 4 5 6 9 7 810 1 8 1 395
|
||||
1938893491925: 8 9 153 4 4 2 10 59 88 3
|
||||
15984845871: 465 289 53 11 4 6 4 3 1
|
||||
4178671207: 7 9 1 8 73 26 2 86 5 8 5 7
|
||||
583945973953: 8 8 8 923 71 2 5 44 33
|
||||
4632752: 734 7 5 621 9 4
|
||||
26197367269: 1 2 803 328 98 7 26 4 3
|
||||
538104: 267 2 20 94 4 1 7
|
||||
619952448: 65 9 4 6 83 4 76 10 7 10
|
||||
517041: 752 8 85 22 8 8
|
||||
97747: 3 47 630 13 34
|
||||
6739294: 91 23 88 309 5
|
||||
1637457526: 33 660 5 5 11 27 3 53
|
||||
7369541154800: 602 9 2 535 979 649 4
|
||||
3452722: 60 9 7 56 31 23
|
||||
106641041: 1 32 7 2 9 3 3 6 204 7 5 9
|
||||
12139856: 8 6 42 74 279 4 1
|
||||
8144806: 8 9 9 4 8 8 18 8 9 2 80 6
|
||||
20728968: 285 7 3 8 6 3 9 6 85 1 4 6
|
||||
824529024: 759 4 6 328 138
|
||||
24066223: 9 14 191 22 10
|
||||
15546301: 8 18 18 190 881
|
||||
2250828: 7 4 958 62 2 8 2 44 2 3
|
||||
75450608: 24 2 969 8 1 150 501 8
|
||||
879206487920: 794 3 391 805 944
|
||||
54038971: 540 38 75 21 9 2
|
||||
171363: 1 91 58 3 85 8
|
||||
885: 5 1 29 32 5
|
||||
139205608: 582 436 823 774 2 83
|
||||
39041232: 4 9 4 4 94 8 5 1 610 5 1 2
|
||||
828: 263 1 3 24 12
|
||||
3639213: 255 2 4 4 5 178
|
||||
962: 3 1 8 938 12
|
||||
925: 21 4 1 8 6 68
|
||||
5612850981: 8 8 1 76 1 9 63 88 87 45
|
||||
402040748: 5 874 92 672 76
|
||||
6343584591: 90 7 2 1 8 388 9 845 8 9
|
||||
36893: 2 91 6 733 246 3 8 5
|
||||
239916393: 7 1 765 424 2 449 731
|
||||
6784649: 643 9 5 259 647
|
||||
1834: 83 826 7 1 2
|
||||
19808: 95 2 5 116 1 5 5 2 5 4 4 2
|
||||
199130: 497 9 2 390 981 24 1 4
|
||||
218513331718: 25 571 6 91 9 6 39 5 17
|
||||
10024: 939 9 7 40 6 66
|
||||
12273646: 1 414 6 2 8 2 3 1 6 9 7 22
|
||||
13043384735: 3 2 570 56 9 4 5 5 3 644
|
||||
5929930318: 474 255 2 39 28 8 3 26
|
||||
3105664675: 8 1 701 4 2 4 2 4 674
|
||||
33549: 799 867 4 5 40 1 5
|
||||
19491: 13 2 46 3 5 3 970 6 7 6
|
||||
7281282: 49 23 8 1 2 83
|
||||
2941225352: 6 88 2 985 1 8 648 1 6 2
|
||||
743842143: 3 46 5 2 9 1 9 592 1 6 50
|
||||
3770861494685: 3 9 639 5 18 7 755 6 6 5
|
||||
230900220: 49 645 6 401 9 93 135
|
||||
139021: 27 5 3 91 8 9 96
|
||||
2339418: 687 798 5 35 9 545
|
||||
17623875: 6 3 160 2 3 45 4 4 252 3
|
||||
7093008549: 1 737 8 4 4 9 9 6 4 5 49 3
|
||||
2161990244728: 2 2 56 1 9 803 9 473 30
|
||||
4233496995055: 1 9 79 569 70 850 6 9
|
||||
49611735: 3 8 398 8 9 5 68 4 11 2 2
|
||||
314315: 4 479 11 2 7
|
||||
15718188186: 260 6 9 2 818 8 1 81 2
|
||||
241: 24 1 1
|
||||
3010: 6 48 5 4 78
|
||||
1135: 1 4 281 2 9
|
||||
81773: 40 5 43 18
|
||||
30460941: 78 7 6 9 2 815 8 3 6 1 2 2
|
||||
35705061092: 6 9 39 8 2 816 6 7 5 6 9 3
|
||||
25386661278: 4 6 5 7 82 11 64 1 2 7 5
|
||||
1759980508: 33 68 323 9 386 5
|
||||
9285284808: 519 9 943 31 963 68
|
||||
825411626: 85 6 98 359 902 9 46
|
||||
181828: 27 55 66
|
||||
3339156: 31 1 6 78 145 158
|
||||
1828013722: 5 3 2 4 9 4 42 2 1 3 9 260
|
||||
14583391061: 46 2 40 35 35 83 5 61
|
||||
11615: 1 5 54 196 50
|
||||
125065785: 9 770 2 1 52 2 8 7 4 4 7 6
|
||||
3838169: 8 1 70 7 47 922 2 8 42
|
||||
757453: 23 392 84 104 5
|
||||
25565938: 4 2 9 536 563 1 464
|
||||
31650181: 380 2 8 52 8 69 5 206
|
||||
1550195111: 7 14 2 210 5 13 6 510 9
|
||||
2288: 4 6 8 848 79 996
|
||||
10906: 2 2 4 3 574
|
||||
1857247825: 1 5 1 3 3 3 4 7 993 6 34
|
||||
519606584: 591 91 478 3 7 456 8 7
|
||||
2387585200: 909 1 445 44 134
|
||||
240706: 5 48 706
|
||||
69652758240: 4 4 95 74 9 3 2 3 5 9 4 8
|
||||
1708581168: 515 1 15 667 783 28
|
||||
3529: 6 47 8 294 1 9 951 5 8 6
|
||||
2325425: 579 6 8 95 487
|
||||
9741670662: 1 4 7 3 42 2 9 9 2 4 773 5
|
||||
38772: 75 62 188 8 68
|
||||
6401764: 2 4 367 34 7 66
|
||||
155361598651: 3 9 65 8 5 8 142 6 7 8 9 1
|
||||
77114165613: 114 1 84 821 7 2 7 1 9 2
|
||||
129739783188: 21 4 5 7 96 1 8 1 2 2 317
|
||||
5352096010: 985 566 96 1 2
|
||||
83015410: 3 734 29 65 5 2
|
||||
13959262: 93 86 951 82 484
|
||||
131105147: 69 190 49 18 232
|
||||
80465240: 2 7 48 277 19 2 34 7
|
||||
4187717: 760 9 8 544 6 1
|
||||
66632: 8 2 9 4 4 4 5 764 5 1 40 8
|
||||
16701: 12 9 3 56 2 50
|
||||
476608899: 2 7 36 3 57 6 509 125 4
|
||||
65111177648: 9 41 1 1 3 7 3 6 2 4 7 48
|
||||
3764967: 6 105 26 44 8 8 75 76
|
||||
249938: 4 2 5 6 6 8 5 4 58 8 9 984
|
||||
12144922: 487 1 41 23 913 9
|
||||
55495023: 8 867 87 8 8
|
||||
2533544483: 8 6 4 776 6 8 9 5 3 2 84
|
||||
49882405: 3 9 20 7 5 8 4 7 120 2 8
|
||||
531821285: 9 413 6 356 59 8
|
||||
982: 5 1 3 423 550
|
||||
2035142: 437 388 2 71 7 6 2
|
||||
251946: 9 3 5 8 185 5 708
|
||||
2889: 32 1 9
|
||||
38035751: 425 6 25 5 706
|
||||
1706128499: 47 363 284 97 1
|
||||
15084993: 21 5 71 2 106 21 77
|
||||
115693001: 2 5 2 151 25 6 5 192 2 7
|
||||
4116653112: 5 48 887 75 6 15
|
||||
972753516650: 979 92 1 77 3 4 9 59 6 1
|
||||
3036153: 416 4 99 650 9
|
||||
1451700796: 211 688 47 160 99
|
||||
541867381: 451 556 12 70 108
|
||||
10564977526: 6 7 1 1 3 2 29 31 4 505 5
|
||||
196219884: 96 1 66 203 86
|
||||
283035968424: 6 83 97 1 99 982 4 53 8
|
||||
326432: 3 522 19 5 5 2 6 1 6 2 8 2
|
||||
2612707589: 5 9 8 1 9 7 86 1 3 94 7 7
|
||||
43451622: 567 26 650 3 941 6
|
||||
5630: 58 503 1 2 8
|
||||
4309231498: 85 178 7 190 375 84
|
||||
111142473: 623 9 479 42 3 7 6 7 35
|
||||
7433090320: 387 14 24 29 80 3
|
||||
6215287915: 9 417 102 9 66
|
||||
135649560682: 90 4 33 15 55 5 679
|
||||
50611810415: 2 2 2 178 87 985 8 79
|
||||
4899685: 78 86 44 97 7 18
|
||||
35154763576: 2 39 84 637 7 7 1 5 74
|
||||
365264770: 913 4 64 186 584
|
||||
8019: 84 798 5 4 9
|
||||
2508: 1 24 83 389 60 2 65 1
|
||||
5458136777: 53 6 9 81 3 6 2 5 5 522
|
||||
2757995051: 29 951 948 31 222
|
||||
764140: 7 6 413 7
|
||||
3995924243581: 648 689 560 325 11 6
|
||||
154058630934: 303 504 846 1 28 61 6
|
||||
1427638: 8 13 21 593 632 5
|
||||
21098550233: 4 1 1 69 824 65 45 98 6
|
||||
178: 50 46 82
|
||||
119341: 45 57 78 15
|
||||
1001625: 6 6 2 821 2
|
||||
107025: 78 28 9 64 61
|
||||
6827328: 346 3 7 4 930 21 45 3
|
||||
747730884: 29 96 954 65 4 2 8 2
|
||||
243569365: 3 9 1 6 4 3 8 443 43 76 6
|
||||
1359330: 7 97 298 2 735
|
||||
39346886641: 2 88 8 41 3 55 1 6 659 1
|
||||
455625: 90 7 5 78 234 861 9
|
||||
601917984: 5 55 1 8 3 8 6 1 973 3 3 5
|
||||
71009287: 2 4 8 628 684 4 4 9 4
|
||||
214: 2 6 2 7 4
|
||||
2342725: 6 12 89 14 43
|
||||
25959024: 4 7 187 1 308 7 9 4 1 7 8
|
||||
972061: 4 8 70 80 84 9 383 4
|
||||
2178012557: 9 3 234 18 12 5 39 6 12
|
||||
3915: 7 35 9 6 45 46 7 20 570
|
||||
26750623: 2 67 1 50 626
|
||||
1121087: 266 1 753 17 11
|
||||
3795624: 570 6 156 516 42
|
||||
967753: 5 35 395 1 14
|
||||
31443545952: 4 18 871 987 508
|
||||
9191024368: 7 54 3 96 43 5 2 3 47
|
||||
18400: 34 5 488 263 1 6 3 23 1
|
||||
509203: 1 1 61 7 1 9 118 3 3 5 3
|
||||
174801132: 30 1 1 6 732 80 65 8 99
|
||||
211965600: 2 5 814 7 62 60
|
||||
3173091525: 998 2 8 613 7 41 9 1 1 9
|
||||
169407529: 46 7 906 7 252 2 22 4
|
||||
5331: 4 4 9 37 1
|
||||
21980222: 3 133 6 988 2 41 7 1 7
|
||||
449553702: 405 111 282 88 2
|
||||
2942: 5 15 8 1 18 62
|
||||
2320553257: 91 51 5 53 156 9 91
|
||||
9146342: 197 8 1 4 92 441 5
|
||||
966594375: 9 840 5 5 6 4 1 5 757 5 3
|
||||
4780203738: 6 7 3 17 372 1 9 7 3 857
|
||||
277037610569: 3 6 8 19 4 4 6 8 9 710 67
|
||||
9836: 7 1 41 2 16 1 652
|
||||
200552837873474: 236 780 21 847 3 47 4
|
||||
1225: 3 2 7 7 901 3 9 26 35 6
|
||||
138: 5 6 108
|
||||
48726878940: 5 4 140 9 4 3 8 9 8 3 6 40
|
||||
1072958: 27 1 9 11 158 379 9
|
||||
14700: 18 3 7 525
|
||||
27192423: 74 9 9 6 3 7 6 3 18 2 36 3
|
||||
973: 8 5 1 7 1 61
|
||||
4767602: 970 6 4 305 106 7 35 6
|
||||
5699955: 8 14 47 70 41 956
|
||||
4799016: 6 9 5 7 2 8 5 2 59 514 8 9
|
||||
1104789: 211 843 50 74 2 47
|
||||
3465098: 3 4 487 1 2 385 1 5 9 44
|
||||
1092564: 455 2 1 8 20 3
|
||||
4046781265: 418 4 5 92 1 1 263
|
||||
9213: 85 98 3 871 9
|
||||
19183: 4 6 1 4 3 1 19 133 6 4 1 6
|
||||
3057: 913 3 317 1
|
||||
308423: 64 61 79 1 7
|
||||
4532250239: 4 12 8 25 421 6 56 72
|
||||
259228473176: 8 49 77 22 91 3 1 7 9
|
||||
53531868: 910 4 15 49 36 6 8 9
|
||||
3170: 633 5 5
|
||||
7000826121: 9 5 6 3 69 84 96 233 9
|
||||
26296280: 377 12 69 87 8 704
|
||||
944: 37 8 39 1 859
|
||||
416601374947: 4 67 9 7 472 493 2 3 3 6
|
||||
87295346: 2 8 9 68 2 75 9 9 4 9 3 9
|
||||
88964084: 282 9 598 640 83
|
||||
26775736: 6 6 93 934 4
|
||||
30545: 973 5 1 2 46 2 343 9 3 5
|
||||
96136910: 93 1 2 8 8 97 1 1 9 1 890
|
||||
37564937: 375 64 861 1 77
|
||||
3400: 7 17 362 84 480 184 3
|
||||
6800: 9 9 4 20 4
|
||||
351249746890: 48 38 15 11 862 66
|
||||
7882: 1 16 26 731 6 1 3 2 8 40
|
||||
17835253284: 243 651 732 8 3
|
||||
2210544040: 730 1 3 5 4 6 28 12 5 8 5
|
||||
122544: 6 851 8 3
|
||||
897030320: 6 4 7 2 98 4 867 165 3 1
|
||||
12088: 69 387 92 22 32 1
|
||||
278: 94 8 94 2 4 76
|
||||
1349040: 84 78 9 2 3 4 1 77 1
|
||||
1909: 702 784 6 412 5
|
||||
510079: 7 9 4 28 72 77 2 27
|
||||
434835: 7 62 1 4 69 3
|
||||
30991593633: 85 6 302 13 67 77 39
|
||||
3289538589: 77 712 6 9 85 88
|
||||
6121549: 50 9 5 795 385 15 3 5
|
||||
4979436: 13 5 4 7 3 13 6 2 8 8 3 68
|
||||
129724777: 3 12 1 7 2 87 47 59 5 4
|
||||
68892363: 6 897 5 74 3 1 7 5 6 2 3 3
|
||||
4255924039: 1 72 6 94 978 41 586 3
|
||||
70979251824: 63 3 50 8 1 152 779 78
|
||||
1308486: 997 7 783 939 4 2 1 1 6
|
||||
2493632464308: 457 659 3 41 1 4 207
|
||||
348724: 34 8 722 1
|
||||
99166237: 984 7 64 2 238
|
||||
285197: 165 3 781 700 91
|
||||
9295: 53 3 57 43 7
|
||||
572564: 51 4 2 2 564
|
||||
325498150: 171 19 5 981 47
|
||||
46795: 43 1 1 2 793
|
||||
46340060: 4 5 1 3 332 4 2 8 618 1
|
||||
147087: 59 4 876 8 6 1
|
||||
4611297686: 3 34 91 2 6 69 6 85
|
||||
3862158312: 79 8 9 97 4 4 4 1 8 44 7
|
||||
789742859: 2 572 8 6 4 15 862 25 9
|
||||
579661523530: 2 5 41 29 132 211 91
|
||||
574: 9 4 6 4 7
|
||||
70184473660: 3 68 8 643 58 807 11 4
|
||||
70743726: 8 22 9 193 382
|
||||
2837431380: 2 89 49 63 3 3 4 707 1
|
||||
4458906: 44 582 4 9 656
|
||||
171138967: 1 171 13 1 7 960 7
|
||||
38732: 3 8 7 3 5
|
||||
931380691: 80 59 67 806 92
|
||||
3906490490: 2 42 1 6 21 1 96 778 2
|
||||
12218522: 2 6 21 5 4 31 2 1
|
||||
101954797: 472 6 9 692 4 4 6 1 6 14
|
||||
305743: 70 49 5 89 28
|
||||
1327567128: 1 15 189 7 1 43 82
|
||||
13548879: 6 9 8 413 47 2
|
||||
1815476055012: 9 5 637 8 681 3 7 3 3 1 2
|
||||
7297: 65 82 748 688 531
|
||||
35204: 9 10 64 6 644
|
||||
716101542: 928 505 28 9 70 9 778
|
||||
43859: 146 55 741 5 2
|
||||
597783034238: 9 2 68 866 49 190 8
|
||||
63576: 5 7 92 54 12
|
||||
508211: 2 30 60 3 88 444 887
|
||||
809: 9 501 2 7 290
|
||||
54153: 5 32 332 981 34 18
|
||||
947723581: 43 29 76 3 581
|
||||
118147: 12 7 97 7 5 1 7 911 479
|
||||
40606820: 96 6 4 7 4 2 68 6 6 74
|
||||
29223272479321: 8 654 7 923 8 40 603
|
||||
276032: 16 7 30 4 34
|
||||
78046230: 47 3 75 56 22
|
||||
553350: 6 15 80 178 75
|
||||
3735: 5 64 7 7 535 3 1 3 525
|
||||
2771237635: 8 880 2 17 39 2 4 53 6 6
|
||||
1677983: 899 9 7 8 33
|
||||
1575693: 19 4 2 962 8
|
||||
171136: 5 267 2 4 2 32
|
||||
1255703222: 22 63 97 3 13 934
|
||||
455805632: 6 7 203 8 2 9 6 5 65 5 6 5
|
||||
109920: 35 3 209 5 195
|
||||
906417640: 58 1 5 23 2 307 1 40
|
||||
25890834326636: 1 7 2 896 109 7 6 6 5 9 4
|
||||
403244184917: 2 576 5 6 1 312 13 7 2 5
|
||||
3564175: 48 74 8 2 7 6 90 6 3 815
|
||||
1558050560: 3 2 1 2 231 8 5 4 926 44
|
||||
89400308: 5 1 401 8 421 354 217
|
||||
12147: 8 5 9 84 8 37 7 618 14
|
||||
6656: 2 51 5 81 776
|
||||
191770117: 6 627 1 8 1 91 5 8 5 70 7
|
||||
36606668968: 22 282 52 59 965
|
||||
44391606965: 98 1 59 760 6 887 81
|
||||
22680: 5 52 18 6 30
|
||||
9882851925: 987 3 5 93 51 75 17 3
|
||||
83482: 345 6 2 774 7 8 62 7
|
||||
1514: 4 35 3 7 199
|
||||
63054605: 13 5 819 958
|
||||
62283458186154: 77 1 837 643 801 954
|
||||
63516: 31 42 55 6 1 67 316
|
||||
33244662713: 71 7 6 786 79 85
|
||||
126031: 3 6 7 4 59 6 5 6 4 4 147 1
|
||||
15370: 71 82 2 5 44
|
||||
214042233972: 73 9 4 2 9 1 9 2 6 8 93 4
|
||||
100495410: 5 578 3 5 4 6 41 882 6 5
|
||||
989: 8 92 95
|
||||
177497320: 9 4 4 9 8 109 1 2 7 2 605
|
||||
38159834: 1 7 17 10 3 5 9 932 3 6 8
|
||||
3692749373496: 761 8 82 30 7 8 19 8 57
|
||||
54685213: 42 4 235 1 2 45 48 55 9
|
||||
Reference in New Issue
Block a user