Преглед изворни кода

sum_game_ids(), finished part 1

matze пре 2 година
родитељ
комит
553478e8d1
1 измењених фајлова са 42 додато и 4 уклоњено
  1. 42 4
      src/main.rs

+ 42 - 4
src/main.rs

@@ -116,6 +116,14 @@ fn filter_games(games: Vec<Game>, max_red: i32, max_green: i32, max_blue: i32) -
     filtered_games
 }
 
+fn sum_game_ids(games: Vec<Game>) -> i32 {
+    let mut s: i32 = 0;
+    for game in games {
+        s += game.id;
+    }
+    s
+}
+
 fn main() {
     let lines: Vec<String> = read_lines("input.txt");
 
@@ -125,14 +133,16 @@ fn main() {
     let max_green: i32 = 13;
     let max_blue: i32 = 14;
 
-    let _games_filtered = filter_games(games, max_red, max_green, max_blue);
-
-    // println!("hallo world");
+    let games_filtered: Vec<Game> = filter_games(games, max_red, max_green, max_blue);
+    let s: i32 = sum_game_ids(games_filtered);
+    println!("{}", s);
 }
 
 #[cfg(test)]
 mod tests {
-    use crate::{filter_games, parse_game, parse_games, parse_reveal, parse_reveals, Game};
+    use crate::{
+        filter_games, parse_game, parse_games, parse_reveal, parse_reveals, sum_game_ids, Game,
+    };
 
     #[test]
     fn test_parse_reveal_1() {
@@ -280,4 +290,32 @@ mod tests {
         assert_eq!(filtered_games[1].id, 2);
         assert_eq!(filtered_games[2].id, 5);
     }
+
+    #[test]
+    fn test_sum_game_ids() {
+        // arrange
+        let mut v: Vec<String> = Vec::new();
+        v.push(String::from(
+            "Game 1: 3 blue, 4 red; 1 red, 2 green, 6 blue; 2 green",
+        ));
+        v.push(String::from(
+            "Game 2: 1 blue, 2 green; 3 green, 4 blue, 1 red; 1 green, 1 blue",
+        ));
+        v.push(String::from(
+            "Game 3: 8 green, 6 blue, 20 red; 5 blue, 4 red, 13 green; 5 green, 1 red",
+        ));
+        v.push(String::from(
+            "Game 4: 1 green, 3 red, 6 blue; 3 green, 6 red; 3 green, 15 blue, 14 red",
+        ));
+        v.push(String::from(
+            "Game 5: 6 red, 1 blue, 3 green; 2 blue, 1 red, 2 green",
+        ));
+        let filtered_games: Vec<Game> = filter_games(parse_games(v), 12, 13, 14);
+
+        // act
+        let sum: i32 = sum_game_ids(filtered_games);
+
+        // assert
+        assert_eq!(sum, 8);
+    }
 }