Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var input = File.ReadAllLines("input.txt");
- var data = input.Select(l => long.Parse(l)).ToArray();
- var preamble = new Queue<long>(data.Take(25).ToArray());
- bool find(long num) {
- foreach (var i in preamble) {
- if (i > num) continue;
- foreach (var j in data) {
- if (j > num) continue;
- if (i + j == num) return true;
- }
- }
- return false;
- }
- (bool ok, long number) part1() {
- foreach (var i in data.Skip(25)) {
- if (i < preamble.Min() || i > preamble.Max() * 2 || !find(i)) {
- return (true, i);
- }
- preamble.Enqueue(i);
- preamble.Dequeue();
- }
- return (false, 0);
- }
- var p1 = part1();
- Console.WriteLine($"Part 1: {p1}");
- long part2() {
- for (int i = 0; i < data.Length; ++i) {
- var sum = data[i];
- for (int j = i + 1; j < data.Length; j++) {
- sum += data[j];
- if (sum == p1.number) {
- return data[i..j].Min() + data[i..j].Max();
- }
- }
- }
- return -1;
- }
- var p2 = part2();
- Console.WriteLine($"Part 2: {p2}");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement