Problem
I'm given a long method (seen below) with two different teams and a number of stats for each player. I needed to come up with different methods to answer a few questions.
Build a method,
num_points_scored
that takes in an argument of a player's name and returns the number of points scored for that player.Build a method,
shoe_size
, that takes in an argument of a player's name and returns the shoe size for that player.Build a method,
team_colors
, that takes in an argument of the team name and returns an array of that teams colors.Build a method,
team_names
, that operates on the game hash to return an array of the team names.Build a method,
player_numbers
, that takes in an argument of a team name and returns an array of the jersey number's for that team.Build a method,
player_stats
, that takes in an argument of a player's name and returns a hash of that player's stats.
def game_hash
{
away: { team_name: 'Charlotte Hornets',
colors: %w[Turquoise Purple],
players: [
{ player_name: 'Jeff Adrien',
number: 4,
shoe: 18,
points: 10,
rebounds: 1,
assists: 1,
steals: 2,
blocks: 7,
slam_dunks: 2 },
{ player_name: 'Bismack Biyombo',
number: 0,
shoe: 16,
points: 12,
rebounds: 4,
assists: 7,
steals: 22,
blocks: 15,
slam_dunks: 10 },
{ player_name: 'DeSagna Diop',
number: 2,
shoe: 14,
points: 24,
rebounds: 12,
assists: 12,
steals: 4,
blocks: 5,
slam_dunks: 5 },
{ player_name: 'Ben Gordon',
number: 8,
shoe: 15,
points: 33,
rebounds: 3,
assists: 2,
steals: 1,
blocks: 1,
slam_dunks: 0 },
{ player_name: 'Kemba Walker',
number: 33,
shoe: 15,
points: 6,
rebounds: 12,
assists: 12,
steals: 7,
blocks: 5,
slam_dunks: 12 }
] },
home: { team_name: 'Brooklyn Nets',
colors: %w[Black White],
players: [
{ player_name: 'Alan Anderson',
number: 0,
shoe: 16,
points: 22,
rebounds: 12,
assists: 12,
steals: 3,
blocks: 1,
slam_dunks: 1 },
{ player_name: 'Reggie Evans',
number: 30,
shoe: 14,
points: 12,
rebounds: 12,
assists: 12,
steals: 12,
blocks: 12,
slam_dunks: 7 },
{ player_name: 'Brook Lopez',
number: 11,
shoe: 17,
points: 17,
rebounds: 19,
assists: 10,
steals: 3,
blocks: 1,
slam_dunks: 15 },
{ player_name: 'Mason Plumlee',
number: 1,
shoe: 19,
points: 26,
rebounds: 11,
assists: 6,
steals: 3,
blocks: 8,
slam_dunks: 5 },
{ player_name: 'Jason Terry',
number: 31,
shoe: 15,
points: 19,
rebounds: 2,
assists: 2,
steals: 4,
blocks: 11,
slam_dunks: 1 }
] }
}
end
What I Learned
This lab was a lot easier for me to understand, was more fun and I learned a lot more than the Green Grocer Lab I did last week.
Article No Longer Available
How to accept an argument and return a string from inside a nested hash or array.
How to use the
.map
enumerable to create a new array from a nested hash or array.And pretty much anything that accepts an argument and returns any line inside hashes.
Final Iteration
require 'pry'
def num_points_scored(player_search)
game_hash.each do |team, team_info|
team_info[:players].each do |player|
if player[:player_name] == player_search
return player[:points]
end
end
end
end
def shoe_size(name)
game_hash.each do |team, team_info|
team_info[:players].each do |player|
if player[:player_name] == name
return player[:shoe]
end
end
end
end
def team_colors(team_input)
if team_input.downcase == "charlotte hornets"
return game_hash[:away][:colors]
else return game_hash[:home][:colors]
end
end
def team_names
game_hash.map do |team, team_info|
team_info[:team_name]
end
end
def player_numbers(input)
output = []
game_hash.each do |team, team_info|
if team_info[:team_name] == input
team_info.each do |key, value|
if key == :players
value.each do |player|
output.push(player[:number])
end
end
end
end
end
return output
end
def player_stats(input)
game_hash.each do |team, team_info|
team_info.each do |key, value|
if key == :players
value.each do |player|
if input == player[:player_name]
player.delete(:player_name) # having player name inside the hash was a bad idea!
return player
end
end
end
end
end
end
def big_shoe_rebounds
big_shoe = 0
rebounds = 0
game_hash.each do |team, team_info|
team_info[:players].each do |player|
if player[:shoe] > big_shoe
big_shoe = player[:shoe]
rebounds = player[:rebounds]
end
end
end
return rebounds
end
Top comments (0)