dポイントプレゼントキャンペーン実施中!

バケツの水を0.7リットル入るジョッキと0.5リットル入るコップを使って0.6リットルの水をジョッキに入れる。という問題で、入れ方自体は

括弧の中は(ジョッキ,コップ)

1.バケツからジョッキに入れる(0.7,0)
2.ジョッキからコップに入れる(0.2,0.5)
3.コップからバケツに戻す(0.2,0)
4.ジョッキからコップに入れる(0,0.2)
5.バケツからジョッキに入れる(0.7,0.2)
6.ジョッキからコップに入れる(0.4,0.5)
7.コップからバケツに戻す(0.4,0)
8.ジョッキからコップに入れる(0,0.4)
9.バケツからジョッキに入れる(0.7,0.4)
10.ジョッキからコップにいれる(0.6,0.5)
11.コップの水をバケツに戻す

この11手順で0.6リットルの水をジョッキに入れることが出来るのは分かりましたが、これよりも少ない手順で0.6リットルの水を入れる方法はあるでしょうか?

また、もし上記が最速なら、それを証明する(証明問題ではなくただのクイズなので正式なモノでなくてもいいですが)事はできるのでしょうか?

お手数ですが、ご教授願います。
よろしくお願いいたします。

A 回答 (4件)

#1です。

すいません、#1にちょっと嘘があったようです。

その訂正ともうちょっと詳しい説明を一緒にします。

xy平面上において、x=0,x=7,y=0,y=5で囲まれる長方形を考えて、
ジョッキにx/10リットル、コップにy/10リットル入っている状態←→長方形内の格子点(x,y)
のように対応させます。(#1のコピペ)

ジョッキに水を汲むという操作は、点(x,y)から点(7,y)に移動する事に対応します。(コップに水を汲む場合も同様)
ジョッキの水を捨てるという操作は、点(x,y)から点(0,y)に移動することに対応します。(コップの水を捨てる場合も同様)
ジョッキの水をコップに移すという操作は、x+y=一定の直線上を長方形の辺にぶつかるまで移動することに対応します。

まとめると、水を汲む・捨てる・移すという操作は、
1.x軸に平行な直線
2.y軸に平行な直線
3.x+y=一定の直線(右肩下がりの直線)
のいずれかの直線上を、長方形の辺に衝突するまで移動すること(長方形の辺から辺に移動すること)に対応します。
※分かりにくければ、実際に長方形を書いて考えみてください。

ゴール地点は(6,0)ですよね。ここに到達するには、
1つ前の段階で(6,5)にいて、直線x=6に沿って移動する(つまりコップの水を捨てる)
1つ前の段階で(1,5)にいて、x+y=6の直線に沿って移動する(つまり、コップの水をジョッキに移しる)
のどちらかしかありません。※#1では後者の可能性を見落としてました。

じゃぁ、さらにその前の段階ではどうでしょうか。
(6,5)に到達するには、前の段階で(7,4)にいて直線x+y=11に沿って移動するしかありません。
(1,5)に到達するには、前の段階で(1,0)にいて直線x=1に沿って移動するしかありません。

これと同じ事を繰り返せば、(0,0)から(6,0)に到達するには(遠回りをしないとしたら)、
(6,0)←(6,5)←(7,4)←(0,4)←(4,0)←(4,5)←(7,2)←(0,2)←(2,0)←(2,5)←(7,0)←(0,0)

(6,0)←(1,5)←(1,0)←(0,1)←(7,1)←(3,5)←(3,0)←(0,3)←(7,3)←(5,5)←(5,0)←(0,5)←(0,0)
のどちらかに限られる事になります。

前者は11回、後者は12回の手順ですので、前者の手順が最短という事になります。
    • good
    • 0
この回答へのお礼

とても参考になりました

ありがとうございました。

お礼日時:2006/10/03 01:57

クイズの答えとしてなら(実際にできるかどうか?)



まずはじめ、0.7Lのジョッキに半分以上の水を入れます。
そしてジョッキを傾けていき、(水はこぼしていきます)ジョッキの底の一番上の部分とジョッキの口の一番下の部分が水平になるところで止めます。
 ※文章での説明ではわかりづらいのですが、
  たとえば、ジョッキの直径と高さが同じ
  場合、45度に傾けた状態です。要するに
  平面で考え長方形の対角線が水平になる
  状態にするのです。わかるかな?
そうすると、0.7Lのジョッキに半分の水(0.35L)が残ります。
同様に0.5Lのコップに半分(0.25L)の水を残し、コップの水をジョッキに入れます。

0.35+0.25=0.6

どんなもんでしょうか?

この回答への補足

一応、空にするか、一杯まで入れるのどちらかしかできない。
という問題でした。すいません、最初に書くべきでした…。

回答ありがとうございました。

補足日時:2006/09/27 00:47
    • good
    • 0

この手順が最短だと思いますが



とんちを使って良ければ、ジョッキに線を引いて

1.バケツからジョッキに入れる(0.7,0)
2.ジョッキからコップに入れ、ジョッキに線を引く(0.2,0.5)
3.コップからバケツに戻す(0.2,0)
4.ジョッキからコップに入れる(0.0,0.2)
5.ジョッキの線まで水を入れる(0.2,0.2)
6.ジョッキからコップに入れる(0.0,0.4)
7.もう一度ジョッキの線まで水を入れる(0.2,0.4)
8.コップにあふれる直前まで移す(0.1,0.5)

だめかなぁ(もっと短いのもありそうだが)
    • good
    • 0
この回答へのお礼

一応、空にするか、一杯まで入れるのどちらかしかできない。
という問題でした。すいません、最初に書くべきでした…。

回答ありがとうございました。

お礼日時:2006/09/27 00:47

xy平面上において、x=0,x=7,y=0,y=5で囲まれる長方形を考えて、


ジョッキにx/10リットル、コップにy/10リットル入っている状態←→長方形内の格子点(x,y)
のように対応させます。

最終的に点(6,0)に到達しないといけないのだから、その前のステップでは点(6,5)にいないいけない。点(6,5)の前のステップでは・・・、と考えていけば、自動的に仰るような手順が得られます。従って、仰る操作が最短と言えるかと。

この回答への補足

すいません、ちょっと難しいです…。
お手数ですが、もうすこし具体的にお願いします…。
よろしくお願いいたします。

補足日時:2006/09/27 00:47
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!