Skip to content

Instantly share code, notes, and snippets.

@ahimmelstoss
Created October 11, 2013 18:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahimmelstoss/6939941 to your computer and use it in GitHub Desktop.
Save ahimmelstoss/6939941 to your computer and use it in GitHub Desktop.
hasketball
game =
{
:team1 =>
{
:name => "New York Necks",
:colors => ["yellow", "brown"],
:players =>
{
"Giraffe 1" =>
{
:number => 1,
:shoe_size => 10,
:points => 5,
:rebounds => 5,
:assists => 5,
:steals => 5,
:blocks => 5,
:slam_dunks => 5,
},
"Giraffe 2" =>
{
:number => 2,
:shoe_size => 11,
:points => 6,
:rebounds => 6,
:assists => 6,
:steals => 6,
:blocks => 6,
:slam_dunks => 6,
},
"Giraffe 3" =>
{
:number => 3,
:shoe_size => 12,
:points => 7,
:rebounds => 7,
:assists => 7,
:steals => 7,
:blocks => 7,
:slam_dunks => 7,
},
"Giraffe 4" =>
{
:number => 4,
:shoe_size => 13,
:points => 8,
:rebounds => 8,
:assists => 8,
:steals => 8,
:blocks => 8,
:slam_dunks => 8,
},
"Giraffe 5" =>
{
:number => 5,
:shoe_size => 14,
:points => 9,
:rebounds => 9,
:assists => 9,
:steals => 9,
:blocks => 9,
:slam_dunks => 9
}
}
},
:team2 =>
{
:name => "Miami Dolphins",
:colors => ["silver", "blue"],
:players =>
{
"Dolphin 1" =>
{
:number => 6,
:shoe_size => 1,
:points => 10,
:rebounds => 10,
:assists => 10,
:steals => 10,
:blocks => 10,
:slam_dunks => 10,
},
"Dolphin 2" =>
{
:number => 7,
:shoe_size => 2,
:points => 11,
:rebounds => 11,
:assists => 11,
:steals => 11,
:blocks => 11,
:slam_dunks => 11,
},
"Dolphin 3" =>
{
:number => 8,
:shoe_size => 12,
:points => 12,
:rebounds => 12,
:assists => 12,
:steals => 12,
:blocks =>12,
:slam_dunks => 12,
},
"Dolphin 4" =>
{
:number => 9,
:shoe_size => 13,
:points => 13,
:rebounds =>13,
:assists => 13,
:steals => 13,
:blocks => 13,
:slam_dunks => 13,
},
"Dolphin 5" =>
{
:number => 10,
:shoe_size => 14,
:points => 14,
:rebounds => 14,
:assists => 14,
:steals => 14,
:blocks => 14,
:slam_dunks => 14,
}
}
}
}
# Return the number of points scored for any player.
def number_of_points(game, player)
if game[:team1][:players].include?(player)
return "#{player} has #{game[:team1][:players][player][:points]} points."
elsif game[:team2][:players].include?(player)
return "#{player has} #{game[:team2][:players][player][:points]} points."
else
return "That player is not in this game."
end
end
puts number_of_points(game, "Giraffe 1")
# Return the shoe size for any player.
def shoe_size(game, player)
if game[:team1][:players].include?(player)
return "#{player}'s shoe size is #{game[:team1][:players][player][:shoe_size]}."
elsif game[:team2][:players].include?(player)
return "#{player}'s shoe size is #{game[:team2][:players][player][:shoe_size]}."
else
return "That player is not in this game."
end
end
puts shoe_size(game, "Dolphin 2")
# Return both colors for any team.
def team_colors(game, team)
if game[:team1][:name].include?(team)
return "#{team}'s colors are #{game[:team1][:colors].join(" & ")}."
elsif game[:team2][:name].include?(team)
return "#{team}'s colors are #{game[:team2][:colors].join(" & ")}."
else
return "That team is not playing this game."
end
end
puts team_colors(game, "New York Necks")
# Return both teams names.
def team_names(game)
puts game[:team1][:name]
puts game[:team2][:name]
end
team_names(game)
# Return all the player numbers for a team.--all; need to iterate over all player hashes
def player_numbers(game, team)
if game[:team1][:name].include?(team)
game[:team1][:players].each_key do |key|
puts game[:team1][:players][key][:number]
end
elsif game[:team2][:name].include?(team)
game[:team2][:players].each_key do |key|
puts game[:team2][:players][key][:number]
end
else
puts "That team is not playing this game."
end
end
player_numbers(game, "Miami Dolphins")
# Return all the stats for a player. UNFINISHED
def player_stats(game, player)
if game[:team1][:players].include?(player)
game[:team1][:players].each_value do |value|
puts game[:team1][:players][value]
end
elsif game[:team2][:players].include?(player)
game[:team2][:players].each_value do |value|
puts game[:team2][:players][value]
end
else
puts "That player is not in the game."
end
end
player_stats(game, "Dolphin 2")
# Return the rebounds for the player with the largest shoe size.
def player_with_largest_shoes(game)
player_hashes(game).sort_by {|player_hash| player_hash[:shoe_size]}.last
end
def player_hashes(game) #abstract out to a separate method
game.collect do |team, team_hash|
team_hash[:players]
end
end
def player_stat(game, player, stat)
find_player(game, player)[stat]
end
def find_player(game, player)
player_hashes(game).select {|p| p[:name] == player}
end
def player_rebounds(game, player)
player_stat(game, player, :rebounds)
end
puts player_rebounds(game, player_with_largest_shoes(game)[:name])
# Which player has the most points?
# Which team has the most points?
# Which player has the longest name?
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment