diff --git a/AoC2018/AoC2018.csproj b/AoC2018/AoC2018.csproj index d7cbc85..40f6b2a 100644 --- a/AoC2018/AoC2018.csproj +++ b/AoC2018/AoC2018.csproj @@ -9,6 +9,9 @@ PreserveNewest + + PreserveNewest + \ No newline at end of file diff --git a/AoC2018/Input/Day2Input.txt b/AoC2018/Input/Day2Input.txt new file mode 100644 index 0000000..c5eb51a --- /dev/null +++ b/AoC2018/Input/Day2Input.txt @@ -0,0 +1,250 @@ +ybruvapdgixszyckwtfqjonsie +mbruvapxghslyyckwtfqjonsie +mbruvapdghslzyckwtkujonsie +rwruvapdghxlzyckwtfqjcnsie +obruvapdgtxlzyckwtfqionsie +lbruvapdghxqzyckwtfqjfnsie +mbrunapdghxlzyccatfqjonsie +mbruvapdghxlzyokltfqjdnsie +ybruvapdghxlzmckwtfqjmnsie +mbruwaadghxdzyckwtfqjonsie +muruvapdghxlzyckvtfqjonsim +mbruvapdghxlkyckwtxqjonjie +mbruvaqdghxlzyckwtfqjrnnie +mwruvapdghdlzyckttfqjonsie +mbruvapdgtelzyckwxfqjonsie +mbruvapdohxlzvckwtfqjonhie +mbrugapdgbxlzyckwtfqjynsie +mbruvapdghxlzyckwtlqjonjiu +mbruvapwghxlzyckwafqjonbie +wbruvapdghxlhyckwtfqjonsii +mbruvapdghxlzyckwtcqnonsiq +mbyuvapighxlzybkwtfqjonsie +mbrrvapdghxvzyckwtfqjonsio +mhruvapdghrlzyckwtfzjonsie +mtruvapvghxlzyckwtfnjonsie +mmrlhapdghxlzyckwtfqjonsie +mbruvapdgpxlzyjkwtfqjovsie +mbrucapdghxlzymkwtzqjonsie +mbeuvafdghxlzyckwtfqjonwie +mbruvapcghxlayckwtfqjonsii +mbruvabdghxlzyckwtfqyansie +mbruvjpdghxlzyckwtfqgfnsie +lbruvapdghxlzyckwtfqjonriv +mbrupapdghxlzycjwtfqronsie +mbpuvapdthxlzymkwtfqjonsie +mbiuvapdgixlzyckwxfqjonsie +mbruvapdghxyzyckwtfcjonsbe +mbrurapkghxlzyckwtfqjonzie +mbrufapdrhxlzyciwtfqjonsie +mbruvapdghxlzbckwtfqjoisae +ubruhapdghxlzuckwtfqjonsie +mbruvapdjhulzyckwtfqjonshe +mbruwapdgyxlzyckntfqjonsie +mwruvapdghplzyckwtfqjonsme +mbruvapjghtlzyckwtfqgonsie +pbruvapdghhlzyckwtfrjonsie +mbruvgpdihxqzyckwtfqjonsie +mbruvahdohxlzyckwtfijonsie +ibuuvapdghxlzyckwtfqjofsie +mbruvandghxlzyckwtfqjrnxie +mbrjvlpdghxlzyckwgfqjonsie +mbruvapogfxlzyckotfqjonsie +mbruvrpdghxlzyckutfejonsie +mbruvbpdghxlzyhkwtfqjonsip +mbruvapdghxlzyckmnfqjensie +mbruvapdghvlzyckwtfqjowsix +mbruvakdgholzwckwtfqjonsie +mbruvapdghxlzackwtfqconsae +mbruvapdghxlzyqvwtfqjlnsie +mprrvapdgfxlzyckwtfqjonsie +mbrunacdghxlhyckwtfqjonsie +obruvapdgsxlzyckwtfqjonvie +murcvapdghslzyckwtfqjonsie +mbruvapdghxlzyzkwmftjonsie +mbrwvapdgtvlzyckwtfqjonsie +mbxuvapdghxlzqcnwtfqjonsie +mbruvaddghxboyckwtfqjonsie +mhruvwndghxlzyckwtfqjonsie +mbrdvapdghxlzyckwmpqjonsie +mbruvapdgyxlzyckizfqjonsie +mbruvapdghxlzlckwtfqeowsie +mbruvbpdgrxlzyckwtfqjonsxe +mbruqapoghxlzyckwtvqjonsie +mbouhapdghmlzyckwtfqjonsie +mbruvapjghxidyckwtfqjonsie +mbsuvapkghxlkyckwtfqjonsie +mbruvlpdghxlzycrwtfqjonsis +mcrueapdghxlzyckwtfqjynsie +muruvapngbxlzyckwtfqjonsie +mbruvapdghxlzycawtfyjojsie +mbruvbpdghxczyjkwtfqjonsie +ybduvapdghxnzyckwtfqjonsie +mbruvbpdghxlzyckwtfbjousie +mbouvapdghxlzycbwtfqponsie +mbruvaedghplzycgwtfqjonsie +mbrhvapdghxlzyckytfqjgnsie +mbruvapdqbxleyckwtfqjonsie +mbruvapddhhldyckwtfqjonsie +mbruvapdghxlwrckwtfqjondie +mbruvapdmhxlzyckwtfqkonsve +xbbuvapdghxlzyckwtfkjonsie +mbruvapdghxlzyckwcfqjunkie +mbruvapdghxlzyckwtfqxonfib +mbrtvapkghxlzyckwtfqeonsie +mbruvazdghxldymkwtfqjonsie +kbruvapddhxlzfckwtfqjonsie +mbouvapdghxlpyckwtfqjoosie +mbauvapdghxlzyckwtfqjszsie +mbruvapdghtlzyckntfqtonsie +mbruvipdggxlzbckwtfqjonsie +mbruqapdghrlzyckwtfqjznsie +myruvacdghxlzyckwifqjonsie +mbruvapdghxlzuckwtfkjocsie +mwjuvapdghxlzyckwtfqjonsxe +mbruvapxghxlzickwtfqjobsie +mbrupapdghxtlyckwtfqjonsie +meruvapdjjxlzyckwtfqjonsie +mbruvkodghxlzyckwofqjonsie +mbruvapdgexlzyckwtgkjonsie +mbruvapwghxlzyckwtcqjonsiw +mbruvapdghxlzykkwtfqtoxsie +mbruvapdahxlzycgwtfwjonsie +mbruvapdgwxlhyckhtfqjonsie +mbruvapbghxlzycbhmfqjonsie +mbruvapdghxvzyzkwtfqjonsin +mbrcvapdqhxlzyckwyfqjonsie +zbruvaxdghxlzyckwgfqjonsie +mtruvapdghxlilckwtfqjonsie +bbruvapdghxlzyckwtfmjonsxe +mbruvajdghxlzyckwtfqfwnsie +mbruvapdgkxlzyckwtfqionpie +rbruvapdghxlryckwdfqjonsie +mbruvandghxlzyckwmfvjonsie +mbruvahdghxlzeckwtfqjonsme +mbruvnpcghxlzyckwtfqjobsie +mbruvapdghqlzyckwtfbjonsiy +mbruvavdghxlzyckwufqjodsie +mbruvapdghxlzyckwtfzmovsie +mbruvlpdghxuzyckwtfqjoesie +mbruvopdghxlzycwwtfqjansie +obruvapdghglzybkwtfqjonsie +mbpuvlpdghxlcyckwtfqjonsie +mbruvaidghxlzyckwtfmjonoie +mbruvapdihxzzyckwtfqjonsiy +mbquvapdghxlzyckwtfqconsme +mbruvapdghslzyckqtfqjojsie +mbrzdapdghxmzyckwtfqjonsie +mwruvapdghxozyckwtfqjonsxe +muruvapdgfxlzyckwtfqjojsie +wtruvapdghxlzyckvtfqjonsie +mbruvapdghxlzyckysfqjxnsie +mbruvrpdghxczyckktfqjonsie +mbquvapdghxlryckwtfqjonsne +mbruvapdghflzycvwtfqjpnsie +mbruvapughclzyckwtfqjonsin +mbrhvapdghxlpyckwtfqjonsre +mbruvapdgtxlzyckwtfqjoosit +mbrupapnghxhzyckwtfqjonsie +mmvuvapdvhxlzyckwtfqjonsie +mbruvaptghxlzyckwtfqjotsse +mgruvapvghxlzyckwtfqjonsix +mbrupapdghxszyckwtfqjunsie +mbruvkpdghelzyckwtfqjpnsie +mbruvrrdghjlzyckwtfqjonsie +mbruvapdghnlzyckwtfkjonsze +mbruvwpdghxlzyckwtfqhoysie +mbrsvapdfhxlzyckwtfqjobsie +mbruvapdgexezymkwtfqjonsie +ybruvapdghxlzyckwtfqxonsiw +mrruvapdghxdzyckwtfqjossie +mbruvapdghtlzyckwtfqconsiu +mbrpvapdghxlzlckwpfqjonsie +mbruvjpdghslzyckwtfqjjnsie +mhruvapoghxlzyckwtfvjonsie +mbrubqpdghvlzyckwtfqjonsie +mbruvapdghxlzackwtfqconsiw +mbruvapdgnxlzkckwtfqjdnsie +mbrudapgghelzyckwtfqjonsie +mbruvapdghxlzlakwbfqjonsie +mbpuvapdghxlzyckwtuqjonjie +abruvapdghxlzykkwtfqjonzie +mbrupupdghxlsyckwtfqjonsie +mbrsvupdghxlzyckwtfqjonkie +mxruvgpdghxllyckwtfqjonsie +mbrnvapdghxlzycbwtfqfonsie +mbrbxapdghxlzyckttfqjonsie +mbnuvapdghxlzyxkwtmqjonsie +mbrfvapdghjlzickwtfqjonsie +mbhuvupdghxlzyxkwtfqjonsie +mbrcvapdghxluyckwtfqjznsie +mbruvapdghxlzyckwofqjoxsiz +mbrevapdghxloyckwtfqjonnie +mbruvipdghnlzyckwtfqjopsie +mbxxvaptghxlzyckwtfqjonsie +mbruvcpdghxlztckwtjqjonsie +mqruvlpdghxlzyckotfqjonsie +mbruvapdgqxlzyckwtfqjpvsie +mbruvapdgvxlzyjkwtfqjbnsie +mbruvapdghxlgyckwtfqcocsie +mbruvapdghxkwyckwtfqjoqsie +mbrgvavdghxlzyckwxfqjonsie +qbruqapdgvxlzyckwtfqjonsie +mbauvapdghxlzgckwtfqjunsie +mbruvapdgdxluyckwtfqjoosie +mbruvapdghxlzykkwtfqwobsie +mbruvapdghxlzhcnwtfqjonqie +mbruvapdghxlzycbhmfqjonsie +mbruvapdghxluyczwtfqjontie +mbruvapnghxlzyckwnfqjonbie +moruvapdghxlzcckwtfqponsie +mbruvapfgxxlzyckwtfqjunsie +mbruvapdghxlryckvtfejonsie +mbrzvapdghxlzvcbwtfqjonsie +mbruvapdgqxlzyckwcfqjonsce +abruvupdrhxlzyckwtfqjonsie +mbrubaptghxlzyckwtfqjondie +mgruvapdgpxlzyckwtfijonsie +mbruvapdghxczlckwtfujonsie +mbruvapdgmmlzyckwtfqjonsir +mbruvapdhhxltyckwtfdjonsie +mbruvapdghxlzyckwtfdjjnste +mbrdvzpdghxlcyckwtfqjonsie +mbruvapdghxlzyckwtnqbonsim +mbrovapdghxlzyckwtfpjousie +mymuvapdghxlzyjkwtfqjonsie +mbpuvapdghxlzyckwtfljcnsie +mbrxvapdghxlzyclwtfqjonpie +mbrueapdghxlzyckwtfqjopsia +mbruvapdghxlzycdwtfqjbfsie +tbruvavdghxlzyckwtmqjonsie +mbduvapdghxlzyckwrfqjrnsie +mkrsvapughxlzyckwtfqjonsie +mbruvapdghylzyckwtfqtolsie +mgruvapdglxldyckwtfqjonsie +mbrunapdghclzyckwtfqjonsiy +mbruvapdgrxlxyckwtfgjonsie +mbruvapdghxpzbckftfqjonsie +mbruvcpdghxyzyckotfqjonsie +mbruvapdghxlsyckwtfqcqnsie +mbruvapdghxlzzckwtfqjonskf +mbruvppdghxlzfckwtfqjgnsie +mbhuvapdghxlzytkwtfqjonoie +mbruvapdghxlzvrkwtfqjjnsie +mbmuvapdghxuzyckwtfqjonsze +mbruvapdghnlzycnwtfqjonsil +mbruvapdgholzyckitfqjonsia +mbruxapdghxlmyckwtfqbonsie +mbauvapdgholzyckwtfqjolsie +mbruvapdghxlzyckwtfqjotslq +dbrutapdghxlzyckwtfqjonsiv +mbruvapdzhxlyyckwtfbjonsie +mmruaapsghxlzyckwtfqjonsie +mbruvaldgqxqzyckwtfqjonsie +mbruvaodghxdzyjkwtfqjonsie +mbrcmatdghxlzyckwtfqjonsie +mbrqvapdgtxlzycewtfqjonsie +mjruvapdghzlzyckwtfqjonrie +mbruvapdghxopcckwtfqjonsie +mbruvapdghxszycwwtfqjoqsie +mbruvapdgoxezyckwtjqjonsie \ No newline at end of file diff --git a/AoC2018/Solutions/Day2Solution.cs b/AoC2018/Solutions/Day2Solution.cs new file mode 100644 index 0000000..15395be --- /dev/null +++ b/AoC2018/Solutions/Day2Solution.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; + +namespace AoC2018.Solutions +{ + public class Day2Solution: Solution + { + public override string Title => "Inventory Management System"; + + public override int Day => 2; + + public override void Run() + { + string[] input = File.ReadAllLines(Path.Combine("Input", "Day2Input.txt")); + + Console.WriteLine($"Part 1: {CalculatePart1(input)}"); + Console.WriteLine($"Part 2: {CalculatePart2(input)}"); + } + + private int CalculatePart1(string[] input) + { + int value1 = 0, value2 = 0; + + foreach (var s in input) + { + bool two = false, three = false; + + var result = s.GroupBy(c => c).Select(c => new { Char = c.Key, Count = c.Count() }); + foreach (var x in result) + { + if (x.Count == 2) + two = true; + else if (x.Count == 3) + three = true; + } + + if (two) value1++; + if (three) value2++; + } + + return value1 * value2; + } + + private string CalculatePart2(string[] input) + { + string result = string.Empty; + + for (int i = 0; i < input.Length; i++) + { + for (int j = 0; j < input.Length; j++) + { + var commonChars = CommonChars(input[i], input[j]).ToArray(); + if (Math.Abs(input[j].Length - commonChars.Length) == 1) + return new string(commonChars); + } + } + + return result; + } + + private List CommonChars(string left, string right) + { + List identicalList = new List(left.Length); + + for(int i = 0; i < left.Length; i++) + if (left[i] == right[i]) + identicalList.Add(left[i]); + + return identicalList; + } + } +}