Skip to content

Commit 1cf94e4

Browse files
committed
Day 24 initial commit
1 parent f0fabe8 commit 1cf94e4

File tree

5 files changed

+475
-0
lines changed

5 files changed

+475
-0
lines changed

input0.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
0/2
2+
2/2
3+
2/3
4+
3/4
5+
3/5
6+
0/1
7+
10/1
8+
9/10

input23.txt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
set b 81
2+
set c b
3+
jnz a 2
4+
jnz 1 5
5+
mul b 100
6+
sub b -100000
7+
set c b
8+
sub c -17000
9+
set f 1
10+
set d 2
11+
set e 2
12+
set g d
13+
mul g e
14+
sub g b
15+
jnz g 2
16+
set f 0
17+
sub e -1
18+
set g e
19+
sub g b
20+
jnz g -8
21+
sub d -1
22+
set g d
23+
sub g b
24+
jnz g -13
25+
jnz f 2
26+
sub h -1
27+
set g b
28+
sub g c
29+
jnz g 2
30+
jnz 1 3
31+
sub b -17
32+
jnz 1 -23

input24.txt

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
48/5
2+
25/10
3+
35/49
4+
34/41
5+
35/35
6+
47/35
7+
34/46
8+
47/23
9+
28/8
10+
27/21
11+
40/11
12+
22/50
13+
48/42
14+
38/17
15+
50/33
16+
13/13
17+
22/33
18+
17/29
19+
50/0
20+
20/47
21+
28/0
22+
42/4
23+
46/22
24+
19/35
25+
17/22
26+
33/37
27+
47/7
28+
35/20
29+
8/36
30+
24/34
31+
6/7
32+
7/43
33+
45/37
34+
21/31
35+
37/26
36+
16/5
37+
11/14
38+
7/23
39+
2/23
40+
3/25
41+
20/20
42+
18/20
43+
19/34
44+
25/46
45+
41/24
46+
0/33
47+
3/7
48+
49/38
49+
47/22
50+
44/15
51+
24/21
52+
10/35
53+
6/21
54+
14/50

src/day23/Main.java

