diff --git a/.gitignore b/.gitignore index dfcfd56..6c2bd2f 100644 --- a/.gitignore +++ b/.gitignore @@ -348,3 +348,5 @@ MigrationBackup/ # Ionide (cross platform F# VS Code tools) working folder .ionide/ + +.idea/ \ No newline at end of file diff --git a/AdventOfCode.Tests/AdventOfCode.Tests.csproj b/AdventOfCode.Tests/AdventOfCode.Tests.csproj new file mode 100644 index 0000000..6377497 --- /dev/null +++ b/AdventOfCode.Tests/AdventOfCode.Tests.csproj @@ -0,0 +1,30 @@ + + + + net8.0 + enable + enable + + false + true + + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + + diff --git a/AdventOfCode.Tests/DayTests.cs b/AdventOfCode.Tests/DayTests.cs new file mode 100644 index 0000000..9f5a975 --- /dev/null +++ b/AdventOfCode.Tests/DayTests.cs @@ -0,0 +1,138 @@ +using Shouldly; +using Xunit; + +namespace AdventOfCode.Tests; + +public class DayTests +{ + [Fact] + public void Day01_01_Test1() + { + var strList = string.Join("\r\n", new List + { + "1abc2", + "pqr3stu8vwx", + "a1b2c3d4e5f", + "treb7uchet" + }); + + var day = new Day01(); + day.IsTest = true; + day.TestInput = strList; + var result = day.Solve_1() + .Result; + result.ShouldBe("142"); + } + + [Fact] + public void Day01_02_Test1() + { + var strList = string.Join("\r\n", new List + { + "two1nine", + "eightwothree", + "abcone2threexyz", + "xtwone3four", + "4nineeightseven2", + "zoneight234", + "7pqrstsixteen" + }); + + var day = new Day01(); + day.IsTest = true; + day.TestInput = strList; + var result = day.Solve_2() + .Result; + result.ShouldBe("281"); + } + + [Fact] + public void Day02_01_Test1() + { + var strList = string.Join("\r\n", new List + { + "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green", + "Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue", + "Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red", + "Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red", + "Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green" + }); + + var day = new Day02(); + day.IsTest = true; + day.TestInput = strList; + var result = day.Solve_1() + .Result; + result.ShouldBe("8"); + } + + [Fact] + public void Day02_02_Test1() + { + var strList = string.Join("\r\n", new List + { + "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green", + "Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue", + "Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red", + "Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red", + "Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green" + }); + + var day = new Day02(); + day.IsTest = true; + day.TestInput = strList; + var result = day.Solve_2() + .Result; + result.ShouldBe("2286"); + } + + [Fact] + public void Day03_01_Test1() + { + var strList = string.Join("\r\n", new List + { + "467..114..", + "...*......", + "..35..633.", + "......#...", + "617*......", + ".....+.58.", + "..592.....", + "......755.", + "...$.*....", + ".664.598.." + }); + + var day = new Day03(); + day.IsTest = true; + day.TestInput = strList; + var result = day.Solve_1() + .Result; + result.ShouldBe("4361"); + } + + [Fact] + public void Day03_02_Test1() + { + var strList = string.Join("\r\n", new List + { + "467..114..", + "...*......", + "..35..633.", + "......#...", + "617*......", + ".....+.58.", + "..592.....", + "......755.", + "...$.*....", + ".664.598.." + }); + + var day = new Day03(); + day.IsTest = true; + day.TestInput = strList; + var result = day.Solve_2() + .Result; + result.ShouldBe("467835"); + } +} \ No newline at end of file diff --git a/AdventOfCode.sln b/AdventOfCode.sln index 5b5da75..8ba13b6 100644 --- a/AdventOfCode.sln +++ b/AdventOfCode.sln @@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AdventOfCode", "AdventOfCod EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FBE09BBA-34E4-4DED-94F2-44217330E37F}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AdventOfCode.Tests", "AdventOfCode.Tests\AdventOfCode.Tests.csproj", "{1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -29,6 +31,18 @@ Global {6B01383F-FF08-4839-BF44-2DE9071CCC37}.Release|x64.Build.0 = Release|Any CPU {6B01383F-FF08-4839-BF44-2DE9071CCC37}.Release|x86.ActiveCfg = Release|Any CPU {6B01383F-FF08-4839-BF44-2DE9071CCC37}.Release|x86.Build.0 = Release|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x64.ActiveCfg = Debug|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x64.Build.0 = Debug|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x86.ActiveCfg = Debug|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Debug|x86.Build.0 = Debug|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|Any CPU.Build.0 = Release|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x64.ActiveCfg = Release|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x64.Build.0 = Release|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x86.ActiveCfg = Release|Any CPU + {1A2DED5C-1CF2-4A2B-9B35-92EE53F683D8}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AdventOfCode/AdventOfCode.csproj b/AdventOfCode/AdventOfCode.csproj index 352e9aa..5426578 100644 --- a/AdventOfCode/AdventOfCode.csproj +++ b/AdventOfCode/AdventOfCode.csproj @@ -1,23 +1,25 @@ - - net8.0 - enable - Exe - + + net8.0 + Exe + - - - + + + - - S101 - + + S101 + - - - PreserveNewest - - + + + PreserveNewest + + + PreserveNewest + + diff --git a/AdventOfCode/Core/BetterBaseDay.cs b/AdventOfCode/Core/BetterBaseDay.cs new file mode 100644 index 0000000..63c05e8 --- /dev/null +++ b/AdventOfCode/Core/BetterBaseDay.cs @@ -0,0 +1,16 @@ +using System.IO; +using AoCHelper; + +namespace AdventOfCode.Core; + +public abstract class BetterBaseDay : BaseDay +{ + public bool IsTest { get; set; } = false; + public string TestInput { get; set; } + protected string InputData => GetData(); + + private string GetData() + { + return IsTest ? TestInput : File.ReadAllText(InputFilePath); + } +} \ No newline at end of file diff --git a/AdventOfCode/Day01.cs b/AdventOfCode/Day01.cs index 66fb158..e9fb3a3 100644 --- a/AdventOfCode/Day01.cs +++ b/AdventOfCode/Day01.cs @@ -1,15 +1,125 @@ -namespace AdventOfCode; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading.Tasks; +using AdventOfCode.Core; -public class Day01 : BaseDay +namespace AdventOfCode; + +public class Day01 : BetterBaseDay { - private readonly string _input; - public Day01() + public override ValueTask Solve_1() { - _input = File.ReadAllText(InputFilePath); + var lines = InputData.Split("\r\n"); + var sum = 0; + var regex = new Regex(@"\d"); + foreach (var line in lines) + { + var numberStr = regex.Matches(line) + .Select(x => x.Value) + .ToArray(); + sum += int.Parse($"{numberStr[0]}{numberStr[^1]}"); + } + return new ValueTask(sum.ToString()); } - public override ValueTask Solve_1() => new($"Solution to {ClassPrefix} {CalculateIndex()}, part 1"); + public override ValueTask Solve_2() + { + var numbers3Dict = new Dictionary + { + { + "one", "1" + }, + { + "two", "2" + }, + { + "six", "6" + } + }; + + var numbers4Dict = new Dictionary + { + { + "four", "4" + }, + { + "five", "5" + }, + { + "nine", "9" + } + }; + + var numbers5Dict = new Dictionary + { + { + "three", "3" + }, + { + "seven", "7" + }, + { + "eight", "8" + } + }; + + var firstChars = new HashSet + { + 'o', + 't', + 's', + 'f', + 'n', + 'e' + }; + var sum = 0; + var data = InputData.AsSpan(); + var newData = new StringBuilder(); + for (var i = 0; i < data.Length; i++) + { + if (firstChars.Contains(data[i])) + { + if (CheckNumber(data, newData, i, numbers3Dict, 3)) + continue; + if (CheckNumber(data, newData, i, numbers4Dict, 4)) + continue; + if (CheckNumber(data, newData, i, numbers5Dict, 5)) + continue; + } + + newData.Append(data[i]); + } - public override ValueTask Solve_2() => new($"Solution to {ClassPrefix} {CalculateIndex()}, part 2"); -} + var lines = newData.ToString() + .Split("\r\n"); + var regex = new Regex(@"\d"); + foreach (var line in lines) + { + var numberStr = regex.Matches(line) + .Select(x => x.Value) + .ToArray(); + + sum += int.Parse($"{numberStr[0]}{numberStr[^1]}"); + } + + return new ValueTask(sum.ToString()); + } + private bool CheckNumber(ReadOnlySpan data, StringBuilder newData, int i, + Dictionary numbersDict, int length) + { + if (i + length > data.Length) + return false; + + var number = data.Slice(i, length); + if (numbersDict.ContainsKey(number.ToString())) + { + newData.Append(numbersDict[number.ToString()]); + return true; + } + return false; + } +} \ No newline at end of file diff --git a/AdventOfCode/Day02.cs b/AdventOfCode/Day02.cs new file mode 100644 index 0000000..ffd06e5 --- /dev/null +++ b/AdventOfCode/Day02.cs @@ -0,0 +1,95 @@ +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using AdventOfCode.Core; + +namespace AdventOfCode; + +public class Day02 : BetterBaseDay +{ + public override ValueTask Solve_1() + { + var lines = InputData.Split("\r\n"); + var games = new List(); + foreach (var line in lines) + games.Add(Game.Parse(line)); + + games = games.Where(x => x.Rounds.SelectMany(r => r.Cubes) + .Where(c => c.Color == "red") + .All(c => c.Quantity <= 12)) + .ToList(); + + games = games.Where(x => x.Rounds.SelectMany(r => r.Cubes) + .Where(c => c.Color == "green") + .All(c => c.Quantity <= 13)) + .ToList(); + + games = games.Where(x => x.Rounds.SelectMany(r => r.Cubes) + .Where(c => c.Color == "blue") + .All(c => c.Quantity <= 14)) + .ToList(); + + return new ValueTask(games.Sum(x => x.Number) + .ToString()); + } + + public override ValueTask Solve_2() + { + var lines = InputData.Split("\r\n"); + var games = new List(); + foreach (var line in lines) + games.Add(Game.Parse(line)); + + var power = games.Sum(x => x.GetPower()); + return new ValueTask(power.ToString()); + } + + private record Game(int Number, List Rounds) + { + public static Game Parse(string line) + { + var splited = line.Split(':'); + var number = int.Parse(splited[0] + .Split(' ')[1]); + var roundsStr = splited[1] + .Split(';'); + var rounds = new List(); + foreach (var roundStr in roundsStr) + rounds.Add(Round.Parse(roundStr)); + + return new Game(number, rounds); + } + + public int GetPower() + { + var cubes = Rounds.SelectMany(x => x.Cubes) + .GroupBy(x => x.Color) + .ToList(); + var power = 1; + foreach (var cubeColor in cubes) + power *= cubeColor.Max(x => x.Quantity); + + return power; + } + } + + private record Round(List Cubes) + { + public static Round Parse(string line) + { + var splited = line.Split(','); + var cubes = new List(); + foreach (var color in splited) + { + var temp = color.Trim() + .Split(' '); + var quantity = int.Parse(temp[0]); + cubes.Add(new Cube(temp[1], quantity)); + } + + return new Round(cubes); + } + } + + private record Cube(string Color, int Quantity); +} \ No newline at end of file diff --git a/AdventOfCode/Day03.cs b/AdventOfCode/Day03.cs new file mode 100644 index 0000000..6c87ea7 --- /dev/null +++ b/AdventOfCode/Day03.cs @@ -0,0 +1,129 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using AdventOfCode.Core; + +namespace AdventOfCode; + +public class Day03 : BetterBaseDay +{ + + public override ValueTask Solve_1() + { + var lines = InputData.Split("\r\n") + .ToArray(); + var sum = 0; + for (var i = 0; i < lines.Length; i++) + { + for (var j = 0; j < lines[i].Length; j++) + { + if (!char.IsDigit(lines[i][j])) + continue; + + if (CheckSymbol(lines, i, j)) + { + var result = GetNumber(lines, i, j); + j = result.Item2; + sum += result.Item1; + } + } + } + + return new ValueTask(sum.ToString()); + } + + public override ValueTask Solve_2() + { + var lines = InputData.Split("\r\n") + .ToArray(); + var sum = 0; + for (var i = 0; i < lines.Length; i++) + { + for (var j = 0; j < lines[i].Length; j++) + { + if (lines[i][j] == '*') + { + sum += GetGear(lines, i, j); + } + } + } + + return new ValueTask(sum.ToString()); + } + private int GetGear(string[] lines, int i, int j) + { + var numbers = new HashSet(); + if (i > 0 && j > 0 && char.IsDigit(lines[i - 1][j - 1])) + numbers.Add(GetNumber(lines, i-1, j-1).Item1); + if (i > 0 && char.IsDigit(lines[i - 1][j])) + numbers.Add(GetNumber(lines, i-1, j).Item1); + if (i > 0 && j < lines[i].Length - 1 && char.IsDigit(lines[i - 1][j + 1])) + numbers.Add(GetNumber(lines, i-1, j+1).Item1); + if (j > 0 && char.IsDigit(lines[i][j - 1])) + numbers.Add(GetNumber(lines, i, j-1).Item1); + if (j < lines[i].Length - 1 && char.IsDigit(lines[i][j + 1])) + numbers.Add(GetNumber(lines, i, j+1).Item1); + if (i < lines.Length - 1 && j > 0 && char.IsDigit(lines[i + 1][j - 1])) + numbers.Add(GetNumber(lines, i+1, j-1).Item1); + if (i < lines.Length - 1 && char.IsDigit(lines[i + 1][j])) + numbers.Add(GetNumber(lines, i+1, j).Item1); + if (i < lines.Length - 1 && j < lines[i].Length - 1 && char.IsDigit(lines[i + 1][j + 1])) + numbers.Add(GetNumber(lines, i+1, j+1).Item1); + + return numbers.Count == 1 ? 0 : numbers.Aggregate(1, (current, num) => current * num); + } + + private static Tuple GetNumber(string[] lines, int i, int j) + { + + var cursor = j; + var forward = false; + var start = j; + var end = j; + do + { + if (forward) + cursor++; + else + cursor--; + + if (cursor < 0 || cursor >= lines[i].Length || !char.IsDigit(lines[i][cursor])) + { + if (forward) + { + end = cursor; + break; + } + start = cursor + 1; + forward = true; + } + } while (true); + + return new Tuple(int.Parse(lines[i][start..end]), end - 1); + } + + private bool CheckSymbol(string[] lines, int i, int j) + { + if (i > 0 && j > 0 && !char.IsDigit(lines[i - 1][j - 1]) && lines[i - 1][j - 1] != '.') + return true; + if (i > 0 && !char.IsDigit(lines[i - 1][j]) && lines[i - 1][j] != '.') + return true; + if (i > 0 && j < lines[i].Length - 1 && !char.IsDigit(lines[i - 1][j + 1]) && lines[i - 1][j + 1] != '.') + return true; + if (j > 0 && !char.IsDigit(lines[i][j - 1]) && lines[i][j - 1] != '.') + return true; + if (j < lines[i].Length - 1 && !char.IsDigit(lines[i][j + 1]) && lines[i][j + 1] != '.') + return true; + if (i < lines.Length - 1 && j > 0 && !char.IsDigit(lines[i + 1][j - 1]) && lines[i + 1][j - 1] != '.') + return true; + if (i < lines.Length - 1 && !char.IsDigit(lines[i + 1][j]) && lines[i + 1][j] != '.') + return true; + if (i < lines.Length - 1 && j < lines[i].Length - 1 && !char.IsDigit(lines[i + 1][j + 1]) && + lines[i + 1][j + 1] != '.') + return true; + + return false; + } + +} \ No newline at end of file diff --git a/AdventOfCode/Day_26.cs b/AdventOfCode/Day_26.cs deleted file mode 100644 index 2c93622..0000000 --- a/AdventOfCode/Day_26.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace AdventOfCode; - -public class Day_26 : BaseDay -{ - private readonly string _input; - - public Day_26() - { - _input = File.ReadAllText(InputFilePath); - } - - public override ValueTask Solve_1() => new(_input.Length.ToString()); - - public override ValueTask Solve_2() => throw new NotImplementedException(); -} diff --git a/AdventOfCode/GlobalUsings.cs b/AdventOfCode/GlobalUsings.cs deleted file mode 100644 index cb4d472..0000000 --- a/AdventOfCode/GlobalUsings.cs +++ /dev/null @@ -1 +0,0 @@ -global using AoCHelper; diff --git a/AdventOfCode/Inputs/01.txt b/AdventOfCode/Inputs/01.txt index bf4fa01..36374dd 100644 --- a/AdventOfCode/Inputs/01.txt +++ b/AdventOfCode/Inputs/01.txt @@ -1 +1,1000 @@ - \ No newline at end of file +eighttkbtzjz6nineeight +5knjbxgvhktvfcq89onefive +hnjcrxeightonejnlvm4hstmcsevensix +trsdgcxcseven39dpmzs +oneninesixtwo26 +dppthreeh32twobhrqzks +1cxklgfbvhsnccfive4 +foursgjsevenseven5five19 +nrrk87 +63ntkjbvcv3ntdcptmvheight78 +7xv3one +3tzjcrfbvhtqctfmqmdcbjhxln9eightnqbcqztmxcthree +sevensszlgdrlrhnptonethree3qvrxkbgfxtthree +3nckzkpkjsvztqkgvm99 +fourthreeonesevencqdv2gnvblhr +528ksdcbx +six342 +3twozrfrtljql9eightgcqrgmbzz7dlcr5 +6five2threesevenone65 +4onejrg23sevensxfive +fourthreecszzvhzfsevensix916 +spqzvdxxjeightninejzbpzone7 +cfivesevensix332lfpcffmld +ninesevenhrdvmzj24bcxxz6 +khpn3fourvhqmntjxfhsvrlnvc +bfzxhzftwo2czsrv +mmblpnnineseven4gtfvqscghfour +1zjgqlz +five1ninetjjtfxqpdkgrxtgxrcsevenkfdzlh +s8twoned +8fiveone53nineeightthree7 +926xrfcjzvpd7 +3sevenqnzjsqh6fnssjdsbv3nine +rjbbsevenvzkghzsixsbjchs59 +221fsnxtbstone1 +seven9fourpdseven1four2eight +two1nine4nine7 +9seven7 +fourcjmdgjsfive2l +twokvhrdldggn15twoxfivenine +mmjtldgmvq157hchsnvpbjvrvtvnineeight +cgzeight3sjmhdcvlnthree5vkgfmx +8sevenfourgnxdpp62xx5 +jgdk3z7mmkkjkm +9xrdltttpqznsljbvcdvtz +62zthreethree6 +sjbxq9ptsvjhpzmxfoureightmdbnlsckfqlqr +91xrnsbxxsvk6brxfftpttsevencszfhsnrfive +two9ljdfskpfive +1seven384 +xbfkhfvlts8dhtnxhxgn93three7one1 +3xkjrnqnqhgcfgjvfmxhghp15 +nine9844 +5onepczqjfcgfrbmtstbqbktphkvqcmbbvhpld +eightsixhnsbnine1twonevrs +eightcmbm2zbxsixone34 +five99qccjbklfivevqskhpxzd +seven9four2kzkjbrp +ttdbhd4gqzdlqldnm +9cqcztfourrsfskdjf +njttzmcrchfd4 +r414tzqnfddrbf +4tzbfcjksjsn7eightonelvkjzkch +ls7four +6eightsixrtkcrcbmqq6eight3nine +onesix5five7six1 +dvrqseven5ninegqthree4two9 +fourgdkmbrlgc8 +three7nine +sixqrpzqvxd7xnbkftn5seven +oneonerbpgk5ljpqh5threevtpkpfxtsv2 +ljttxthreefour3three4gxzgsfm +sixttjvhdggbk357 +eightlb4 +fourtwo4twonekzb +8one2cdsnrbfxbsixztcfour1 +ldveight19lg +seventpd84dscfmxj +one34flpg6eight76 +cfninepkscscc5 +flqv5v6twooneprlprlkcbk +qsqlrvmkq5457ninetwosevenm +xlvvtxgspct4gmrgeight +hpbbkqthree4gzbq768five +5dqfsixeightonenine +seven4nfshmhvgqm4 +rhfgvzxtfckbtmxtt9rqms9one +3gsgfbrnkhqrjddvlx59four2jfz +fdl4two +9sevennine158 +five9eight49 +3mfsixnkxdbpdxqdgfdqnk +six9fivefive +fourjdmvlvkrp5seventhreejnqncmktwonev +8cjfqkkgtzlnine +3nnsevenjdbjfp1 +ghthree1mhgtklfqdkqthree7seven4 +4mqsstftj +sixprblqsevendsxvqnk5 +four45one +dxhvj23188xz4 +dcmnr2 +xfoneightsixnine6fiveseven +6cxbbxkrxphsix +5ckkzlzjngvssfx +223zgb +six4qsf +hfxgsfhfhpjlvb329eightone +9zjkckhxoneightbnj +xsdp23seven3four7 +8five53eightthreenljbtgcnfive +fnjn36 +eightkpkxrvssix2lhctc +6ninebqcksevensevenhk +2one98rrtlncrxhllbgthreelgvkdf +sixzdnlfrvvd4 +lltjs8sixqbblmfdhctwo +6twonclq98sscjn +six3niners7eightwokjj +sixeighttwo1onerxrvvbfxxqmxnq9 +conetfpbsrm81sixsgkfqk8six +jbqs5277 +kjbncjlqthxzlznld89bgqgkxfzpqsptwo +onefive1 +pchlnspk52one4sgqj +zd3 +43fsfplhgxtjthree7gs4npllqvll +eight8sixeightone6onexr +six6hqltskzpkgbggjktlzlpktdqhzdbnine9 +eightnpfbmfninevgpjsleightxh3mz +rninenine7nine +fourbbjnjrbzdvshfeight62 +3hzpfsfsdm +2vzhjbv6 +27bpninejhbcjrmz7zfqf4 +ppflreightpmztvhvonetnjmrxdd31one +threeseven7 +srf5hcxvhsmn5five +onersvqvqgkfiveeightqxgrjgfcqj5ntgdzxp3zxdcmbsjqn +mcb643fivetwo +onermbkvmkc9pfvlpdhkzj +3oneeight64 +qtnptg5two36nine2tprkbtb +15lbhtcqfnj1qgjk +eightkzrnlrrnlltdmxlbxfourpbpghtgkb9nvlvsm +26kmmkz +jhnldxdtpseven46oneightnb +4lfftjtbzvppxsix17nxpgvjkxd +vszsbxdzjfourhlxldrthdzpqg6slnj8four +nineone2njsfpcb +5sevenone6five +jrmdhdvrb53onelgvlkd29seven +qqqg7eightseven +sevenm9 +3dfcfcdb9twoqbvxjgt56six +xq88jjmv83pspctxthree +38five5 +six7rbrvjb +eightlvqn335nine +rgmfflzxzd9hs3foureight5 +qm6qvmrone4 +fournine8 +two688qqdtdfbmzn5 +8joneonefourljvbjntkngtskcgfnszpgxt +ninethree5pjzcvntl984five +mfgqzcjbglx7 +ninemxnfcqrbjonek1nineggj +8dcfkfdtwo +4cltttbrlzpgzbdbqsevendtwosspqk +8eight9klmcbninetwozdcznsv +six85pjqldfbqvclntpnqgv +1dgprzx53 +4sixthreeh3fjqpggtjzq +fourone8fiveseven4kgbs7 +seven64npxthreeonefour +xvntvgxv9twotlgcsbgsix4 +hcqtdzthfour2xvqmnmgrncjt51 +qhlpksvnntjq8 +3rtmfngqccktwovpppqfqdlxmk2 +sixfoureight9tqpdln3eightbjnqfldblnine +eight2sixthree +3plpm +6two3two2 +1cfszpnxgtk5fivefive8one +lxrdvls2 +sevenfqszrfhone5dxcqsq +42 +3dmpsix9nhgzhbmknfour19oneightlng +six2dfglxszbjone +eightone88 +9hffzxl7five4 +seven8fknjk +fivefoursevenllljzrvjf7 +eightmsxfkbszh2 +6fiveqhkttbsthreefghn4 +3eight98vsnzbkvzcjfive +spmzsdztzgcfbhvbzqlv5 +fourtwozlsst9sevenjjmbmqk4 +jtmlgrjcpkone2twockgc5four +one35five4 +four8tltpxqfour +57sevenbmhceightbhttrzxfvt +qlvrrlnxgvjgnine1four2two +sixoneseven3sevenm +fivejxfghfp81two +rkp3zbzfnrrqfour4eight +eightnine7tpflkbqpz +28fourlmxlhdzctxkrsix +2fiveeightnineninexhfourseven7 +mnlrszkr18tfive7l +3eight639 +gqpbkntddpeight22lxqjqqone +txxrdbx4bvsfxd +343nsctfvndmp93four2 +9lqjvtjcrrtthree +bsffrmtwo2fivesix +qltdtgl3eighttwo91mjq +rh4rddsfr +fourfive7seven +pbqmx7twoqdk +6onesixclklzfzsq992 +kzxkxvqzjffourdtm4onefive6xoneightsnl +k4snine4three39 +sevenone2xcnscqhcdplnonekcxmgt +seven7ninepmeighthqr8 +xpspdx3twoqpc3881 +5two5four8eightfive +sevenseven2bcbsf +1sevenrjstpdxfiveseven +2zsxfivefivesix43 +eightone5j99nhvbfqhzbvrv5 +onefive35m +2kfnqftkkcxtskj +twoeight8 +1one8bzzsmgvj2kmqcnqjrz4 +1one4sixsixbzbcglm +fiveqqhbmnjgz5ninerlrxkl2seven +4eight4two1xgkb91fdzgxlp +nine8onefive5scxlfrf +gbrqllhnine9 +1fouronesixfiveseven95 +7qjrprpseightshfzfxvn +2vkbbxfrthreenineeight +58three4 +lmfsgdzxnqfdbxtjsnp9 +zlbqglfseventprsqvsmt1one9 +fmksmtlc8dvhbtdvpfgdz +3six1 +mkdthree67jkprftqhdzvjxxftthree8 +bstlpptcfghsrrnine7bz +5m1qfscxncvkqgtf +62four16threeoneightg +twoxlrhpc8n9nine +q5sixfour +ninesix2ninepzvxxlpcbxsfpz28hxtccfzmdq +sevenccq4npgpkkb +k79four9fp +ssqptjqvld1pjfdjnkvsevenkjdzks +2bgpbgqfournine614 +16threeeightwot +five68jnhzdfqp2qlqbmnjmjdtfbj +vplnzg4545seven +two3two +zcbhzsvc68cnppjpqhfl5 +nine68seventwo8pfzgfzbsh +onethreethreeknngnmzhpmlnsd7 +46two +sixhdg748blmlkbdtjbtwobgpzzlhzqrbvl +2smcthmql84seveneighthnmdkmfg +5fourrpscd3 +sppzzjbckgsixone1sixfour +ltkzb3v3ltwo +four61nineeightdkgtcjfvds +eightd5nfcvvdxhkkddhb +four6q7thbpnz +5rknhshlhgnzz7sixone1six +327rkthreesixeight +cnbqtvptwo1qnsevenpzqh +threeqthreepmhgcqhseven2sevenggmpjcldz +ninedlvlgnglqf3 +4two993ninetwo +eightzpfournine72oneseven7 +ninejdfkznz62kflbvgpblcgchpzz +448 +6rktvxxjpfpqtntbsonefive +6lngttwodshgtworkvvsrnfhjmvpvvbseven +eight43gpssneight +6seven3threefourninesevenrnxx +three22rblfvqjr1four5six6 +xtdsqqbv43cxxvfpvtwoklhnqgjlkrrg +threevpvxgddmhl576 +3cxccdsevenmvzhqvpfn3btldbhbmfg +kklcmgptl931threenineeight +vj42ntvkrcjtq7sk6 +llsvqthreefive5 +xspgshknq3kpld2lfour6mhzrzvqf +4bfl38onesix9 +seven1vjzjmcrrvnh +7sixsevensix +gqnkgzmvpsnnzcvldlftrzhnpcbq6hzvbqbmnqvsix +5jvbldxsh +jrmvplfive7mfpbsmklzfivefivelsm +8seven5nppxjfjsevenbxrmzmdjnine +seveneightnrkconeqgjfkxjr532 +m9seven7 +vdn5hdghzvphfour +cpceightwo3 +sixtdxhninesevenmmzrpdqcp24 +tghjrkhltwojgrcnnbbq1 +cfrqlvsevengkthnsbtwo4twovffpv5six +two6pcxj4eightgbctk71 +five93nrqpshmxpbdnzssb2 +jnxjdzm2xcfhnzkxxz948twonejv +sixfive4four5nkdxzvd +twoqvnxzgcg883fivejgvltjq4 +7mzsqvrxlf6kpfjgvdpvj +tzhkjn813six7 +5qjbtklseven +rddmfnjgdlnkx5fourzkxlttqdfourrrjfdd +qtr2qrrqvhrkvmtqgbkdq +five56ninesschfzxone +lkb3 +3zmbbqdqqnineeightlvlfqqxleighttloneightv +7threetwofive168 +njxgnsqcpnine2 +zthreerfnvvone7 +three4one8 +8ppmjj983seveneight9 +p4 +8tshsgmkb516three6four +7seven8 +twosixthreenine6three +gvqz9 +n89ninethreesix8 +ptqrhhvztxsjbxfour81lncqpkjt +8flvhqljqpmlf6fivenine28 +zhbsl7seightwoczd +four1pspgxdvtbzdcd7vsbkzmt +fourj9sdnqtwotwonine3ftzrbzckqk +1fourkkfnndsdxnklrl +zpcdvrszc4ggjcpngkqeight +6twonxhgzcsrgxtwosixvblddxgfmsmqtfcthree +6pltsptthreefive5jjqtzncslmxrmbv7 +sixfourqfxtfour9onefivehsgdvpmdsfive +ksevensevenonebdxdxffive5threeeight +zztvdjzlnqtbrfccctsknppmx5seventhree9 +soneight716 +1fqnntfjhcj2threekmcpzqnbzlqps +twopcftkx8twofourcsixfour +8six2sixgxzzhpkv +four9nine4tgq +htfmtchrx634four5zsmkmdv +45dltlvdvv +dtl848three36 +nine7sixonetwo8vsix +twobxctmqvdnt96mnljbpxtsptjpznrjctgtwooneightqv +peightwosixeightseven4 +1seven8ds4five6pone +zjftdkvpkpfrhzj97nine56 +4sdcdr53beightwocjc +onezxmtfive7ttbbttjeighttwo +rlcjone3sixonezvbmzcgpk4eightwotnm +5ddmcsfzhntpnzntlllthreevqvct +twoeight9 +tfhmxsbf2foursqrrfourmfrzjffive6 +dhhnlbkjmfourthree6 +dxtkbxjlphpqcbmhpdfpqlmreight775bh +sixklvmtjgsevennine33qgvplfourb +gkjmcxsmhtwopkcszlrjd1onesevenseven +8xxvzzqvzszcn1onevmdfsrrtbbjgeighttgpmhh +eightpndprhrf7 +three7fpxtxghx +fivenssevengrrlntzldl87 +484sixjsxcmmtvbftrfive +t8onesevenvqsfc2k +sevenoneoneeightsevenfive71 +sevennvnvbtzsnqggrsrgq35sevenfive7 +feightfive12 +twoc846cf +1mtvlxhhxlsdbphgltlgzpl +xddrlslrdl9 +fiveqvfjvcqlcfour27 +9fjqp9rrkqbtpv3 +23fqccxsvsix94tkzsqmrhsg +6lvrsqnz +9four7hvlfl9 +gbgsnmkrxjxpgnj828 +56grzmb6onekf9six +87bjn4 +sjdzmqkrlkbsmxzsmn3 +seven91eightsix +svhfnxzdzqczc2 +vbnz92chjjfqftxfourqzzxseven +seventwofour5jbqvlmqknbznfbhtonefour +dqdmntkfsnbmjqxxgmkvm6vqpgpnnreight +one1431 +1five4 +twoone8thtxlrrdxbone +qftpltmjd1zpxckthreeeight +9xg +pjpdjrkltnrkkmd9five75rdctppdhjtghrffczdx +mtvbhnpzjfive7nine +thlzdgxcqvsknczrdslsh7 +eighteight4kkt7four5 +71ninekzfntxtjthreeone3 +gzseven2fssqrgmbj +52j +nsv16seven +stwone1 +twodbqgfivegsrrvxvone3 +jckhqbdlvgbgn7vtx3vggrdm +ntzftfhfeighteight2 +48eight6 +flzfqonezvskbf1668one6 +sevensix864eightfour3 +dnsdrsxvcxnsevengxrszqxfnd4fmnine +tjjngfourhdfzpfkh24 +foursmgvlqjxsqmz8ninekthktdhz +three435 +tkfqhpz8zjmcqbxcb46 +mmvstlmln3kxnkvjcmxtrdxp4seven +rmfour13vkgnnmbzbzgd +three6nnbljchmzthreeg +68onep9five1one2 +rbvzvgmkbmdrnmvone7kqtxtrtbone +three13six4 +qksfrmvgztsfournnvp66nine +34three +11fourpzkmqnfmjqkdgrlgqbsixsixcqtgdggbdx +nineone2seven4twoninesix +ninez6qpnnbpmcdhcr +sixbdbkhgntpsevencpn3 +1fivehvlrzpninemkfbfgtvfivesix3 +7kpeightzlvqsgkfjznpfpfsseven66 +c7hxrgkglfivebfctxk +5rfdxgshzmnzqscpqzlbnrhbg9strxdthree8kntkhdpdll +4gfzcjcjsm63fvxpvflv +nine8526 +6scslfpnrveight1seven5bdllknjj +seven94hnxddjv26s +two48seven3four58four +fourseven1smh5 +1zzdzmbjpjfzlhsvzgxf61gvtnklgx6 +ninefour63 +nine3nrfzn +gthreeseventwonine1eights +sdonejzdmtxtpl9onerzztvqr8 +eight15kqnjrggpblhsbdz1 +lkkxnzjrgsixsixthreeeighteight4twonem +d17two44 +6seveneight1fourthreesevenbdpvg +cjgchvhq4386five8 +1threefive426rsxmthree8 +sixnztppjtn9twossfjrdkzkrldztfbbv +threesevenlqrdmvzdcphmqj3four5three +fivethreepcfxdxmc3vdbprghd5sevenszprlbzrbn +threethree88xcgdmrcssevenrlflv39 +eightonezchscllpfone9 +zreight6sevennine +fmrhqrxr7 +sixnlqccjchpxpqg86five5 +sdpxjrxtk4sevenfivetmddbpqgtqffive2 +hrvrgjgvxt7vrsr +2zj8 +35fourspthreeseven3zgddrmbxmsz +four8kkxmtsscf +4six98 +five9four +four5one7pjbninefourbmss +4sixsixt138seven +fourxsevenseveneighthsgmmpdx5 +tonexhgcjxbjn8 +chbkd2183 +six8fivefourglszgngfgqthree +pghkzrftwo6 +fourpfx572 +62zfvzp +sixsixnzvtxdgsixzxsgmpz1zvtwo4oneightpg +425twothreebv4twoxbx +8nineeight55eightflkpggltsr4spl +seven45clkrkrxj +65six594twofive +4ktvpfjeight +nnslpmkqc5five5four +nineonetzmft8jcxqzrk +fivefivethree99 +2l2 +4mhdj +3eight7fivejqhvrszgh3 +5four7mbfz8 +one8sevenmltbgqcbq22 +1zgfnfvt9seven +2lhbfrndhmfiveone +fivekzgch424zbpgxhtkbjdljxkxvnz +1vd6vpmzjmnhhn +vlqcbhskb5onerqbql6 +six3tplqcxthreethreefoureightzldgvgxrthree +4fourtwo4 +cvznvxbxlszjpxvzbqn7gt2fjtxddzmjv +kjqthree67twosixfour4nine +dmjrhflfzslhkjmthreemfgqvzcpm9bcnfbpz +nfpcsevenone3two58 +eight4kdqczz96five1four +1mzfour +57tdcmtmns4 +bdxeightrjvkrddrm3nftmzxlftthree +2three2kvfourgrtvxmrzgdninecseven +threemxpfnthree5onehjdxfntvtzlxhr +8onelqtjpkmtwotwoseven91 +rzhzg1fouronecqkdpfkgdkkftsixhllvphvtjv +vxgrlptk48one14two +kqncz3znmkppxs3hlggbmsfj81 +ddrp3 +three8hjdccgthrtbd6lvhnbfivemzh +twomptzvkqmssix7bjvpsix6nine +phrdjxmzj3xxkmfour7dsix +5threeshtmlsjbmfzgdq +96eight +three6rqqxgzthreejphvs +69seven52kmnpbqmjdhtjvxcnlxfgldbs +veightwozbbcmqrdxv6hxxpdknf +nxbtwone1vktdvlbbhnfour +4five864 +2dn1fiveeightthree +two4twofoureight43 +1eight51 +71fourhjrnqssxqvf +sevenqxkccdxndfgqhctsfsx6 +xqgsjvdmnb31sixfourtksqshz5 +4ghkqfzxceighteight2eightfiveeightwotf +ninelsnldgslfxfqfsrc24six +3seven3ctbf9eightmshd +mbqpfourfive44sixbnmqrmkgxt +flgdrvjj4dks +oneqslfbjgfx8 +jmmssm2 +hjfbzsix1 +bvjdxseven8 +fivenhfccvg9 +four5sevengkvslppponerhlvfms +b9one +89znlhgbnkmmxsix3two +sixsqtjcdfbs87ninejvznvmeightfvst1 +sevenktnzdkcsrzzdqtb9jnbtwotgxsptxcd5 +6mqvbhsddnmb21sixskg8 +threenb2four74five1lcmdzrvq +ftvone7 +5msevenpdqgzncvzxeight +foursixpshnbrpm64 +six2twotwordzf +nine7lbnxsfjtbb1seven4ggt4 +zlnfkkconept36 +9sevenfqlxjmts94xpcxqseven +foursevenseven15ninedqff1kmzfgvnks +xktjdhb115 +threeeightcnlpzrb8 +91six +376kkgmlblrcbthree7jgxvgfcdv +9xpz3 +rrcvpkgtwo2one6vjfone24 +sevenhfour3three +pxfvzltqrg9twotwogqdtzbp +lrgseveneight5pmxvppjdhtwoone +97six +four8bjdhpmszdeightprkgone +mb6lfcdkcn +8fbvxnjone +z9vdthreethreesbsrkzgnsxp8 +sevengftjmm1onegqhpninesnr3 +f4fourrbbngrdm37five +ninerbmdqfvkfx9eightone8eight2 +rxdvclfr714 +oneggchmt2dgh7 +tvbfour9four +four474fourgmdtm +nffourpbxtlcs7ninethree3 +bpjlrztwo2sdttcghc +hfflhmdc18 +4ninepsrmtbqrfeightk3xxxf +433hdvcggkr1xjcntvtnvsc +7nine2nine6 +9zctwo +9vvfjvctgtzpjh7jtdjcrh +qrtgcd5six31khd5 +fourbjshrq845zg +ghconeight35jljdqgtg4fjdtxtsfiveone4 +one7kxscgcxnsx +43threethree54four +vmninetwo2onetqgblrsgcpfkrreightwokg +threefour38 +fivesixeights26three +jtmzzxvmxone2four9jgtxjrvpcthree +fdqgczkq8sevenvcnhpseven8three88 +7ninezone3 +frj4eighttwobgx1threesjckzsvvxlone +oneseven2cspzhqfsix4 +ljmnbbcnxffkmdn5 +tmzlnl8oneseven86ninelbrzjgqn +fthree3seven6sixtwo34 +6two8fivexteight +89seven5twosix63 +63pzsjcjzvbhseven +msqvppsgnfbjrjmdrrhbfxrjqdlkpfourjbrjks3dthree +eight6twoklkdfgvxzteighttctqz +4gjpfmqs233six +onefourninenxcnkgfour8rmmrzln +1sptlpstqb6eightqgfhzzgpgp24 +eightlrjlhqfoureightjvj937 +595oneighthpt +44five +two2sevenbtwo +7fivefivepxonebbrlthreefive +klxnlfjlsrgjcd7eightninefive +threeqzpptnzhjnkqfsixpvk3xxlrpl +mqkhsdtbqqzgjb7149ninesix +1dbrrvjsx34cbdxhqpzbfhtgpm9three +3onesix6eight +five34 +6qcv9nzngtsjv +9lttthreegttzjstt +four47 +95onetwoftdzmhsfmhbnblnine +chcsqhnp72qjdqtjxzc8fourfourfour +fourfive28 +81eighttwoqdjkmnleightdbmzz +vzzqpjx8 +qq1six +qbktqgrjcqq75 +772 +njvnhnzdz6threefivetwonelt +pcfzzjfhqkxhfpztpv7 +fivemztfourqjrtngrkpcbfc3qq +bfjhbm6ghtdpsmlvb86eight +94883 +6onegbxmcqmdfive +sevenonesixcngsrgcz9 +sevenzhxktd22fourgnr9 +tdxpzvggnlpdxxrcpsp3threexjrldrkmp +34kjtbsxppmxfoursixlbzgqxbltv +fivethreezfive2 +7seven1seven +4fhvxbg58eighteightone +631gqtwosix +xqn1chrcjjrqxp4threezjcd +jtssvppxlnsix49rfvjdzntwoone +sevencmpmdnczcfdprgfdbjnzzkgnine26 +hkbnggqfk7mfmfsone68sxpdmf +fourtlhsmksvzg4foursixseven +pprkj3sixseven +kzxjpdczxhxckxtgbbtwothreethree5dztmdfrlfivedgcfmmrt +hjvrdhnckspl5eight3three9 +74two95eightfourdkzzlkxszm +one7tbfour1cpjtrxsqgvbjtpbcct2 +fivefour4hsix8hjsxrmpqqxnkhmjseven +nine8fivehvmnxsfour7four75 +sjfrjr2ds +fivefourqt95vbndnzns665 +sixssbznthreethree6f8lnzcgpprl +ninepfbpfnflrfnpzhq9 +nh9fvrldpkjmq7six5p +75zsixnqbhrcbpmddshjfqthtq +sevennine377fourfrtvpqrseven6 +97eightnine +52fiveonetrq5 +threehgjqt7rvfsljtzkfour +tjkxc1 +jthreerqbpzpzmeightntjlrhdmfour2 +fourmgv2three4one +four91 +9bone +oneseven1sevenpdvdqhlq +xlhbqxcpfp7 +twothreefive43 +1ctjmfn9one2 +htfivesixcdkjrjbr45eightseven +onefour8rrhltfl897 +37ljvmcnjhonevxkqpjk +3891sevencfgjhh45 +twoone5tbznkdmv1fourpltvnnsvk19 +55bcnzbfggd2 +17zpskbgeight2dx3 +vbdshtdkxllttwo65 +tzvmcmltfphztpplrxjxpbnine3qvktlctfrpxncb +1sixppzlfvkbnm +eight1gdvlzrfkc +four74fivefseven +hlzlvnjrp9312jxeightnine1 +sixsevenkjpbz5sevencksb2 +9rtvlgdpfnmgzdzcjggsq7sevendxglftncmbninefive +eight8gxkrbkgcvbxbbxlonefivesevenjnffhjsk +99twobdmcnfthreevr +sevenlpjbbthree58 +eightthree32 +14fhxsqshmjbngrhdzvxvvhxgvqnlxnnvrsgsheightninenine +6twotwo +kr573eightseven78 +9six18 +2seven8six1qdvf +ones9three1lcqj2 +sixbfour6gbd +tfpvtbbjtwormxz6 +49eighttwoonesixeighteight +fcrhntggdvseventhreeeight9foureightxjxqvtb +oneone3rnngppxj8fzpsncjmzn +9fiveonejjdpthreetwo9 +sixsixjzckvmbbszsl1nrrfphj5 +zgjvnttth7sbmtxczggxbbqpzq467 +3mhslltk +9six16three79three +fxprlhbm3zljzd49gdsrtt +6eightoneseveneightfourrfive +fourfive11six +6gmrfxnsmnnljf8ninenlctx +seven5threehninecnhbkgbnvqbsfx +pxzccjqz8 +xgzpzljnfour7threethrxskjlz9 +fourseveneight292eightone +5bjpzjseven21four +xbtf88nine +6nfjllxh4 +67five4c8 +1qbzdkvmlrzgj3rzqczz4 +mjjzblg3 +x3five +jrpxsrqgr9hqsddmscmsrsbhkdc63eightxfscd +6eightsixone +5dggfbgclz7htvpcx1 +onethree46psdlfpgbsix +lqbnine978 +7nrrdzfksbtjlnbgfxttzfourstqkd +mtfptwo9six23hctpbrxtbx +eightfznvmmp7cllpkggknttwoxbbv +rggdrlsgcm2hdljxzjhjrfour83 +vhtmhvjdzzkzmzqgr7fourfourfourgzbqqpz +dfjctmlnkqzzjhhltpvhfmhsixvclfive7vgm9 +nine642sevenseven9mblrhxxktfhdhbcztvx +4rzrdfmtvlpthree86 +qkdoneighttwo1one3 +dnnvkvpcmn2cltbzc6five59s +sixsnzpnfplrn38hthhbfive4 +tsrxkzfxcdgckxrgzkmrctqvrngfnvdscnpc6jgszldglnhsg +vvtfhtgxjbdgznjjzqjjclfg1lvpdcpjsevenseven3 +xrhbrpg8zb8 +4nine5qfxlhmvzsjsbznmklseven +lffl2six733jtrfrs3 +7nbvpkdpzjtc8qckhbqfsqqgz +cfljnthreecninedt2xldzbgl5six +nrggf7four +hbkpxrxonetwo969fivethreegspmzcfr +jjpmzlzfvqbvbzqcz2eightninepfqjkjrkfivebzcthgrpqx +xsccsbmcninefive4kkrvrht +sgnzzschtwotwofzjt9seven +8tworpzncglnmninenjmf368 +2one1zjtgllvsone +7nine4nqqxnvvnsbsevenvddcvfdr +three117 +shcjhvrfourpthree12 +1zxcxninegpdfrfhzlbzg +7eight9gkkfbdhplnmjkksbqzp6htmbhg +sixeight76sixfive +5twonemt +three86 +4three52psgzhnlhgvgcsbzbleight5oneightkj +cnztwone1 +six9sgx +79clrpmeightninepkh39 +rmfplpsixsixlvrdbqgpljgl5onetwo3 +7ninelznqjxjgtwohhk6five +1659two7onefive +rskpnrmfbbghttvklkg773fourczdqeight +xftwo4 +2nine5ccrgsmfcseven9seven52 +8sixseven +k33threehgqtljcdqxkl +hfgdvngttzfivecflmcc31three +eightninethreensjxxlzhgk9b51x +ninejktfhnnphkkgm2dms5dpxrbcd +eight7skzllgxgmkd1three4thhdpsjtvnq +7ninehhhdngbxjvvxldvbrhzrbvntl2 +pxgsixone75llslx +31tgrvtvvlbhnshjfgnqc +knzgkjfckf2sevendfive +bmxcnznineeight9dvkbngzmxz +gzqdjfsxq9pbseven +212 +h3 +9sixfourbrfsfivekttxzhrmdsppps +3vxtbtrzqzxfhgsksbvqd +9lbxdjmckrhfgjqlnsrrfzqxktqkrmmjshfnine +7pjmmxdcffxgspeightgpdcftjtdxjgdrfthree +t84ninefive4 +fgfour63sevendmtrrc9 +64three +btjnc3g6f3one +pm9 +threefourvjmsx5four +14one2rtcccqc +jhcckpv84xntpzdn +rpjrhgddzfvrzpqnfg5twoseven3threehvcmnkreightwotl +74one +six4ninesnbxlonesix5three +kfxjzjone76xppxgddstgfhxphpffrjlone +sixthreedsdccpqff4 +4951 +zszgqjxbx7 +three4pqqvfzf622 +vc77threetd +sixlbglxqhn52 +1sgktgvxp +bdsonekxsevenpgssslcq3fgp7 +pvnxnhdjmndnhthreefive49 +kgvkszsixone4 +3mjvqjpglzhphg67ninehnnine +one6xvvnvkxp4dfcxv +eightfour7threesevenp +7ggdl1 +ztwonethree427ninetnmzntj4 +fttwone258seventwotwo +75sixseven59 +7kmfzqgjpqkpdhthjlseven674xdgmphfk +eighttwo6five7 +3eightwoxg +22434five +khjmcpzvfpr9 +3rrzqzlrljgcvdnxj6four8six +63qrgqklszpgthreefkpzx +574htclbtzfivetwo +jtwofqfpkflzt9 +xnjzxpmmdln4lzlmlk41 +6jdzjjmz7jt7seven8fourkgttztbsktwoneps +72s166zpslq5 +3553lhkdcxvhqbddrfdbc5two +4gktbmone +fouronefives3qhglmzttwoeightone +one87rxkkhfrjfrpdjjt485 +one437nine +119one +5lseven87nmxxqvhmn +pphfmcfhxlsevensqdmtvtpvq1 +18eightfivefour +three98 +4onephzhtq4qc5four +26zglkpjvz3twoeight +7mxkdrbpnk29 +ppeight15 +9jnprvtmscsixbbpsixfivecktgvdpf5 +lbftvcngvkvxf5cmmrqljjb471 +eight3knrvtwo +one6pvbpkqkpdsixbv +eight2onethree6eight +5rztcbtfjkb2twoeight39hxppvpxqg +8threemlllncmfourthree +vhtsmncssixbmlpggvmlzdxbczgc1fxrgvsbhsrbs +ninebnpv7575three +4mthree +fourtwo1qrbfourjrjmlxjr +3jbkcsrqznc8 +pcgrxgf4eight54 +seven5mjk +ninenine6vmcmlxmcrbvq1nine8 +sixone2ninesixrdqfgpxddzthreetcheight +899lfbzhgn151 +46nineone +7one2qthree +nine2hjnfourninesixvblnqbgctwoeight +qkggsnnthrxnrccbgs583 +351zkxqtmbd9sixthreegjjxt +zrchlhmqcthreeninesmxz9 +219fivejrxgbjvvcxkjtwoseven +8threebzzsxdx +nine249ninefmlhj8rfour +16zfljhfdcmkthree +7sixjvdqgpvhmndpmhhzsphceight +two2zjqc4nfd6732 +41threeseven1fourseven +296fourgnq7three +tbzdhbhs7ntshptcgrbkjspjdz +55qcrmclmcck9 +25mhmtb3dscmjbhgv3four +bjmhkxsffourhnxkxv1 +jvntlbn5fivegjdcjl +7gndbbbneight +357623chktvtfzvf +169plhsshseven +nhgsrxcdfktpbzf9vpppxzkznine9 +xrdnlbmtdeightone3threeeighttwo +bnnqzcfoneeight2hhdfkrrqzt +342tlmjgtfcnine +47rvtfqlzgmjlqbqthree +7gnmxplrjbvfour6 +mcgbldbhlh1eightnine +two9eightxnpdj61kzcdpnpnpfgsdrbcflh +6541fourpkdplksnkpvkjxpdnvfttlfdflz +kfour7 +x4tpbnnvnjlseven +55nineninesevenzttsztwo9nlcqjq +1drhjrzsbvpl +mpknzhj9vmqckrpznqthreesj9 +211zqgpdlmpn +4jxzrztg5onehnzvdbtcqdtsnkqtdvsd1fournine +bvcrcz5four4 +4nineninecfhgtdphone9 +zbkjgbshqqkrcb3qmtfmdrdcckcsxshjb2 +1eightrblhbhljvkpshmrxc5 +hjcrrdsvnbqktxrgmq9nqgcztbv +6lzsixl5one +twofivesevenfivesixonenine5seven +fourmldkgnzb8djlsdmjnzxbmmvpf59seven +8hnfkknnsrhm +three2krtqmmxqzs4jbrnrtrxzxsllblbkjmthcrlxxkdlh +mglfmvvnthreefour1 +onehxz4fourhqcfvdlhg +zrzqdgs5jsttkrone +sevenrdmhnldsmdnineqfrgjhmhnnqkztxzm7 +63seven +2seven3mrsltqb17 +fdbtvthmmrb5gbxvcmtwosixt5five +eightlzglvxfone5five7dlqpmseven5 +dmzdkbfive98onefivehhbljrnz +eight8ninefour +24nvmftwofive +seven3onefourrmgkxtcsfour +fgpxmqqsfdrk8eight8zhcrzvrzmdxbbfive +eightonetwo7ninesjsrlr +rrkrrtnkq941sixone +threeffspgv3eightfivesix5 +lthnrlgfcnine2scdcvnineseven +sx86 +cxklrckbz5lsqq28 +5seven298 +933five5cmddfj46 +hrhhs76343 +one3two4fourst4three +nine3three +dhtscvgm9foureight81vp +btpeightpzbtphdlcm8fiverknbrhthreelxndqcv +one96six45tm +fourninetkdrvnbznnine22 +vxeightwothree5cd3jcnine +seven5one4one7ninefive3 +nflkr2dlmtsrkrgkfvsixxvznjbvz3btxkhhqcc +eightrtz6jslqxsixoneeightnine +xmvxn5 +tgnlrmjtkjdpbnpmsixbxfnl7sixone +htwonezcshpqgsix73qlgdqnkjskjthree +nrlkxq6fnfourseven +zmrlngjdhc41four4fourptrhddthreenhzv +n9twogdrzkcsbk8hph6 +436sevens7cnkrrk +6qkdvkhtwo +mztkszm39 +fourtwo4mqhjkkdzgffhqfktwonine +hbthree2hvpbznlgrxfgkthfour8 +34prfzlx4three +29zzfdvghll9three6 +two83 +one982 +36hhgdf7 +seven6ninednnine9mbtzfm1 +one38 +seventhree5lsjxknqtdsbtxrkone +eightmfctkbc9jlxgdnchlq9one8nine +p371b +9ninejszqsnpkfbthree1h5xscpfzvl +three9ljd +fbbv9 +five582 +58dctdbhbninesixczhd +qp4 +6pfqdeight +3onethreekqnnlt +m4fgbmdtwo3 +twodkrmtqs4 +9three6 +six1798nineeightsqpvpsmcbmh +9qxxmrmbnine3fivefourfive3four +one7sevenone78ninetwozqps +973keight9seventwo +keightwothreethreeh6threeeightlnqdzhlt +five94 +mqlltnfive8eighttwoqhztggvqqkcxgvgmch +2kpnsevenfive6 +gtmszpsjmggr3 +pm126one3 +rvcqbtz9zjtndbxlrdcxzf3 +mkninekhmtxzbjpd8threeeight7eight +5274xm636 +bleightfive9vdddzjdntthreerxtvdslrvbcvf +9eight4sixdqzrltgpzlpxtcrzxbhmsmdtwothree +cpneightwofive3fourtwo +one61threejxbjvsltxzpntpv +19581 +six2qllhlxhr1foursixz8 +6278teight3three +8gstxqdngxzlxvnvphlsznr3kknftvzxcqqbrfteightthree +4jlzjvjfltwo7pv +7dvt +blhsm4xcrbrf68ninezvhhtqgphnzxlhl +9dvjvfourtcthree +onethreenfkgrvsevenkczctlgkt7 \ No newline at end of file diff --git a/AdventOfCode/Inputs/02.txt b/AdventOfCode/Inputs/02.txt new file mode 100644 index 0000000..c5ab8c4 --- /dev/null +++ b/AdventOfCode/Inputs/02.txt @@ -0,0 +1,100 @@ +Game 1: 1 green, 1 blue, 1 red; 1 green, 8 red, 7 blue; 6 blue, 10 red; 4 red, 9 blue, 2 green; 1 green, 3 blue; 4 red, 1 green, 10 blue +Game 2: 9 red, 7 green, 3 blue; 15 green, 2 blue, 5 red; 10 red, 3 blue, 13 green +Game 3: 3 red, 1 blue, 4 green; 6 red, 3 green, 2 blue; 6 red, 16 blue, 1 green +Game 4: 2 blue, 2 green, 19 red; 3 blue, 11 red, 16 green; 18 blue, 13 green, 20 red; 18 red, 12 blue, 16 green; 8 green, 16 blue, 16 red +Game 5: 8 green, 1 red, 12 blue; 10 green, 6 red, 13 blue; 1 red, 3 blue, 6 green; 14 blue, 2 red, 7 green +Game 6: 1 red; 1 blue; 2 green, 1 blue; 1 red, 3 blue; 1 red, 2 blue, 2 green; 1 green, 7 blue, 1 red +Game 7: 2 red, 1 blue, 5 green; 5 green, 1 red; 3 red, 7 blue; 8 blue, 1 red, 4 green +Game 8: 6 green, 4 blue; 10 green, 7 blue; 5 blue; 1 red, 7 blue; 11 green, 1 red +Game 9: 2 green, 2 blue; 8 red, 5 blue, 6 green; 11 green, 6 blue, 8 red; 4 blue, 3 green, 8 red; 2 green, 10 red, 5 blue +Game 10: 2 blue, 8 green, 2 red; 10 blue, 3 green; 12 blue, 1 green, 2 red; 9 green, 2 red; 3 green, 2 red, 5 blue +Game 11: 12 red, 1 green, 1 blue; 7 green, 1 red; 2 blue, 1 red, 3 green; 15 green, 8 red +Game 12: 4 red, 10 green, 4 blue; 3 red, 10 blue, 18 green; 5 red, 2 blue, 18 green; 8 blue, 16 green, 2 red +Game 13: 3 green, 1 blue, 8 red; 8 blue, 2 green, 6 red; 6 blue, 3 green, 11 red; 2 red, 13 blue; 1 blue, 5 red, 2 green; 6 red +Game 14: 3 blue, 15 green, 10 red; 7 green, 6 red, 6 blue; 8 red, 13 green, 4 blue; 4 green, 1 blue, 9 red; 9 red, 7 blue +Game 15: 8 green, 9 blue, 4 red; 8 blue, 4 green, 4 red; 8 green, 7 blue, 10 red +Game 16: 12 red, 8 blue, 2 green; 4 green, 10 red, 4 blue; 9 green, 4 blue, 5 red; 7 red, 1 blue +Game 17: 1 blue, 4 red, 6 green; 1 blue; 6 red, 8 blue, 10 green; 2 blue, 2 red, 3 green; 8 green, 14 red, 6 blue +Game 18: 5 blue, 1 green, 5 red; 1 green, 11 blue; 3 green, 18 red, 8 blue +Game 19: 2 blue, 2 red, 16 green; 5 blue, 2 red, 17 green; 10 green, 6 blue; 2 blue, 11 green; 15 green, 3 blue, 5 red; 18 green, 8 red +Game 20: 7 red, 6 green, 3 blue; 7 red, 16 green; 1 blue, 6 green; 1 green, 7 red +Game 21: 10 red, 10 blue; 16 green, 4 blue, 7 red; 2 red, 9 blue, 11 green +Game 22: 12 green, 7 red, 2 blue; 6 blue, 3 red, 10 green; 11 red, 12 green, 3 blue; 8 red, 3 green, 3 blue; 3 red, 4 green, 7 blue +Game 23: 7 red, 9 blue; 5 red, 1 green, 4 blue; 8 green, 9 blue, 10 red; 8 green, 9 red, 11 blue +Game 24: 4 blue, 2 red, 15 green; 1 green, 4 blue; 7 green, 2 blue +Game 25: 12 red, 12 green; 11 red, 5 blue, 15 green; 15 green, 5 red, 3 blue; 15 green, 6 blue, 10 red; 3 blue, 1 green, 5 red +Game 26: 7 red, 18 green, 6 blue; 3 red, 2 green, 7 blue; 1 red, 1 green, 1 blue; 16 green, 5 red, 2 blue; 5 blue, 4 red; 12 red, 2 blue +Game 27: 1 blue, 5 red, 5 green; 11 blue, 7 red, 5 green; 8 blue, 7 green, 4 red; 3 green, 3 blue; 14 green, 1 blue +Game 28: 12 green, 1 red, 1 blue; 17 green, 1 red, 1 blue; 1 red, 1 blue, 15 green +Game 29: 15 green, 10 blue; 6 green, 5 blue, 2 red; 19 green, 5 blue +Game 30: 10 red, 13 green, 2 blue; 5 blue, 14 green, 1 red; 9 green, 14 red, 3 blue; 14 blue, 14 green, 17 red; 15 blue, 9 green, 16 red +Game 31: 6 green, 1 blue, 8 red; 12 red, 8 green; 5 red, 8 green; 9 green, 11 red +Game 32: 6 red, 7 green; 12 green, 1 blue, 2 red; 2 red, 3 green; 4 red, 13 green; 7 red, 9 green +Game 33: 3 red, 7 blue, 10 green; 4 blue, 3 red, 15 green; 6 red, 7 blue, 18 green; 5 red, 10 green, 10 blue; 2 blue, 6 red, 10 green; 7 blue, 3 green, 6 red +Game 34: 1 red, 6 blue, 3 green; 2 green, 13 blue, 2 red; 2 red, 7 green, 5 blue; 4 red, 2 blue, 5 green; 3 red, 4 blue, 3 green +Game 35: 3 red, 4 blue; 3 green, 6 red, 2 blue; 8 green, 4 blue, 3 red; 11 red, 4 blue, 3 green; 5 green, 1 blue, 6 red; 8 red, 7 green +Game 36: 2 blue, 8 red, 2 green; 11 green, 14 red; 14 red, 1 green; 7 green, 2 blue, 11 red +Game 37: 2 green, 10 red; 1 green, 5 red; 5 red, 11 green; 1 blue, 11 green, 2 red +Game 38: 11 red, 1 green, 11 blue; 9 red, 1 green; 5 red, 2 blue, 1 green; 2 red, 6 blue +Game 39: 3 red; 2 green, 18 red, 2 blue; 2 green; 6 red, 2 green; 12 red; 3 green, 11 red +Game 40: 3 blue, 4 red; 2 red; 7 red, 1 green, 2 blue; 1 green, 1 blue; 5 green; 2 green, 2 red, 1 blue +Game 41: 5 green, 3 blue, 10 red; 6 green, 3 blue, 12 red; 2 blue, 5 green, 7 red; 2 blue, 3 green, 2 red +Game 42: 11 green, 1 red; 6 green, 4 red; 4 red, 4 blue, 7 green; 11 green, 5 red, 5 blue +Game 43: 1 blue; 6 green, 16 blue; 7 green, 1 red; 2 red, 15 green, 7 blue; 2 red, 16 green, 3 blue; 3 red, 14 blue +Game 44: 3 green, 1 red, 5 blue; 9 blue, 1 red; 14 blue; 7 blue, 1 green, 2 red +Game 45: 1 blue, 1 red; 1 blue, 1 red; 3 green, 1 red; 1 green, 1 blue +Game 46: 1 green, 8 red, 2 blue; 13 blue, 7 red, 2 green; 3 red, 4 blue; 2 green, 18 blue, 5 red; 4 red, 5 green, 9 blue; 3 red, 7 blue, 1 green +Game 47: 8 blue, 1 red, 8 green; 2 red, 6 green, 1 blue; 2 green, 6 blue, 5 red; 6 blue, 6 red, 6 green; 6 green, 9 blue, 7 red +Game 48: 5 blue, 14 green, 8 red; 7 blue, 10 green, 7 red; 9 green, 9 blue, 6 red; 9 green, 5 blue, 17 red +Game 49: 10 green, 6 blue, 2 red; 3 blue, 5 green, 4 red; 8 red, 8 blue, 11 green; 5 red, 6 green, 5 blue +Game 50: 3 red, 2 green; 1 red, 8 blue; 2 red, 2 green, 3 blue +Game 51: 4 green, 8 red; 8 red, 5 blue, 13 green; 3 red, 11 blue, 14 green; 5 blue, 11 green, 3 red; 5 red, 9 blue, 11 green; 6 green, 4 red, 12 blue +Game 52: 2 green, 1 red, 1 blue; 3 blue, 2 green, 2 red; 1 green, 3 blue, 4 red; 2 blue; 8 red, 2 blue +Game 53: 18 blue, 4 green, 9 red; 6 blue, 9 green; 14 blue, 9 green, 9 red +Game 54: 2 red, 7 blue, 3 green; 6 green, 3 red, 2 blue; 1 blue, 3 green, 3 red; 2 green, 4 red, 9 blue +Game 55: 3 green, 6 blue; 6 green, 8 blue, 6 red; 5 green, 3 red; 4 blue, 8 green, 1 red; 1 red, 2 blue +Game 56: 4 green; 2 blue, 4 green, 1 red; 3 blue, 6 green +Game 57: 15 red, 3 green; 15 red, 1 blue, 2 green; 15 red, 1 green +Game 58: 1 red, 5 blue; 5 green; 6 green, 8 blue, 2 red; 1 red, 6 blue, 6 green +Game 59: 3 green, 8 blue, 5 red; 1 green, 12 blue, 4 red; 2 green, 18 blue; 2 red, 4 green; 16 blue, 3 red, 1 green +Game 60: 7 green, 6 blue, 2 red; 6 blue, 2 red, 4 green; 11 green, 5 blue; 4 green, 4 blue, 3 red; 2 red, 7 green, 8 blue; 6 green, 4 red, 1 blue +Game 61: 6 green, 6 red; 1 green, 3 blue; 6 green, 1 red, 7 blue; 5 red, 19 green, 7 blue +Game 62: 3 red, 4 green; 2 red, 4 blue; 1 red, 13 blue, 5 green +Game 63: 2 red, 13 green, 4 blue; 10 green, 5 red, 10 blue; 13 blue, 6 red, 3 green +Game 64: 5 blue, 2 green; 1 blue, 1 red, 6 green; 3 blue, 11 green; 2 blue, 8 green, 1 red +Game 65: 4 red, 5 green, 2 blue; 2 blue, 4 red, 1 green; 3 red, 5 green, 4 blue; 6 red, 3 blue; 3 blue, 2 green, 5 red; 2 green, 3 red +Game 66: 14 red, 17 green, 1 blue; 2 red, 12 green, 2 blue; 1 blue, 4 green, 14 red +Game 67: 7 green, 4 red, 10 blue; 11 blue, 4 green; 7 green, 2 red, 3 blue; 11 blue, 3 red, 9 green +Game 68: 5 blue, 4 red; 10 blue, 8 green, 5 red; 1 green, 1 red, 10 blue +Game 69: 1 red, 15 blue, 2 green; 16 blue, 15 green; 1 red, 15 green, 14 blue; 2 red, 5 green, 11 blue; 5 green, 1 red, 13 blue; 2 blue, 16 green +Game 70: 1 red, 2 blue, 9 green; 2 green, 1 red; 7 green, 4 blue +Game 71: 5 blue, 1 green; 2 green, 5 blue; 2 blue, 1 red, 1 green; 1 red, 5 blue; 1 red +Game 72: 5 green, 5 blue; 8 green, 3 red; 7 blue, 8 green +Game 73: 1 green, 4 red, 3 blue; 5 green, 5 blue, 3 red; 8 blue, 7 green, 1 red; 3 blue, 3 red, 9 green; 13 green, 2 red, 10 blue +Game 74: 2 red, 4 green, 5 blue; 3 blue, 6 green, 4 red; 2 blue, 6 green, 5 red +Game 75: 10 red, 20 green, 14 blue; 9 blue, 15 green, 17 red; 8 green, 18 blue, 6 red +Game 76: 7 green, 1 red, 9 blue; 1 green, 3 red; 3 red, 3 green; 4 blue, 20 red, 9 green; 12 red, 7 blue +Game 77: 1 blue, 9 green, 7 red; 5 green, 7 red; 4 red, 1 green, 1 blue; 6 green, 3 red, 3 blue; 3 blue, 5 green, 18 red +Game 78: 11 red, 4 green, 4 blue; 12 red, 3 green, 4 blue; 11 red, 4 green, 13 blue; 8 red, 5 blue, 6 green +Game 79: 1 blue, 16 red; 9 red, 2 green, 2 blue; 2 blue, 12 red; 3 green, 12 red +Game 80: 2 blue, 3 green, 5 red; 5 red, 8 blue, 3 green; 10 blue, 8 red, 8 green; 5 blue, 4 red +Game 81: 1 green, 3 red; 6 blue; 6 red, 1 green, 8 blue; 1 green, 8 blue +Game 82: 4 blue, 2 red; 7 blue, 10 green, 3 red; 7 green, 1 red +Game 83: 12 blue, 9 green; 10 green, 7 blue; 7 green, 1 red, 12 blue; 5 green, 12 blue +Game 84: 1 green, 2 blue, 1 red; 2 green, 9 red; 14 red, 1 blue, 2 green; 2 green, 9 red; 4 blue, 2 green, 9 red +Game 85: 1 blue, 8 red, 8 green; 1 green, 4 red, 4 blue; 8 red, 7 green, 18 blue; 5 green, 3 red, 15 blue; 11 blue, 1 red, 4 green; 4 green, 3 red, 1 blue +Game 86: 14 green, 11 red, 14 blue; 9 green, 14 blue; 12 red, 4 green, 13 blue; 14 green, 9 blue, 2 red; 5 red, 17 green, 1 blue +Game 87: 3 red, 3 green, 7 blue; 3 green, 2 red, 20 blue; 12 green, 9 blue; 3 blue, 3 red, 8 green; 12 green, 9 blue, 2 red +Game 88: 4 green, 1 red, 4 blue; 1 green, 3 red, 1 blue; 2 green, 3 blue, 3 red; 5 green, 1 blue +Game 89: 8 blue, 1 red; 4 red, 6 blue, 1 green; 12 blue, 3 red; 1 red, 4 blue; 3 red, 5 blue, 1 green; 7 red, 7 blue +Game 90: 3 red, 2 green; 4 blue, 13 red; 1 blue, 7 red +Game 91: 8 blue, 2 red, 9 green; 5 blue, 17 green; 2 green, 7 blue, 1 red; 8 blue, 11 green, 3 red; 2 red, 5 blue, 1 green +Game 92: 8 red, 11 blue; 7 green, 9 blue, 2 red; 6 red, 3 green, 3 blue; 4 green, 8 blue, 2 red; 9 blue, 12 green, 8 red; 6 red, 14 blue +Game 93: 4 blue, 1 red, 3 green; 7 green, 1 red, 3 blue; 6 green, 1 red, 3 blue; 3 blue, 10 green, 1 red; 3 blue, 7 green +Game 94: 11 red, 13 green, 3 blue; 4 green, 15 red, 5 blue; 1 red, 7 green +Game 95: 4 green, 10 blue, 6 red; 4 green, 9 blue; 8 blue, 9 red, 5 green; 7 green, 12 blue; 12 blue, 8 green, 3 red; 2 green, 5 red +Game 96: 2 red, 2 green, 1 blue; 1 red, 4 green; 1 green +Game 97: 4 red, 5 green; 5 blue, 3 red; 8 blue, 2 green, 1 red +Game 98: 1 blue; 2 green, 1 red; 5 red, 2 green; 4 red, 1 green; 2 red, 2 green, 2 blue +Game 99: 6 blue, 5 red, 2 green; 9 red, 1 blue; 2 green, 2 red, 5 blue; 10 blue, 2 green; 11 blue, 1 green, 4 red +Game 100: 1 blue, 13 green, 14 red; 11 green, 11 blue, 7 red; 2 red, 1 blue, 2 green; 10 blue, 15 red \ No newline at end of file diff --git a/AdventOfCode/Inputs/03.txt b/AdventOfCode/Inputs/03.txt new file mode 100644 index 0000000..5c5dd5f --- /dev/null +++ b/AdventOfCode/Inputs/03.txt @@ -0,0 +1,140 @@ +..............423....688..934............970................................95.728..........896...113..................153..972............. +...122..................*.....*..........................919..509*..........&...@.........../...........................+.......*........... +....+..........259....698..373.992.52.674.........................781...22........130.584.....-...%399.......777.................266........ +......148..+....*........................*.....357.123.......................812.........*756.143...........*............................... +..691*.....700..708................-...357........*........$177......%..244.............................762.453....477-.707..-168..359*..... +.......................394.443....456......750..................71.160.....*..183.........835..74.........*.............../............129.. +....578$....................%........................362..1......*.......661....*...........=.....730......744..294..........247............ +..............415...306*....../.452.................+.....*......375.............76....186*....../...............*..........@.......-..441.. +.....*152......#........75.757.......204%..................605.............................77.......%405.......957..324...........404....... +..545.............../...........................................*....618......%...599...............................&....43.............=... +..............902...145............170..............568..741.285.592..........54./.......%.......923......522+..........*..../...128....602. +.......697.16*................322...........$............*............+339..........633.56............$..............792..751............... +.......*.........................*..752..826.......*...104..861......................................144.....883...............+..778.892... +......968..690.......#.....769#.718...*.........326..........*..............493..123..........362...........*.........757....570..@....*.... +..681.................242............806................509...307..../.....*......./.350..942...*..614@...511........+.................151.. +........*....../..256.......................235.....923....*..........28..264........*......&..316..............945....522........*823...... +.....961.136.567....................944.......*..........500..-.......................504................765$..........=.......563.......... +..................837..823......480.....627....984.#.........136....969..........-289......$757............................107........593... +.74.924....../.............+110....*...............511................+....564......................389%.....989*305....@...*.........*..... +.......+......110..735..........647....658.509*378..........-999............*....#225....937.............147.........778...868.....871..611. +.........$...........*.....3............*...........................608..842..............*.......589.......*....842...................*.... +......$.963.....634.....................569....&..........177................*..........774.........*..132.153..*.............=.......13.... +...723.........=.......@..324......455#.......417....849$.*.........*372..747.87............./358...35..*.......974..453...811...990........ +.....................174...%............949...............182....684.............414...................201.......................*...../.... +........@.......................62.....*.....-.@669.....................487......*................943.........740*...10.......298....384.... +....446.711.........20.674...........343..806.....................&.574.*........965..............*......776...........*.867................ +......*............&.......705.804.............................374....+.307............&.......683...830...*....625..530....*837...272*..... +.......791....................*.......&.................108...........................533..............*...966.*.......................515.. +............412...../................764....................658.+292.635.674..337.................98..814......263.......720*............... +..............*...469..162.....23......................*64..*...............*.............+.........*.....*552...............990......942... +790.536.......365.......*..587..=..........................313.....512....983....953.......348.....617.982.................................. +........580............227...*....673.808....66......595............./........*............................$..........21..989............... +.....#.....*.781...........688...*..../........=.........865...............316.162.440.............&......482.663....*.............529...... +...357...182.@......359=..........553.......#....33....................323.........*............702...........*....200........&.....*....... +...............733....................957.22..........815.........................57..657@..................792..........%.....678.305...... +..701..246........*238....553..107......*...................301..........649.555..............70....................610.233.&............... +....#...*..&.................$.*....$.......$......438.....*.......943......*.....&675..955*....*..........183...=....%.....595............. +......719.857...640*299............202...125...802..#...786...........*.....................277.424..........*.790./...............984...... +...@......................368.....................*...............323..587.479....553.272.................843.......518.............*....... +...382..........892...46..........359..372+.611..585...............*.......*........*...+........&.............................487...35..... +........&692.......*..*..............@.......-.......*697.......656.....155....34..681............64..641......................*............ +....495..........885..964................993......685................%........*....................../..........543.........863............. +..........*408................&....244.....*..........................893....339........................109.....................777......... +...521.985..................677......*......734........18....925#................352...843*74.......&....*.............260.......*.......... +...$........445.$..................802...................#..........=........533...@.................228..612......724....*................. +.............*..504............=.......*.....177...................502.....+..*.............395......................$.....274.....396...... +......................417....274.....61.504..*........36*..................34..801..........%............224......................*......... +......789.........139......&.....*............802........674....&..332..............675............819.............814............883..+915. +...@.....*.....-..*.....970...279.117...............984@.....878..........231*168.*..................*.........793*......................... +..33..875.....483.433....................*.........................................148.675...581*.....544.........................*537...... +......................884............671..839.....31..........685..@...899....350*...............621........*509............./.913.......... +....947......=742..........*.......................*...............712....*.......722...159............378........438.....300...........381. +...*....................548..-................*..638.....................827...........*......714/...../...867....$..................%.-.... +998.....966.693..............694...........781...........764......584...............233....58......-......*............67=........161....... +...........*.....................509..-851.........&.846..#........../...199.................*.443..658..976.130..489..................594.. +243....413.........499-...384.......*............352.+.............................752....298..*...............$..$...............577...*... +......*......................*......378.335.................*.........+...813.120.*....................654..........$........325...*...984.. +...847..496....151*...........741.......*............624.116....767.988..&.....*...87............807...*.........127....997+......621....... +........*..........227....345......*........@.....................*............699....566..604...*...760....290............................. +......526..................*..500..799...761...413*......277....101........$..........*.........342..........*.......589..997......=........ +.............+....379....549............................*............*97.647.779....$.655..975......216...............*.......51..307./496.. +...........485.......&...............................55...........509............825......+.....43.....*...554......36...678+.$............. +..........................73.....419.....314../...........311...........$....946.....272............351...*........................968../... +.....786.................*........-..824.$...478......908....*.....455.254.....*.........615....760.....60...$......&.....*562.........102.. +.......*......43.....&...808........*.............267.*...985.....*..........616.........../......*...........189....977........616......... +......45.932...*.....502..........805...943.840%...*..270......764......680......................750..415*184......................*606..... +..768....*.....941............%.......8.&..................*................248&..105..745...633...........................584..........692. +.......684............115....88...396*..................494.354...88...58.....................*.........956......809...53.......615......... +................*391.............................................$....%.....&64.............488...........$.........*.....*.......*......... +......440.459...........637...*....866...412.519.183..../.......................*82..963.........*307..=......715.408..421.292....626..*.... +.........*......$..........#...769............./..*....470.939.+......*.....257.....*.........257.....109.578..*.......................290.. +......+.......-..897...............................629.....-...834.254.798..*.......411....................*....411.......309....218........ +.......960..744..............384............................................433................$301.....848.................*.......#..144.. +..746............$....../...........38$...536.....-....@.............*..................-............................320...471..........*... +....*.............720...59......................260..852...........633.........714...510......256.173.23...850........*........#.....691.... +..294..434...264......................422../639..........378.493...........388*................-....*...*..../.141..............539......... +........../.&........790..........@....*....................*..........&............$.............16....633.....=.....................458... +..678...............&.......184....186.934..652...741%.........=887...980.425../....485.732...502...........%........745..............*..... +...*..........98.......@......*.................+...........................*...989.....$........*......838.9..........-...........464...... +.975..768....*.....*..702.....979....511$....161....645..............44.....18............721.695...348.........400......./.543*............ +........*.769....320......724......................&.....330&........*...................*...........$...188.....*.....977......618...%..... +......879.....79............*....658..............................601................701..490....#......*........478.......166.........892.. +..844.............706....472....*...........113.........-765..217........267....../.*..........648....973....285............................ +.....*.482..........*...........853....408.....*................&........*.......59.265.........................*.......364....45.......@... +..164..*...........309....472............#..478...40.......356........328....706..............$...............149.526.....%.....*.....27.... +...........................*.......&..................612...*..58.64%........*...766.......953......488............=.../.......152.......... +...*73....872.............347....27...22......552@.........559.*............435.....*679.............*...13.774......177.#250.......8*...... +977......#.........=....................=.......................56...508......................139.747.....*..*................861.....666... +..............703...102....../........&....637..448......%..951........*...175.552*235...@.....*.......486..693............................. +........944..*....@...........590..42.738...*..........861.....&....919.....*............108.837................#....963.530...831..&...251. +........#.....93.103....708................54.342....+......................496.......................&.........278.....*.....*....162...... +..........860............@.......$167..............431.683......=496....858.........422.............662.154.405..............635.%.......... +.....882/.*.............................%......611..........766.......-...*.....755..@.....................*..........608.........951....... +..........513......................274...226......*........@.......&..556.151....*.............229...681..............*.....911............. +..............445....375.....774....*...........348..............643.............302...........*........*.......-...88......*........975.... +....*664.........*...&........@.........................893..........523....13...............825.........558...733.....769...991.....*...... +.328......821....935...................&.......@...457.....*.....+..*.........=..................341..................#............384...... +.........*...........164..........251..756....23...........912.532..879..................459........*...=................................... +219.....71..821..............654.....................684........................@2....................931...........910..................... +............&...425+..-.............207........*.....%...360...........190..........69.....................43..........$.................... +.....................116....................127.214.........*..181........@..%...49*....444....57.........*.....................715......... +............$....*.............-..859.................=..248......*..........82........*.......@.......246..376.........#........*.......... +...726...898...-..772...223.712....%........%464.....342.........442..447.........461..102.....................*355...537....313..596...584. +....*.........189........@...............................................*187........*...............*....807.............+.....*........... +.....181.+..........197......530.653+.383...293.........461%.22*..............394....769..104...$.818.36.$....=.......&....860...333........ +..........827..........*................-....*..................110.883..................%.....56............111......872................... +........................8.321....-............209.....578...583.....$.....948..548#..................868*678......871....................... +......658...264...........&....105......132............./...................*..................640..................*...........714......... +.........+.*.....................................................................608..............*....963*565.....472.......93...*......... +...*717....14.......................702............604.608......................*.....12....689..599.............................423........ +999.........................764......*.......$780.....*.......+.......%........406....*...............278*........600*23.....407.....964.... +...........%....308................183................../......758..&..360..........127.#696...50........................839*.....&.....$... +......277..449....*............881.......822.....905...205.........345.......572@................../733....=..61...................796...... +.......#..........659...*.....=..........................................................................665...................292.......... +......................887.711.....560..........................11...213*434...................949....761......*856...233*996......%.965..... +.....699..../.............&....%......103...518...............................673......=.........*....@....149.............................. +............894......=......292..425.....#........@259....787..995..................927..813..326..............439.....379.547..292......... +....901............678.217......*..............................*.......289.346..875.........*.........653+......*......*....=.....$......... +......#........................56..887....&540..200...........824............&.....*.414=....629..............893..34.334................731 +...............476.......338........@..#............592..573*.....759...........598........$.........692..474.......*................304.... +..........................*..263*93...541....138......*..........*.....................260.187.......%...*.........436.................*.... +.....#..895............744.....................%.473...92........23..................$..#........853.....443......................12..339... +...284...*...59*...131...............................................=....354.792...679.....649....*.......................994...%.......... +.......267............*...............176..............=.............743.........*......631......856................166.......*............. +.....................684.................@...........773....108...........617...965....*........................958............777.....767.. +..........572................#....&.............................51........@..........190..............694..882.#......511..788.............. +...96........%.....119..4.954....81..836....@.....671....161.................*.........................#..*.......730.%...*................. +....................@.................*...68..924...........*...644.......654.842..473.....449.............936.....*......305............980 +..........188....7..........672......596.........@........473......*..................*418....&.......302.........7...621.....476...938.*... +.......@...*...........#824..*...303...........................%....486..........290..................*.....-907.....*.......*......*...686. +....869....976...478*.......56..*...........*..................415......97.@605.....................129............701....626....157........ +.....................455.......306.876......829............430..................956.15@.......302..........938.............................. +..........................43.......*..............$.......-.....998...106.......=.......486*....&.......+......................982.......... +.554......................*.......50.231.........409..............+...$.....*........72.....716.........51..445.....*284........*........350 +.........425............*.94..836......&..............#516..............775.701.....*............................744..........541......-.... +....*810..............34....................&....297..........#........*....................#.............899=..........972..........27..... +960........762.....................*........394........&355.401........347.....+853.....&...967............................*86..663......... +............*..........991......686.25.286.......&...................................653...........914........$.....580...........*......... +...#.....784......-.......*............*......498......*..........*..316........................&.&..........691.2.....*........91.......... +..791..............462....193..........8.............57.685.......90..........201............371.....242............996................579.. \ No newline at end of file diff --git a/AdventOfCode/Inputs/26.txt b/AdventOfCode/Inputs/26.txt deleted file mode 100644 index b159ea4..0000000 --- a/AdventOfCode/Inputs/26.txt +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/AdventOfCode/Program.cs b/AdventOfCode/Program.cs index 12312e5..0739d46 100644 --- a/AdventOfCode/Program.cs +++ b/AdventOfCode/Program.cs @@ -1,8 +1,13 @@ +using System; +using System.Linq; +using AoCHelper; + if (args.Length == 0) { await Solver.SolveLast(opt => opt.ClearConsole = false); } -else if (args.Length == 1 && args[0].Contains("all", StringComparison.CurrentCultureIgnoreCase)) +else if (args.Length == 1 && args[0] + .Contains("all", StringComparison.CurrentCultureIgnoreCase)) { await Solver.SolveAll(opt => { @@ -15,4 +20,4 @@ await Solver.SolveAll(opt => var indexes = args.Select(arg => uint.TryParse(arg, out var index) ? index : uint.MaxValue); await Solver.Solve(indexes.Where(i => i < uint.MaxValue)); -} +} \ No newline at end of file