#coding:utf-8
def func n , r
((n-r)...n).map do |i|
puts "#{i} からB落とす"
if rand(30) == 0
puts "#{i}階で卵Bが割れた"
puts "割れないのは#{i-1}階まで"
return
end
end
puts "卵Bは割れなかった"
puts "割れないのは#{n-1}階"
end
def f n , r , limit
if n > limit
puts "卵Aは#{limit}階でも割れなかった"
return
end
puts "#{n} からA落とす"
if rand(2) == 0
puts "#{n}階で卵Aが割れた"
func n , r - 1
return
else
r /= 2
r = 1 if r.zero?
f n + r , r , limit
end
end
f 50 , 50 , 100
I2NvZGluZzp1dGYtOAoKZGVmIGZ1bmMgbiAsIHIKICAoKG4tcikuLi5uKS5tYXAgZG8gfGl8CiAgICBwdXRzICIje2l9IOOBi+OCie+8ouiQveOBqOOBmSIKICAgIGlmIHJhbmQoMzApID09IDAKICAgICAgcHV0cyAiI3tpfemajuOBp+WNte+8ouOBjOWJsuOCjOOBnyIKICAgICAgcHV0cyAi5Ymy44KM44Gq44GE44Gu44GvI3tpLTF96ZqO44G+44GnIgogICAgICByZXR1cm4KICAgIGVuZAogIGVuZAogIHB1dHMgIuWNte+8ouOBr+WJsuOCjOOBquOBi+OBo+OBnyIKICBwdXRzICLlibLjgozjgarjgYTjga7jga8je24tMX3pmo4iCmVuZAoKZGVmIGYgbiAsIHIgLCBsaW1pdAogIGlmIG4gPiBsaW1pdAogICAgcHV0cyAi5Y2177yh44GvI3tsaW1pdH3pmo7jgafjgoLlibLjgozjgarjgYvjgaPjgZ8iCiAgICByZXR1cm4KICBlbmQKICBwdXRzICIje259IOOBi+OCiUHokL3jgajjgZkiCiAgaWYgcmFuZCgyKSA9PSAwCiAgICBwdXRzICIje2596ZqO44Gn5Y2177yh44GM5Ymy44KM44GfIgogICAgZnVuYyBuICwgciAtIDEKICAgIHJldHVybgogIGVsc2UKICAgIHIgLz0gMgogICAgciA9IDEgaWYgci56ZXJvPwogICAgZiBuICsgciAsIHIgLCBsaW1pdAogIGVuZAplbmQKZiA1MCAsIDUwICwgMTAwCg==