#!/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