-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDay2_Pt2.linq
70 lines (53 loc) · 1.53 KB
/
Day2_Pt2.linq
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
void Main()
{
string[] input = File.ReadAllText(@"c:\Users\Kaylyn\Desktop\AOC\Day2_A.txt").Trim().Split(new[] { "\r\n", "\r", "\n", "," }, StringSplitOptions.None);
string[] cached = File.ReadAllText(@"c:\Users\Kaylyn\Desktop\AOC\Day2_A.txt").Trim().Split(new[] { "\r\n", "\r", "\n", "," }, StringSplitOptions.None);
string[] result = new string[145];
for (int v = 0; v <= 99; v++)
{
for (int n = 0; n <= 99; n++)
{
Array.Copy(cached, input, input.Length);
input[1] = v.ToString();
input[2] = n.ToString();
result = RecreateIntcodeComputer(input);
string resultCase = result[0];
if (resultCase == "19690720")
{
Console.WriteLine(100 * int.Parse(input[1]) + int.Parse(input[2]))
break;
}
}
}
}
public string[] RecreateIntcodeComputer(string[] input)
{
int i = 0;
do
{
int value = int.Parse(input[i]);
if (value == 99)
break;
else if (value == 1)
{
//add
int i1 = int.Parse(input[i + 1]);
int i2 = int.Parse(input[i + 2]);
int result = int.Parse(input[i1]) + int.Parse(input[i2]);
int newI = int.Parse(input[i + 3]);
input[newI] = result.ToString();
i += 4;
}
else if (value == 2)
{
int i1 = int.Parse(input[i + 1]);
int i2 = int.Parse(input[i + 2]);
int result = int.Parse(input[i1]) * int.Parse(input[i2]);
int newI = int.Parse(input[i + 3]);
input[newI] = result.ToString();
i += 4;
}
} while (i <= input.Length);
return input;
}
// Define other methods and classes here