Ruby 一家银行有无限量供应的3比索和5比索纸币任务?

Ruby 一家银行有无限量供应的3比索和5比索纸币任务?,ruby,math,Ruby,Math,我正在做一项类似这样的任务: 银行有无限量的3比索和5比索纸币。表明使用这两种类型的票据,银行可以支付任何超过7比索的金额 答案是: 银行可以通过支付一张3比索纸币和一张5比索纸币来支付8比索 银行可以通过支付三张3比索的钞票来支付9比索 银行可以通过支付两张5比索的钞票来支付10比索 银行可以通过支付3比索票据支付11比索或更多比索,直到只剩下8、9或10比索需要支付,然后使用上述策略之一。如果从11或更大的数字中减去3,最终将得到8、9或10中的一个 我正试图在一个Ruby程序中实现这个功能

我正在做一项类似这样的任务:

银行有无限量的3比索和5比索纸币。表明使用这两种类型的票据,银行可以支付任何超过7比索的金额

答案是:

银行可以通过支付一张3比索纸币和一张5比索纸币来支付8比索

银行可以通过支付三张3比索的钞票来支付9比索

银行可以通过支付两张5比索的钞票来支付10比索

银行可以通过支付3比索票据支付11比索或更多比索,直到只剩下8、9或10比索需要支付,然后使用上述策略之一。如果从11或更大的数字中减去3,最终将得到8、9或10中的一个

我正试图在一个Ruby程序中实现这个功能

到目前为止,我已经完成了以下工作:

class Money

  def initialize(price)
    @price = price.to_i
    validate(@price)
  end


  def validate(price)
    if price >= 8
      calculate(price)
    elsif price < 8
      puts "Minimum ammount is 8 pesos"
    end
  end


  def calculate(price)
    if price%5 === 0
      fives  = price/5
      threes = 0
    end

    result(fives, threes)
  end


  def result(fives, threes)
    puts "#{fives} five peso notes, #{threes} three peso notes."
  end

end


m = Money.new(ARGV.first)

你能帮我把这道数学题写进程序吗?谢谢。

你基本上已经明白了,尽管我打赌三重相等===应该是一个双重==想想r=price%3。余数r有三个可能的值:0、1或2。零意味着你已经知道了一个解决方案。您只需要想出一种方法来编写处理1和2的代码。
def count(price)
  t = 0
  if price >= 11
    t = (price - 8) / 3
    price -= t * 3
  end
  if price == 8
    [t + 1, 1]
  elsif price == 9
    [t + 3, 0]
  elsif price == 10
    [t, 2]
  else
    fail "price too small"
  end
end

threes, fives = count(42)
puts "#{fives} five peso notes, #{threes} three peso notes."