Lines changed: 204 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,204 @@
1+
package day23;
2+
3+
import java.util.ArrayList;
4+
import java.util.HashMap;
5+
6+
import util.ReadInputHelper;
7+
8+
public class Main {
9+
static int speed = 0;
10+
11+
public static void main(String[] args) {
12+
ArrayList<String> lines = new ReadInputHelper(23).getLines();
13+
14+
HashMap<String, Long> list = new HashMap<>();
15+
list.put("a", 1l);
16+
list.put("b", 0l);
17+
list.put("c", 0l);
18+
list.put("d", 0l);
19+
list.put("e", 0l);
20+
list.put("f", 0l);
21+
list.put("g", 0l);
22+
list.put("h", 0l);
23+
24+
for (int i = 0; i < lines.size() && i > -1; i++) {
25+
try {
26+
Thread.sleep(Main.speed);
27+
} catch (InterruptedException e1) {
28+
// TODO Auto-generated catch block
29+
e1.printStackTrace();
30+
}
31+
System.out.print("Programcount: " + (i+1) + ", ");
32+
System.out.print(lines.get(i));
33+
34+
String[] temp = lines.get(i).split(" ");
35+
36+
switch (temp[0]) {
37+
case "set": {
38+
long value = 0;
39+
try {
40+
value = Long.parseLong(temp[2]);
41+
} catch (NumberFormatException e) {
42+
value = list.get(temp[2]);
43+
}
44+
list.put(temp[1], value);
45+
}
46+
break;
47+
case "sub": {
48+
long value = 0;
49+
try {
50+
value = Long.parseLong(temp[2]);
51+
} catch (NumberFormatException e) {
52+
value = list.get(temp[2]);
53+
}
54+
55+
long result = list.get(temp[1]) + value;
56+
System.out.print(", substracting: " + list.get(temp[1]) + " and " + value + " = " + result);
57+
list.put(temp[1], result);
58+
}
59+
break;
60+
case "mul": {
61+
long value = 0;
62+
try {
63+
value = Long.parseLong(temp[2]);
64+
} catch (NumberFormatException e) {
65+
value = list.get(temp[2]);
66+
}
67+
68+
long result = list.get(temp[1]) * value;
69+
list.put(temp[1], result);
70+
}
71+
break;
72+
case "jnz": {
73+
long value = 0;
74+
75+
try {
76+
value = Long.parseLong(temp[2]);
77+
} catch (NumberFormatException e) {
78+
value = list.get(temp[2]);
79+
}
80+
long threshold = 0;
81+
82+
try {
83+
threshold = Long.parseLong(temp[1]);
84+
} catch (NumberFormatException e) {
85+
threshold = list.get(temp[1]);
86+
}
87+
88+
if (threshold != 0)
89+
i += value - 1;
90+
else
91+
System.out.print(", skipping jump");
92+
}
93+
break;
94+
95+
default:
96+
System.out.println("Forgot: " + temp[0]);
97+
}
98+
System.out.println(", value of program: " + list.get(temp[1]));
99+
}
100+
101+
System.out.println(list.get("h"));
102+
}
103+
}
104+
105+
class Program extends Thread {
106+
HashMap<String, Long> list = new HashMap<>();
107+
ArrayList<String> lines;
108+
boolean locked = false;
109+
int counter = 0;
110+
111+
public Program(ArrayList<String> lines) {
112+
this.setDaemon(true);
113+
list.put("a", 0l);
114+
list.put("b", 0l);
115+
list.put("c", 0l);
116+
list.put("d", 0l);
117+
list.put("e", 0l);
118+
list.put("f", 0l);
119+
list.put("g", 0l);
120+
list.put("h", 0l);
121+
this.lines = lines;
122+
}
123+
124+
@Override
125+
public void run() {
126+
for (int i = 0; i < lines.size(); i++) {
127+
try {
128+
Thread.sleep(Main.speed);
129+
} catch (InterruptedException e1) {
130+
// TODO Auto-generated catch block
131+
e1.printStackTrace();
132+
}
133+
System.out.print("Program: ");
134+
System.out.print(lines.get(i));
135+
136+
String[] temp = lines.get(i).split(" ");
137+
138+
switch (temp[0]) {
139+
case "set": {
140+
long value = 0;
141+
try {
142+
value = Long.parseLong(temp[2]);
143+
} catch (NumberFormatException e) {
144+
value = list.get(temp[2]);
145+
}
146+
list.put(temp[1], value);
147+
}
148+
break;
149+
case "sub": {
150+
long value = 0;
151+
try {
152+
value = Long.parseLong(temp[2]);
153+
} catch (NumberFormatException e) {
154+
value = list.get(temp[2]);
155+
}
156+
157+
long result = list.get(temp[1]) - value;
158+
list.put(temp[1], result);
159+
}
160+
break;
161+
case "mul": {
162+
long value = 0;
163+
try {
164+
value = Long.parseLong(temp[2]);
165+
} catch (NumberFormatException e) {
166+
value = list.get(temp[2]);
167+
}
168+
169+
counter++;
170+
long result = list.get(temp[1]) * value;
171+
list.put(temp[1], result);
172+
}
173+
break;
174+
case "jnz": {
175+
long value = 0;
176+
177+
try {
178+
value = Long.parseLong(temp[2]);
179+
} catch (NumberFormatException e) {
180+
value = list.get(temp[2]);
181+
}
182+
long threshold = 0;
183+
184+
try {
185+
threshold = Long.parseLong(temp[1]);
186+
} catch (NumberFormatException e) {
187+
threshold = list.get(temp[1]);
188+
}
189+
190+
if (threshold != 0)
191+
i += value - 1;
192+
else
193+
System.out.print(", skipping jump");
194+
}
195+
break;
196+
197+
default:
198+
System.out.println("Forgot: " + temp[0]);
199+
}
200+
201+
System.out.println(counter);
202+
}
203+
}
204+
}

0 commit comments

Comments
 (0)