-
Notifications
You must be signed in to change notification settings - Fork 0
/
Day1.cs
33 lines (28 loc) · 1.05 KB
/
Day1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Day1
{
public static async Task<string> Part1Async(bool example = false)
{
var input = await File.ReadAllLinesAsync($"inputs/day1{(example ? ".example" : string.Empty)}.txt");
var numbers = input.Select(line => int.Parse(line)).ToArray();
int count = 0;
for (var i = 0; i < numbers.Length - 1; i++)
{
if (numbers[i] < numbers[i + 1])
count++;
}
return count.ToString();
}
public static async Task<string> Part2Async(bool example = false)
{
var input = await File.ReadAllLinesAsync($"inputs/day1{(example ? ".example" : string.Empty)}.txt");
var numbers = input.Select(line => int.Parse(line)).ToArray();
int count = 0;
for (var i = 0; i < numbers.Count() - 3; i++)
{
var span1 = numbers.AsSpan().Slice(i, 3).ToArray().Sum(e => e);
var span2 = numbers.AsSpan().Slice(i + 1, 3).ToArray().Sum(e => e);
if (span1 < span2) count++;
}
return count.ToString();
}
}