File tree 3 files changed +80
-0
lines changed
3 files changed +80
-0
lines changed Original file line number Diff line number Diff line change @@ -93,6 +93,7 @@ fn main() {
93
93
( 2017 , 22 ) => year_2017:: day22:: run ( inputs:: read ( year, day) ) ,
94
94
( 2017 , 23 ) => year_2017:: day23:: run ( inputs:: read ( year, day) ) ,
95
95
( 2017 , 24 ) => year_2017:: day24:: run ( inputs:: read ( year, day) ) ,
96
+ ( 2017 , 25 ) => year_2017:: day25:: run ( ) ,
96
97
97
98
// Other
98
99
( _, _) => panic ! ( "Not implemented :(" ) ,
Original file line number Diff line number Diff line change
1
+ use std:: collections:: HashMap ;
2
+
3
+ pub fn run ( ) {
4
+ // For the last day, it was easier to directly convert the input into cod else
5
+ // multi-selection to the rescue!
6
+ let mut pos = 0 ;
7
+ let mut state = 'A' ;
8
+ let mut tape: HashMap < i64 , i64 > = HashMap :: new ( ) ;
9
+
10
+ for _ in 0 ..12629077 {
11
+ let t = tape. entry ( pos) . or_insert ( 0 ) ;
12
+ if state == 'A' {
13
+ if * t == 0 {
14
+ * t = 1 ;
15
+ pos += 1 ;
16
+ state = 'B' ;
17
+ } else {
18
+ * t = 0 ;
19
+ pos -= 1 ;
20
+ state = 'B' ;
21
+ }
22
+ } else if state == 'B' {
23
+ if * t == 0 {
24
+ * t = 0 ;
25
+ pos += 1 ;
26
+ state = 'C' ;
27
+ } else {
28
+ * t = 1 ;
29
+ pos -= 1 ;
30
+ state = 'B' ;
31
+ }
32
+ } else if state == 'C' {
33
+ if * t == 0 {
34
+ * t = 1 ;
35
+ pos += 1 ;
36
+ state = 'D' ;
37
+ } else {
38
+ * t = 0 ;
39
+ pos -= 1 ;
40
+ state = 'A' ;
41
+ }
42
+ } else if state == 'D' {
43
+ if * t == 0 {
44
+ * t = 1 ;
45
+ pos -= 1 ;
46
+ state = 'E' ;
47
+ } else {
48
+ * t = 1 ;
49
+ pos -= 1 ;
50
+ state = 'F' ;
51
+ }
52
+ } else if state == 'E' {
53
+ if * t == 0 {
54
+ * t = 1 ;
55
+ pos -= 1 ;
56
+ state = 'A' ;
57
+ } else {
58
+ * t = 0 ;
59
+ pos -= 1 ;
60
+ state = 'D' ;
61
+ }
62
+ } else if state == 'F' {
63
+ if * t == 0 {
64
+ * t = 1 ;
65
+ pos += 1 ;
66
+ state = 'A' ;
67
+ } else {
68
+ * t = 1 ;
69
+ pos -= 1 ;
70
+ state = 'E' ;
71
+ }
72
+ }
73
+ }
74
+
75
+ let sum: i64 = tape. values ( ) . sum ( ) ;
76
+ println ! ( "part 1: {}" , sum) ;
77
+ assert_eq ! ( sum, 3745 ) ;
78
+ }
Original file line number Diff line number Diff line change @@ -22,3 +22,4 @@ pub mod day21;
22
22
pub mod day22;
23
23
pub mod day23;
24
24
pub mod day24;
25
+ pub mod day25;
You can’t perform that action at this time.
0 commit comments