Skip to content

Instantly share code, notes, and snippets.

@stevepm
Created April 30, 2014 15:56
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 stevepm/f48c9188296e750b8a1a to your computer and use it in GitHub Desktop.
Save stevepm/f48c9188296e750b8a1a to your computer and use it in GitHub Desktop.
class Dogs
POOR = (0..5).to_a.sample
AVERAGE = (6..10).to_a.sample
EXCELLENT = (11..15).to_a.sample
def initialize
joe = {
:name => {:first => "Joe", :last=> "Smith"},
:owner_quality => EXCELLENT
}
sarah = {
:name => {:first => "Sarah", :last => "Smith"},
:owner_quality => AVERAGE
}
andrew = {
:name => {:first => "Andrew", :last => "Beter"},
:owner_quality => AVERAGE
}
@dogs = [{:name => "Fido", :size => :large, :owner => joe},
{:name => "Yapper", :size => :small, :owner => joe},
{:name => "Bruiser", :size => :large, :owner => joe},
{:name => "Tank", :size => :huge, :owner => sarah},
{:name => "Beast", :size => :large, :owner => sarah},
{:name => "Harleigh", :size => :medium, :owner => andrew},
{:name => "Trixie", :size => :small, :owner => andrew},]
end
# only edit below this line
def small_dogs
small_dogs = []
@dogs.each do |dog|
if dog[:size] == :small
small_dogs << {:name => dog[:name]}
end
end
small_dogs
end
def huge_dog
huge_dogs = []
@dogs.each do |dog|
if dog[:size] == :huge
huge_dogs << {:name => dog[:name]}
end
end
huge_dogs
end
def large_dog_names
large_dogs_names = []
@dogs.each do |dog|
if dog[:size] == :large
large_dogs_names << dog[:name]
end
end
large_dogs_names
end
def joes_large_dogs
joes_large_dogs_names = []
@dogs.each do |dog|
if dog[:owner][:name][:first] == 'Joe' && dog[:size] == :large
joes_large_dogs_names << dog[:name]
end
end
joes_large_dogs_names
end
def sizes
sizes = []
@dogs.each do |dog|
if sizes.include?(dog[:size])
else
sizes << dog[:size]
end
end
sizes
end
def owners
owners_names = []
@dogs.each do |dog|
if owners_names.include?(dog[:owner][:name][:first] + ' ' + dog[:owner][:name][:last])
else
owners_names << dog[:owner][:name][:first] + ' ' + dog[:owner][:name][:last]
end
end
owners_names
end
def average_owners
average_owners_names = []
@dogs.each do |dog|
if dog[:owner][:owner_quality] == AVERAGE && !average_owners_names.include?(dog[:owner][:name][:first] + ' ' + dog[:owner][:name][:last])
average_owners_names << dog[:owner][:name][:first] + ' ' + dog[:owner][:name][:last]
end
end
average_owners_names
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment