-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaoc-11.0.csx
48 lines (42 loc) · 1.13 KB
/
aoc-11.0.csx
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System.Linq;
var input = System.IO.File.ReadAllLines(@".\input.11.1.txt").ToArray();
var chunkType1 = "()";
var chunkType2 = "[]";
var chunkType3 = "{}";
var chunkType4 = "<>";
var validChunks = new HashSet<string>()
{
chunkType1,
chunkType2,
chunkType3,
chunkType4,
};
var openChunkChars = "({[<";
int errorSum = 0;
Stack<char> openChunks = new Stack<char>();
foreach (var line in input)
{
foreach (var lineChar in line)
{
if (openChunkChars.Contains(lineChar))
{
openChunks.Push(lineChar);
}
else
{
char lastOpenedChunk = openChunks.Pop();
string chunk = new (new char[]{ lastOpenedChunk, lineChar });
if (!validChunks.Contains(chunk))
{
switch (lineChar)
{
case ')': errorSum += 3; break;
case ']': errorSum += 57; break;
case '}': errorSum += 1197; break;
case '>': errorSum += 25137; break;
}
}
}
}
}
System.Console.WriteLine($"Total error sum: {errorSum}");