diff --git a/Advend Of Code Runner/Program.cs b/Advend Of Code Runner/Program.cs index c8e430f..3bdd507 100644 --- a/Advend Of Code Runner/Program.cs +++ b/Advend Of Code Runner/Program.cs @@ -8,7 +8,7 @@ string _demoData = @"2-4,6-8 6-6,4-6 2-6,4-8"; -Answerable answerable = new Day05Part2(); +Answerable answerable = new Day01Part1(); byte[] dataArray = File.ReadAllBytes(answerable.DefaultInputFile); //dataArray = Encoding.UTF8.GetBytes(_demoData); diff --git a/Advent Of Code Library/2022/Day 01/Day01Part1.cs b/Advent Of Code Library/2022/Day 01/Day01Part1.cs index 278556e..2444275 100644 --- a/Advent Of Code Library/2022/Day 01/Day01Part1.cs +++ b/Advent Of Code Library/2022/Day 01/Day01Part1.cs @@ -11,8 +11,8 @@ public override string GetAwner(byte[] data) { return GetAsString(data).TrimEnd() - .Split(Environment.NewLine + Environment.NewLine) - .Select(s => s.Split(Environment.NewLine) + .Split(NewLine + NewLine) + .Select(s => s.Split(NewLine) .Sum(Convert.ToInt32)) .MaxBy(v => v) .ToString(); diff --git a/Advent Of Code Library/2022/Day 01/Day01Part2.cs b/Advent Of Code Library/2022/Day 01/Day01Part2.cs index 28ea161..e28abb3 100644 --- a/Advent Of Code Library/2022/Day 01/Day01Part2.cs +++ b/Advent Of Code Library/2022/Day 01/Day01Part2.cs @@ -12,8 +12,8 @@ { return GetAsString(data).TrimEnd() .TrimEnd() - .Split(Environment.NewLine + Environment.NewLine) - .Select(s => s.Split(Environment.NewLine) + .Split(NewLine + NewLine) + .Select(s => s.Split(NewLine) .Sum(Convert.ToInt32)) .OrderByDescending(v => v) .Take(3) diff --git a/Advent Of Code Library/2022/Day 05/Day05Part1.cs b/Advent Of Code Library/2022/Day 05/Day05Part1.cs index db5653b..0e51678 100644 --- a/Advent Of Code Library/2022/Day 05/Day05Part1.cs +++ b/Advent Of Code Library/2022/Day 05/Day05Part1.cs @@ -11,10 +11,10 @@ public override string GetAwner(byte[] data) { - string[] initAndInstructions = GetAsString(data).Split(Environment.NewLine + Environment.NewLine); + string[] initAndInstructions = GetAsString(data).Split(NewLine + NewLine); CraneWork work = new CraneWork(); - work.ReadInitialContainerArrangement(initAndInstructions[0].Split(Environment.NewLine)); - foreach (string instruction in initAndInstructions[1].Split(Environment.NewLine)) + work.ReadInitialContainerArrangement(initAndInstructions[0].Split(NewLine)); + foreach (string instruction in initAndInstructions[1].Split(NewLine)) { work.DoCraneWork(instruction); } diff --git a/Advent Of Code Library/2022/Day 05/Day05Part2.cs b/Advent Of Code Library/2022/Day 05/Day05Part2.cs index 99f8ceb..949b4d5 100644 --- a/Advent Of Code Library/2022/Day 05/Day05Part2.cs +++ b/Advent Of Code Library/2022/Day 05/Day05Part2.cs @@ -11,10 +11,10 @@ public override string GetAwner(byte[] data) { - string[] initAndInstructions = GetAsString(data).Split(Environment.NewLine + Environment.NewLine); + string[] initAndInstructions = GetAsString(data).Split(NewLine + NewLine); CraneWork work = new CraneWork(); - work.ReadInitialContainerArrangement(initAndInstructions[0].Split(Environment.NewLine)); - foreach (string instruction in initAndInstructions[1].Split(Environment.NewLine)) + work.ReadInitialContainerArrangement(initAndInstructions[0].Split(NewLine)); + foreach (string instruction in initAndInstructions[1].Split(NewLine)) { work.DoCraneWork(instruction, false); } diff --git a/Advent Of Code Library/2022/Day 06/Day06Part1.cs b/Advent Of Code Library/2022/Day 06/Day06Part1.cs new file mode 100644 index 0000000..e8ea554 --- /dev/null +++ b/Advent Of Code Library/2022/Day 06/Day06Part1.cs @@ -0,0 +1,23 @@ +namespace AdventOfCodeLibrary._2022 +{ + using AdventOfCodeLibrary.Shared; + + public class Day06Part1 : Answerable + { + public override int Year { get; set; } = 2022; + public override int Day { get; set; } = 6; + public override int Part { get; set; } = 1; + + public override string GetAwner(byte[] data) + { + int markerLength = 4; + for (int skip = 0; skip < data.Length - 1 - markerLength; skip++) + { + if (data.Skip(skip).Take(markerLength).Distinct().Count() == markerLength) + return (skip + markerLength).ToString(); + } + + return "nothing found"; + } + } +} diff --git a/Advent Of Code Library/2022/Day 06/Day06Part2.cs b/Advent Of Code Library/2022/Day 06/Day06Part2.cs new file mode 100644 index 0000000..e437160 --- /dev/null +++ b/Advent Of Code Library/2022/Day 06/Day06Part2.cs @@ -0,0 +1,23 @@ +namespace AdventOfCodeLibrary._2022 +{ + using AdventOfCodeLibrary.Shared; + + public class Day06Part2 : Answerable + { + public override int Year { get; set; } = 2022; + public override int Day { get; set; } = 6; + public override int Part { get; set; } = 2; + + public override string GetAwner(byte[] data) + { + int markerLength = 14; + for (int skip = 0; skip < data.Length - 1 - markerLength; skip++) + { + if (data.Skip(skip).Take(markerLength).Distinct().Count() == markerLength) + return (skip + markerLength).ToString(); + } + + return "nothing found"; + } + } +} diff --git a/Advent Of Code Library/2022/Day 06/day-06-input.txt b/Advent Of Code Library/2022/Day 06/day-06-input.txt new file mode 100644 index 0000000..018e357 --- /dev/null +++ b/Advent Of Code Library/2022/Day 06/day-06-input.txt @@ -0,0 +1 @@ +qhbhzbzzfrzrbzzcjzjrrvcvrvqvvnggnngcgssswbblplrlflfnnnmmjppgddqndnrnlnccpfcfjcjvjdjqqqmhhmwhwmmsnsvsjvjnvjnvjvsjsmjsjccwcqwcqwqjqwjwmwbmmbzbsbvsslbsbbbntnvvphpqqvrrtbrtrfftppbggpzzfhfcfsfmssffmbmzzmqzzblzzzmwwnggjwgjwgjgpgmmjvvmcvmmcfchfhllwmlljqqldqdqttsgsvscsmsnsmstmtssvgsgddwdffbppwfpplhlchhhdvvdrrmttmptmmmjsmshmmmgqmgggzjgzzmwzwcwhchqqfpfvvbqvbqbrblrrmtmstmmjvmmdnmmzczdzpztppjhjjwzjjjtdjjpljpjcppjllsffhbffbhhgttqjqzzfzbzcbzcbcrrjjrwrgwwbcbpcccctrtqtfqqfjjpgpdgdfgfrggpjjljglgclcqcqmcqmmgjjllpmphpjjgfjjqrrbppwmpmccftctjtjgjtgggzffcggwzzzdjdzzlgzgjzzvqvppczzjnjvvfhhtwtttdwtdtvddpzpnpcnppmvmcmcsmstthctchcggtssdttvztvvldlfftqqbzzjttvzztppscctzccgmcmvmhhchcscbbshbssgwwthwhmwwcgwcwrrvrzvrzzzvhvdvmmprrdmrmfmrmbmjbbmqbmbqqhbbszsjjlqjljtjstshhgphpffdhhtggtgbbqcqgqccfffcpcbpbfppwqpqcclbbwdwsscpchhfpfmpfmflfnnmggwrrznnghgvhhghrrhwrrcschcscqcmcfcvvgzztjtqjjshspsqsmmjnnmttsshvhmmqfqzztbzttvhttmwttnqnfncfcpfflmllmtlmmphmhlmmltmtztcczhzbbfmmlglnnfpppqplljwjfwfdwdzwddszddqzqnzzzwwlzzqvvjlllrwlrrmpmrmbmpplpspqsqmqcmcjjshsvstvvwtvthvvrfvvqmmjpmjmrjmmlvvnnrjjrcrwrhwwqzzvgvngncgcqqcffmfzfssbnbfblbggwhggmtgtvvqhhpttbcbczcjjbqbhqbhqbbccbhbqhbbmppdlpdllbvvdpvdvwvsvppllgblbttmcmtccbsswmswwwzfwfhhtfhthctchcfhhhfjjvhjhgjjjcwjwggrtgrttcqcwcswccfdffvpvtptprrvjjqvjjghggshhwmmcscmsmhmvmppprfrwwrhhvghhtnhncctbbbwzzbgzgdzgdzdpdvpvbbwgbwwrqwrqwqbqvvclccfcfzfdfrrthrrqcqddplpqlppbbfrfmmrmnnwhhgddmwwrzrsswpwhwdwhhsmhshqsqllbvlbllwbwbpwwfwmwsmspsvsdsbscctpctppvvpggtjjdmdqqgqbgglccvzcvcnczcgzgmzznpzzpcpnpvpcvvffrttqrqttflfbfjfnnwnlwlhwwqzqnqfftstdsttglldwwgqwwvqqzczfzdffbfsfssfwswdwnwdnnbcncwctttvsvjsvsrvvbtvvzhhvjvtvtjtsjjvhjjwpjjnzzpczzppgcpgcpgcgsgvsgvsscrcpcpspllzvzddpssssdpsddhffllzmzhzfhhdvhhvbvwwpwqpwqpwwmvwmvwvgvmvpvmpmrmzrrblltjtggvnggvppthhzjhzhffrvrhvrhrlrslsflfhhtvhvmmhppjgpjpcccmqcqvqhvvfssrtmnwjjslwhjgpvrwspjlwdwrmvfgwmplrmjrllndrjzvjfbwvzpjpfqrnjspwcpsgcvdlmfdfrvwdcvmbrnzncgnqlcvgqtpsbbpvprncdsgvpqbpcnffwqmmfsvnzspchhrlnzbhcdfdgtsllmqfbrcqwbmmzrfvsghjpmrndsdbqvtprmblnbvbnpvhtphbpjwdssvwgdzwztbpzdcsqzldjzrgcwhhspblrtncvntppcgttlflflnntcnzpbpgsclcjvbjhldcdzwjjhnfwzjmgcwtljhvbncwqnjhbrhfqcmnsdvntsbgnpqttzvbhzzpdznrhjpnsqzsztsblstbghlpwbmqjctlnqnttwshfvmjdhgbgjdhbzrfjqndrrhlqcmplczjtwpstlsmwwzqzmgvhsvjgbrtfwmvwlbhpccbqvmfmlgmbmbmldbcwmmhpnnbnffbnqgwhclgpzgbpjqvzmqhhhpltnwrdfrrnmlfrzflpnjztlnfzzzgmncprtblpsvrqgrnzbzfzhzhjjjdrnpvjpnwmlmlgvvtqmdvpnhvcrdmthcnnnvhnzmvgrtdvcthgjtvcgmtpsvmfztrflrrzbmcfhftwwcnjfpjtsnzjccmvdnrrwvbfjgcjttdvzncqhlqqphwphclztbhlqcfmnhcjmsscplnrsjqpdzrrzbthbcdnrzgdmstpgqqsvzclvmzjjdfqhhhttwcjtmwcbltghmslqvltqbjqqjpjvgntvnlttjcnhltflglgsmjwjjfldpfgjgrhttbwfhpsdbsmsfmfbtjlnhvjfqjrqhwdrcwpfthdgqzjjjfcvgdffrhvvwzfghpszmjjgscjvjnlgnbfbgfrbbzbzbnzngthrddfmsgsqqdddpfqwlchfblrvjdcgnzfzwmmnmvnzmpfmhbbhsbfdfclzcnbrlgpbsvfgfpshrpvpgccmmghphrcvzwnlqjcfwrtwvlvcsdldldvnpwgrcsqlftllcctnvcwbdswvqlzwzzbpmvvctcrgnjfstbqvnzczrjlljfqzrwtfwmlvvdfbfntrrljtbrtbdfsqpnppfbppbsmghbnqddhrvwmgzttnqjrqlfrdhqjndmnjlbctgclltmznmrqtfjsjwnztdvhnhlfwpnnqlhhsrfzglsnrdnfvrqssbtlthzfnjdvrcgzsbnpdgqhhrlwspfqfqpvzdfwgrlhwplzvbzprsqzcwvhggvzpgjztnvwvddsflgsvqljmmhhdzqsqmthwzvllqwmsnvdpdbjcgdtrsnmwhnzhbhgjssstmhrpssnhnntmrbbbjgmjqtncbdljcgtmbctpgdrnqcnrpssrdtpbsmlzlcztbrggglswnjzqgbsmgbqdzppqrwgtnlrjrvlpnqlcdwhltzzlqdwwrglldzcqrjtjtlgdqrtwzjgtdthsdccsmsrbjjsgdqcwdltvnjwtddsnpnsvzcdbfqnvsjbngqrztmbrnbvhhjzdtqrgldpvjqjpnshbjdsdgbjdjzdmrvzhwmtgcjrfnprstqgfgnwfpcjzhlnwpdbtqbspssqdrzhmmsrqtlwngvbrvgdgztnrlwcnqwvcdmhhdrmpfqbgbjpvzwbsbgcpsnpjplcrjdhflqvsdctclqqnmprngtvbmlmpqrsqdsrzgsmzmsczpsnmfmtfnjvnddjhqbjdvtgftjfvjhgpjqdhlszqjmcbnwrppzwjvmgblspjmfhjdbnmrllnfqlpcbndvqdzhhmmrpsljgdshpnrgnmwfjsdncqcwlctccrqghfdbsqqbnwctcqpvlrqqqvdjwlcnzmvdmcvlwnftjnqqldfwhmdtcpnlgfcdjdrfvmwqdzsjzctmmmrswhlwthttvcsqqscdcsmjgqfjhswlpsfjrppdmbwrthcwszqwwgnjsdqdrswmnzbrvqcwlrlwwvjmrrhsnzprggbzhhdqwvnspsmzzqdtbphzvwrzvqnbntjndrwllzwchczdwvnfjjdwfhdlgncftldzwdtjzjrmnfwwgmqdrltmgrfsjztfcvwjsggtvbnsvthflwfdtljrgqhmfqhmhfffqhtgwtlmwgzsglqnfwnrnvgvbdgqjrqtsmgsmzdpffnnzwlpbqphqmgdzspfrdqlptwmfwlgnqqdhtbbjtfhllrhhdcszjtmrprzhzzlgjqbcnhzcmhzrsnmmrzztffrldthhfvwhgjhwmjfbdvnllfmlpdsldjnpcwlpbwqzdwbgjb \ No newline at end of file diff --git a/Advent Of Code Library/Shared/Answerable.cs b/Advent Of Code Library/Shared/Answerable.cs index 476aee2..927a441 100644 --- a/Advent Of Code Library/Shared/Answerable.cs +++ b/Advent Of Code Library/Shared/Answerable.cs @@ -10,12 +10,9 @@ namespace AdventOfCodeLibrary.Shared public abstract int Part { get; set; } - public string DefaultInputFile { - get - { - return $"../../../../Advent Of Code Library/{Year}/Day {Day:00}/day-{Day:00}-input.txt"; - } - } + public string DefaultInputFile => $"../../../../Advent Of Code Library/{Year}/Day {Day:00}/day-{Day:00}-input.txt"; + + protected string NewLine => "\n"; public abstract string GetAwner(byte[] data);