usingSystem;usingSystem.Collections.Generic;usingSystem.Diagnostics;usingSystem.IO;usingSystem.Linq;usingSystem.Text;namespaceAdventOfCode2020{staticclassDay9{//Declaring numberToConsider so it can easily be changed when testingstaticintnumberToConsider=25;staticList<long>input;staticintfirstposition=numberToConsider;staticlongfaultingNumber;publicstaticvoidExecute(){input=File.ReadAllLines("//input").Select(r=>long.Parse(r)).ToList();//Added a imer just for funvartimer=newStopwatch();timer.Start();while(true){faultingNumber=input[firstposition];if(!SumFound(faultingNumber,firstposition))break;firstposition++;}//Part 2:varanswerPart2=FindSumUpToAnswer();timer.Stop();Console.WriteLine($"Part1 answer: {faultingNumber}");Console.WriteLine($"Part2 answer: {answerPart2}");Console.WriteLine($"Executed in: {timer.ElapsedMilliseconds} milliseconds");}privatestaticlongFindSumUpToAnswer(){firstposition=0;varsecondPosition=1;while(true){varlistToCheck=input.GetRange(firstposition,secondPosition-firstposition);varrangeResult=listToCheck.Sum();if(rangeResult==faultingNumber){returnlistToCheck.Min()+listToCheck.Max();}//By adding to either the first or second position a window is created and results are re-used instead of creating a new list every timeif(rangeResult<faultingNumber)secondPosition++;elsefirstposition++;}}privatestaticboolSumFound(longnextNumberToCheck,intposition){varworkingList=input.Skip(position-numberToConsider).Take(numberToConsider).ToList();workingList.Sort();for(inti=0;i<numberToConsider-1;i++){varvalueNeeded=nextNumberToCheck-workingList[i];varresult=workingList.BinarySearch(valueNeeded);if(result>=0)returntrue;}returnfalse;}}}
`
For further actions, you may consider blocking this person and/or reporting abuse
We're a place where coders share, stay up-to-date and grow their careers.
C# solution.
Top 3 love rank:
`