jars谜题,ruby中的初始配置和最终配置

jars谜题,ruby中的初始配置和最终配置,ruby,Ruby,假设有3个最大容量的罐子,分别是8升、5升、3升 初始配置为8升、0升、0升,最终配置为4升、4升、0升 程序应该产生一系列操作,从初始配置到最终配置,或者如果不存在路径,则返回消息 您的程序应该能够为用户给定的任何初始和最终配置计算出步骤 我完全糊涂了。。 请给我任何建议 以下不是答案,而是延伸的评论。请不要投票 我假设传输是这样的,如果jara的部分或全部内容被传输到jarb,在传输完成后,jara将是空的,或者jarb将是满的 这是一个开始,而不是一个解决方案 class Jars a

假设有3个最大容量的罐子,分别是8升、5升、3升

初始配置为8升、0升、0升,最终配置为4升、4升、0升

程序应该产生一系列操作,从初始配置到最终配置,或者如果不存在路径,则返回消息

您的程序应该能够为用户给定的任何初始和最终配置计算出步骤

我完全糊涂了。。 请给我任何建议


以下不是答案,而是延伸的评论。请不要投票

我假设传输是这样的,如果jara的部分或全部内容被传输到jarb,在传输完成后,jara将是空的,或者jarb将是满的

这是一个开始,而不是一个解决方案

class Jars
  attr_accessor :content
  attr_reader :capacity, :target

  def initialize(capacity, content, target)
    @capacity, @content, @target = capacity, content, target
  end

  def transfer_to(other_jar)
     if self.content <= other_jar.capacity - other_jar.content
       # jar self is emptied
       other_jar.content += self.content
       self.content = 0
     else
       # other_jar becomes full
       self.content -= other_jar.capacity - other_jar.content
       other_jar.content = other_jar.capacity
     end
  end
end

等等。你能想出一个成功的算法吗?jar3,jar5,jar8=>true

嗨。游戏规则是什么?可以做什么手术?请在问题中添加更多信息。为什么您没有回答@Daniele的问题?目前有4票支持结束该问题。如果你不想让它关闭,只需要再投一票,你需要澄清你的问题。我想你需要我回答的第二句话,如果我的理解是正确的,欢迎你借用。我已经看过很多关于在三个瓶子之间转移液体的谜题,我很有信心我知道你在做什么。这个问题暂时搁置,但现在解决还不晚。谁知道呢,如果你澄清了这个问题,你可能会被取消限制。你投入工作来解决一个问题,你会得到一张赞成票。这是规则!
def success?(*jars)
  jars.all? { |jar| jar.content == jar.target }
end
jar8 = Jars.new(8, 8, 4)
  #=> #<Jars:0x000057c7edc841e8 @capacity=8, @content=8> 
jar5 = Jars.new(5, 0, 4)
  #=> #<Jars:0x000057c7ede176e0 @capacity=5, @content=0> 
jar3 = Jars.new(3, 0, 0)
  #=> #<Jars:0x000057c7ede422a0 @capacity=3, @content=0>
jar8.content #=> 8
jar5.content #=> 0
jar3.content #=> 0

success?(jar3, jar5, jar8) #=> false
jar8.transfer_to(jar3)
jar8.content #=> 5
jar5.content #=> 0
jar3.content #=> 3

success?(jar3, jar5, jar8) #=> false 
jar3.transfer_to(jar5)
jar8.content #=> 5
jar5.content #=> 3
jar3.content #=> 0

success?(jar3, jar5, jar8) #=> false