Skip to content

Instantly share code, notes, and snippets.

@ivanbrennan
Created October 1, 2013 03:57
Show Gist options
  • Select an option

  • Save ivanbrennan/6773694 to your computer and use it in GitHub Desktop.

Select an option

Save ivanbrennan/6773694 to your computer and use it in GitHub Desktop.
Hashketball
game = {
:home => {
:name => "Wu-Tang Clan",
:colors => ["Black", "Yellow"],
:players => [
{ :name => "Method Man",
:number => 6,
:shoe_size => 10,
:stats => {
:points => 49,
:rebounds => 24,
:assists => 12,
:steals => 7,
:blocks => 13,
:slam_dunks => 9
}
},
{
:name => "RZA",
:number => 12,
:shoe_size => 11,
:stats => {
:points => 38,
:rebounds => 31,
:assists => 56,
:steals => 19,
:blocks => 16,
:slam_dunks => 11
}
},
{
:name => "GZA",
:number => 92,
:shoe_size => 12,
:stats => {
:points => 76,
:rebounds => 34,
:assists => 47,
:steals => 25,
:blocks => 24,
:slam_dunks => 18
}
},
{
:name => "Ol Dirty Bastard",
:number => 2,
:shoe_size => 64,
:stats => {
:points => 40,
:rebounds => 21,
:assists => 34,
:steals => 36,
:blocks => 17,
:slam_dunks => 9
}
},
{
:name => "Raekwon",
:number => 63,
:shoe_size => 9,
:stats => {
:points => 74,
:rebounds => 56,
:assists => 27,
:steals => 45,
:blocks => 51,
:slam_dunks => 26
}
}
]
},
:away => {
:name => "Baroque Composers",
:colors => ["Chestnut", "Gold"],
:players => [
{ :name => "Antonio Vivaldi",
:number => 43,
:shoe_size => 7,
:stats => {
:points => 63,
:rebounds => 42,
:assists => 92,
:steals => 13,
:blocks => 14,
:slam_dunks => 2
}
},
{
:name => "Jean-Philippe Rameau",
:number => 34,
:shoe_size => 9,
:stats => {
:points => 16,
:rebounds => 21,
:assists => 26,
:steals => 24,
:blocks => 18,
:slam_dunks => 6
}
},
{
:name => "Johann Sebastian Bach",
:number => 98,
:shoe_size => 10,
:stats => {
:points => 61,
:rebounds => 29,
:assists => 47,
:steals => 12,
:blocks => 37,
:slam_dunks => 19
}
},
{
:name => "Silvius Leopold Weiss",
:number => 74,
:shoe_size => 12,
:stats => {
:points => 24,
:rebounds => 32,
:assists => 83,
:steals => 43,
:blocks => 31,
:slam_dunks => 12
}
},
{
:name => "Guiseppe Tartini",
:number => 6,
:shoe_size => 8,
:stats => {
:points => 35,
:rebounds => 25,
:assists => 12,
:steals => 4,
:blocks => 13,
:slam_dunks => 18
}
}
]
}
}
def get_points(game, player_name)
game.each_value do |team|
team[:players].each do |player|
return player[:stats][:points] if player[:name] == player_name
end
end
end
def get_shoe_size(game, player_name)
game.each_value do |team|
team[:players].each do |player|
return player[:shoe_size] if player[:name] == player_name
end
end
end
def get_colors(game, team_name)
game.each_value do |team|
return team[:colors] if team[:name] == team_name
end
end
def get_teams(game)
game.values.collect {|team| team[:name]}
end
def get_player_nums(game, team_name)
team = game.values.find {|team_hash| team_hash[:name] == team_name}
players = team[:players]
players.collect {|player| player[:number]}
end
def get_player_stats(game, player_name)
player_arr = game.values.map do |team|
team[:players].find {|player| player[:name] == player_name}
end
player = player_arr.compact.first
player[:stats]
end
def get_rebounds_by_shoe(game)
all_players = game.values.collect {|team| team[:players]}.flatten
big_shoe = all_players.collect {|player| player[:shoe_size]}.max
mr_big_shoe = all_players.find {|player| player[:shoe_size] == big_shoe}
mr_big_shoe[:stats][:rebounds]
end
def most_points_player(game)
all_players = game.values.collect {|team| team[:players]}.flatten
big_points = all_players.collect {|player| player[:stats][:points]}.max
mr_big_points = all_players.find do |player|
player[:stats][:points] == big_points
end
mr_big_points[:name]
end
def most_points_team(game)
teams = game.values
team_scores = teams.collect do |team|
team[:players].inject(0) do |sum, player|
sum + player[:stats][:points]
end
end
hi_score = team_scores.max
hi_idx = team_scores.index(hi_score)
teams[hi_idx][:name]
end
def longest_name(game)
all_players = game.values.collect {|team| team[:players]}.flatten
big_name = all_players.collect {|player| player[:name].length}.max
mr_big_name = all_players.find do |player|
player[:name].length == big_name
end
mr_big_name[:name]
end
def steal_this_name?(game)
all_players = game.values.collect {|team| team[:players]}.flatten
big_name = all_players.collect {|player| player[:name].length}.max
mr_big_name = all_players.find do |player|
player[:name].length == big_name
end
big_steals = all_players.collect {|player| player[:stats][:steals]}.max
mr_big_steals = all_players.find do |player|
player[:stats][:steals] == big_steals
end
mr_big_name == mr_big_steals
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment