Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions exercises/11_hashmaps/hashmaps3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// the form "<team_1_name>,<team_2_name>,<team_1_goals>,<team_2_goals>"
// Example: "England,France,4,2" (England scored 4 goals, France 2).
//
// You have to build a scores table containing the name of the team, the total
// You have to build a table of scores containing the name of the team, the total
// number of goals the team scored, and the total number of goals the team
// conceded.

Expand All @@ -15,19 +15,19 @@ struct TeamScores {
goals_conceded: u8,
}

fn build_scores_table(results: &str) -> HashMap<&str, TeamScores> {
fn build_score_table(results: &str) -> HashMap<&str, TeamScores> {
// The name of the team is the key and its associated struct is the value.
let mut scores = HashMap::<&str, TeamScores>::new();

for line in results.lines() {
let mut split_iterator = line.split(',');
// NOTE: We use `unwrap` because we didn't deal with error handling yet.
// NOTE: We use `unwrap` because we haven't dealt with error handling yet.
let team_1_name = split_iterator.next().unwrap();
let team_2_name = split_iterator.next().unwrap();
let team_1_score: u8 = split_iterator.next().unwrap().parse().unwrap();
let team_2_score: u8 = split_iterator.next().unwrap().parse().unwrap();

// TODO: Populate the scores table with the extracted details.
// TODO: Populate the score table with the extracted details.
// Keep in mind that goals scored by team 1 will be the number of goals
// conceded by team 2. Similarly, goals scored by team 2 will be the
// number of goals conceded by team 1.
Expand All @@ -52,7 +52,7 @@ England,Spain,1,0";

#[test]
fn build_scores() {
let scores = build_scores_table(RESULTS);
let scores = build_score_table(RESULTS);

assert!(["England", "France", "Germany", "Italy", "Poland", "Spain"]
.into_iter()
Expand All @@ -61,15 +61,15 @@ England,Spain,1,0";

#[test]
fn validate_team_score_1() {
let scores = build_scores_table(RESULTS);
let scores = build_score_table(RESULTS);
let team = scores.get("England").unwrap();
assert_eq!(team.goals_scored, 6);
assert_eq!(team.goals_conceded, 4);
}

#[test]
fn validate_team_score_2() {
let scores = build_scores_table(RESULTS);
let scores = build_score_table(RESULTS);
let team = scores.get("Spain").unwrap();
assert_eq!(team.goals_scored, 0);
assert_eq!(team.goals_conceded, 3);
Expand Down
12 changes: 6 additions & 6 deletions solutions/11_hashmaps/hashmaps3.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
// the form "<team_1_name>,<team_2_name>,<team_1_goals>,<team_2_goals>"
// Example: "England,France,4,2" (England scored 4 goals, France 2).
//
// You have to build a scores table containing the name of the team, the total
// You have to build a table of scores containing the name of the team, the total
// number of goals the team scored, and the total number of goals the team
// conceded.

Expand All @@ -15,13 +15,13 @@ struct TeamScores {
goals_conceded: u8,
}

fn build_scores_table(results: &str) -> HashMap<&str, TeamScores> {
fn build_score_table(results: &str) -> HashMap<&str, TeamScores> {
// The name of the team is the key and its associated struct is the value.
let mut scores = HashMap::<&str, TeamScores>::new();

for line in results.lines() {
let mut split_iterator = line.split(',');
// NOTE: We use `unwrap` because we didn't deal with error handling yet.
// NOTE: We use `unwrap` because we haven't dealt with error handling yet.
let team_1_name = split_iterator.next().unwrap();
let team_2_name = split_iterator.next().unwrap();
let team_1_score: u8 = split_iterator.next().unwrap().parse().unwrap();
Expand Down Expand Up @@ -58,7 +58,7 @@ England,Spain,1,0";

#[test]
fn build_scores() {
let scores = build_scores_table(RESULTS);
let scores = build_score_table(RESULTS);

assert!(
["England", "France", "Germany", "Italy", "Poland", "Spain"]
Expand All @@ -69,15 +69,15 @@ England,Spain,1,0";

#[test]
fn validate_team_score_1() {
let scores = build_scores_table(RESULTS);
let scores = build_score_table(RESULTS);
let team = scores.get("England").unwrap();
assert_eq!(team.goals_scored, 6);
assert_eq!(team.goals_conceded, 4);
}

#[test]
fn validate_team_score_2() {
let scores = build_scores_table(RESULTS);
let scores = build_score_table(RESULTS);
let team = scores.get("Spain").unwrap();
assert_eq!(team.goals_scored, 0);
assert_eq!(team.goals_conceded, 3);
Expand Down