44//!
55//! https://adventofcode.com/2022/day/1
66
7- use { crate :: helpers:: read_lines, std:: time:: SystemTime } ;
7+ use {
8+ crate :: helpers:: { read_lines, Answer } ,
9+ std:: time:: SystemTime ,
10+ } ;
811
9- pub fn pt1 ( filename : & str ) -> ( u32 , u32 ) {
12+ /// solves the part 1 of day 01 and return its result and elapsed time
13+ pub fn pt1 ( filename : & str ) -> Answer {
1014 let time = SystemTime :: now ( ) ;
1115
1216 let mut biggest = 0 ;
1317 let mut current = 0 ;
1418
15- read_lines ( filename) . flatten ( ) . for_each ( |line| {
19+ read_lines ( filename) . for_each ( |line| {
1620 match line. as_str ( ) {
1721 // if empty line, compare current block with biggest found until then
1822 "" => {
@@ -26,21 +30,19 @@ pub fn pt1(filename: &str) -> (u32, u32) {
2630
2731 biggest = biggest. max ( current) ;
2832
29- let answer = biggest;
30- let time = time. elapsed ( ) . unwrap ( ) . as_millis ( ) as u32 ;
31-
32- ( answer, time)
33+ Answer :: new ( biggest, time. elapsed ( ) . unwrap ( ) . as_millis ( ) as u32 )
3334}
3435
35- pub fn pt2 ( filename : & str ) -> ( u32 , u32 ) {
36+ /// solves the part 2 of day 01 and return its result and elapsed time
37+ pub fn pt2 ( filename : & str ) -> Answer {
3638 let time = SystemTime :: now ( ) ;
3739
3840 // we want to find the sum of the 3 biggest blocks
3941 let mut biggest = vec ! [ 0 , 0 , 0 ] ;
4042 let mut current = 0 ;
4143
4244 // iterating through each line of the file
43- read_lines ( filename) . flatten ( ) . for_each ( |line| {
45+ read_lines ( filename) . for_each ( |line| {
4446 match line. as_str ( ) {
4547 // if empty line, compare current block with 3 biggest known
4648 "" => {
@@ -72,10 +74,10 @@ pub fn pt2(filename: &str) -> (u32, u32) {
7274 biggest[ 2 ] = current;
7375 }
7476
75- let answer = biggest . iter ( ) . sum ( ) ;
76- let time = time . elapsed ( ) . unwrap ( ) . as_millis ( ) as u32 ;
77-
78- ( answer , time )
77+ Answer :: new (
78+ biggest . iter ( ) . sum ( ) ,
79+ time . elapsed ( ) . unwrap ( ) . as_millis ( ) as u32 ,
80+ )
7981}
8082
8183#[ cfg( test) ]
@@ -86,13 +88,13 @@ mod tests {
8688
8789 #[ test]
8890 fn pt01 ( ) {
89- let ( answer, _ ) = pt1 ( FILENAME ) ;
90- assert_eq ! ( 24000 , answer) ;
91+ let answer = pt1 ( FILENAME ) ;
92+ assert_eq ! ( 24000 , answer. answer ( ) ) ;
9193 }
9294
9395 #[ test]
9496 fn pt02 ( ) {
95- let ( answer, _ ) = pt2 ( FILENAME ) ;
96- assert_eq ! ( 45000 , answer) ;
97+ let answer = pt2 ( FILENAME ) ;
98+ assert_eq ! ( 45000 , answer. answer ( ) ) ;
9799 }
98100}
0 commit comments