File tree 3 files changed +66
-0
lines changed
3 files changed +66
-0
lines changed Original file line number Diff line number Diff line change
1
+ [package ]
2
+ name = " day-03"
3
+ version = " 0.1.0"
4
+ edition = " 2024"
5
+
6
+ [dependencies ]
7
+ regex = " 1.11.1"
8
+
9
+ [[bin ]]
10
+ name = " 03-1"
11
+ path = " src/03-1.rs"
12
+
13
+ [[bin ]]
14
+ name = " 03-2"
15
+ path = " src/03-2.rs"
Original file line number Diff line number Diff line change
1
+ use std:: fs;
2
+ use regex:: Regex ;
3
+
4
+ fn main ( ) {
5
+ let input = fs:: read_to_string ( "../03.input" ) . unwrap ( ) ;
6
+ let inst = Regex :: new ( r"mul\([0-9]+,[0-9]+\)" ) . unwrap ( ) ;
7
+
8
+ let score = inst. find_iter ( & input)
9
+ . map ( |m| m. as_str ( ) )
10
+ . map ( |m| {
11
+ let l = m. len ( ) ;
12
+ & m[ 4 ..l-1 ]
13
+ } )
14
+ . map ( |m| m. split ( "," )
15
+ . map ( |num| num. parse :: < i64 > ( ) . unwrap ( ) )
16
+ . collect :: < Vec < _ > > ( ) )
17
+ . map ( |m| m[ 0 ] * m[ 1 ] )
18
+ . reduce ( |a, b| a + b) . unwrap ( ) ;
19
+
20
+ println ! ( "{score}" ) ;
21
+ }
Original file line number Diff line number Diff line change
1
+ use std:: fs;
2
+ use regex:: Regex ;
3
+
4
+ fn main ( ) {
5
+ let input = fs:: read_to_string ( "../03.input" ) . unwrap ( ) ;
6
+ let inst = Regex :: new ( r"do\(\)|don't\(\)|mul\([0-9]+,[0-9]+\)" ) . unwrap ( ) ;
7
+
8
+ let inst_iter = inst. find_iter ( & input)
9
+ . map ( |m| m. as_str ( ) ) ;
10
+
11
+ let mut enabled = true ;
12
+ let mut sum = 0 ;
13
+
14
+ for inst_str in inst_iter {
15
+ if inst_str. contains ( r"don't()" ) {
16
+ enabled = false ;
17
+ } else if inst_str. contains ( r"do()" ) {
18
+ enabled = true ;
19
+ } else if enabled {
20
+ let l = inst_str. len ( ) ;
21
+ let nums = inst_str[ 4 ..l-1 ]
22
+ . split ( "," )
23
+ . map ( |num| num. parse :: < i64 > ( ) . unwrap ( ) )
24
+ . collect :: < Vec < _ > > ( ) ;
25
+ sum += nums[ 0 ] * nums[ 1 ] ;
26
+ }
27
+ }
28
+
29
+ println ! ( "{sum}" ) ;
30
+ }
You can’t perform that action at this time.
0 commit comments