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