add some exercises
This commit is contained in:
1 parent
f6abf65e91
commit
d79c543c72
13 files changed
+232
No files matched your search
@@ -0,0 +1,102 @@
|
||||
#!/usr/bin/env ruby
|
||||
|
||||
class Gecko
|
||||
attr_reader :name
|
||||
|
||||
def initialize(name)
|
||||
@name = name
|
||||
@meals = []
|
||||
end
|
||||
|
||||
def eat(prey, quantity, calcium)
|
||||
return false unless prey.is_a?(String)
|
||||
|
||||
prey = prey.strip
|
||||
|
||||
return false if prey.empty?
|
||||
return false unless quantity.is_a?(Integer) && quantity.positive?
|
||||
return false unless calcium == true || calcium == false
|
||||
|
||||
@meals << [prey, quantity, calcium]
|
||||
true
|
||||
end
|
||||
|
||||
def display_meals
|
||||
puts "#{@name} a mangé :"
|
||||
|
||||
@meals.each do |prey, quantity, calcium|
|
||||
suffix = calcium ? " (calcium)" : ""
|
||||
puts "- #{quantity} #{prey}#{suffix}"
|
||||
end
|
||||
|
||||
puts
|
||||
puts "Total : #{total_prey} proies"
|
||||
end
|
||||
|
||||
def display_last_meal
|
||||
puts
|
||||
|
||||
if @meals.empty?
|
||||
puts "Aucun repas enregistré."
|
||||
return
|
||||
end
|
||||
|
||||
puts "Dernier repas :"
|
||||
|
||||
prey, quantity, calcium = @meals.last
|
||||
suffix = calcium ? " (calcium)" : ""
|
||||
puts "- #{quantity} #{prey}#{suffix}"
|
||||
end
|
||||
|
||||
def meal_count
|
||||
@meals.length
|
||||
end
|
||||
|
||||
def total_prey
|
||||
total = 0
|
||||
|
||||
@meals.each do |_prey, quantity, _calcium|
|
||||
total += quantity
|
||||
end
|
||||
|
||||
total
|
||||
end
|
||||
|
||||
def ate?(searched_prey)
|
||||
@meals.any? do |prey, _quantity, _calcium|
|
||||
prey == searched_prey
|
||||
end
|
||||
end
|
||||
|
||||
def calcium_meal_count
|
||||
@meals.count do |_prey, _quantity, calcium|
|
||||
calcium
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
delta = Gecko.new("Delta")
|
||||
|
||||
delta.eat("dubia", 2, true)
|
||||
delta.eat("ver de farine", 3, false)
|
||||
delta.eat("cloporte", 1, true)
|
||||
|
||||
delta.display_meals
|
||||
delta.display_last_meal
|
||||
|
||||
puts
|
||||
puts "Delta a fait #{delta.meal_count} repas."
|
||||
puts "Delta a mangé #{delta.total_prey} proies."
|
||||
|
||||
puts
|
||||
puts delta.ate?("dubia")
|
||||
|
||||
puts
|
||||
puts delta.calcium_meal_count
|
||||
|
||||
puts
|
||||
puts delta.name
|
||||
|
||||
puts
|
||||
puts delta.eat("dubia", -2, true) # false
|
||||
puts delta.eat("dubia", 2, true) # true
|
||||
Reference in new issue
Block a user