Advertisement
Guest User

AOC 2020 09

a guest
Dec 8th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.10 KB | None | 0 0
  1. var input = File.ReadAllLines("input.txt");
  2. var data = input.Select(l => long.Parse(l)).ToArray();
  3.  
  4. var preamble = new Queue<long>(data.Take(25).ToArray());
  5. bool find(long num) {
  6.     foreach (var i in preamble) {
  7.         if (i > num) continue;
  8.         foreach (var j in data) {
  9.             if (j > num) continue;
  10.             if (i + j == num) return true;
  11.         }
  12.     }
  13.     return false;
  14. }
  15. (bool ok, long number) part1() {
  16.     foreach (var i in data.Skip(25)) {
  17.         if (i < preamble.Min() || i > preamble.Max() * 2 || !find(i)) {
  18.             return (true, i);
  19.         }
  20.         preamble.Enqueue(i);
  21.         preamble.Dequeue();
  22.     }
  23.     return (false, 0);
  24. }
  25.  
  26. var p1 = part1();
  27. Console.WriteLine($"Part 1: {p1}");
  28.  
  29. long part2() {
  30.     for (int i = 0; i < data.Length; ++i) {
  31.         var sum = data[i];
  32.         for (int j = i + 1; j < data.Length; j++) {
  33.             sum += data[j];
  34.             if (sum == p1.number) {
  35.                 return data[i..j].Min() + data[i..j].Max();
  36.             }
  37.         }
  38.     }
  39.     return -1;
  40. }
  41. var p2 = part2();
  42. Console.WriteLine($"Part 2: {p2}");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement