ゲーム一覧

油分け算の解き方(最短手数の求め方)

「同じ向きに回す」だけで解ける手順と最短手数の求め方を、動く図で紹介します。

油分け算を遊ぶ(無料・60問)

同じ向きに回せばたいてい目標の量に着く

  1. 中くらいの容器が空なら大きい容器から注ぐ
  2. 小さい容器が満タンなら大きい容器へ戻す
  3. どちらでもなければ、中くらいから小さい容器へ注ぐ

塵劫記の問題:10Lの油を 5L・5L・0L に分ける

10
10L
0
7L
0
3L
0123456701237Lの量 →↑ 3Lの量目標

はじめの形です

この向きは9手(最短)

中と小のどちらを先に使うかで、向きは2通り。半分ずつに分けるなら、短いほうが最短です。

塵劫記(じんこうき)の問題(10・7・3で5ずつ)は、9手が最短

手10L7L3L操作
01000はじめ
137010L → 7L
23437L → 3L
36403L → 10L
46137L → 3L
59103L → 10L
69017L → 3L
727110L → 7L
82537L → 3L
95503L → 10L

反対の向き(10→3→7→10)は10手です。

方眼のグラフでは点が外わくで折り返す

横を7Lの量・縦を3Lの量にすると、3つの容器の量が方眼の1つの点になります。

0123456701237Lの量 →↑ 3Lの量目標123456789
10→7→3→10 の向き(9手)
0123456701237Lの量 →↑ 3Lの量目標12345678910
10→3→7→10 の向き(10手)

外わくに当たるたびに折り返し、目標(横5・縦0)までの線の数が手数です。

最短手数は方程式で求められる

大きい容器から入れる回数を x、大きい容器へ戻す回数を y とします。

塵劫記なら 10 − 7x + 3y = 5 なので 7x − 3y = 5。x=2, y=3 で、2(x+y)−1 = 9手です。

問題中を先に使う
手数 2(x+y)−1
小を先に使う
手数 2(x+y)
8・5・3
4Lずつ
5x − 3y = 4
x=2, y=2
→ 7手(最短)
3x − 5y = 4
x=3, y=1
→ 8手
10・7・3
5Lずつ
7x − 3y = 5
x=2, y=3
→ 9手(最短)
3x − 7y = 5
x=4, y=1
→ 10手
12・9・2
6Lずつ
9x − 2y = 6
x=2, y=6
→ 15手
2x − 9y = 6
x=3, y=0
→ 6手(最短)

x を1から順に試し、y が0以上の整数になる最初の組を使います。

蛇口の問題も同じ向きに回す

蛇口から汲めて、流しに捨てられる問題です。3Lと5Lで4Lを量ります。

  1. 注ぐ先の容器が満タンなら捨てる
  2. 汲む容器が空なら蛇口から汲む
  3. どちらでもなければ汲む容器から注ぐ
手3L5L操作
000はじめ
1055Lを汲む
2325L → 3L
3023Lを捨てる
4205L → 3L
5255Lを汲む
6345L → 3L

3Lを汲む向きは8手なので、6手が最短です。

12Lの3等分はまず1つ分を作る

12L→8Lで4Lを残せば、あとは 8・5・3 の問題(7手)と同じです。

手12L8L5L3L操作
012000はじめ
1480012L → 8L
243508L → 5L
343235L → 3L
446203L → 8L
546025L → 3L
641528L → 5L
741435L → 3L
844403L → 8L

容器を入れると最短の手順が分かる

問題集の答え合わせにも使えます(容器は4つまで、1つ30Lまで)。

容器容量はじめ目標
A
B
C
D

L を作る

よくある質問

途中で止めて注いでもいい?
止められない。元が空か、先が満タンになるまで注ぐ(目盛りが無いため)
回す解き方はいつも最短?
半分ずつに分けるなら最短。ほかの目標ではもっと短い手順もある
半分ずつなら短いほうが本当に最短?
大きい容器が30Lまでの864問で確かめた
10・7・4で7Lに2Lを作るなら?
回すと8手だが最短は4手
どちらの向きでも目標に着く?
大きい容器がほかの2つの合計以上なら、解ける問題はどちらでも着く
大きい容器が中と小の合計より小さいときは?
回せば解ける。半分ずつなら短いほうが最短だが、方程式の手数とずれることがある
このサイトの問題も回せば最短?
3つの容器と蛇口の問題(49問)は、すべて2つの向きの短いほうが最短
方程式の手数は最短と合う?
大きい容器がほかの2つの合計以上で半分ずつに分ける527問では一致した
なぜ手数が 2(x+y)−1 になる?
大きい容器とのやりとり x+y 回の間に、7L→3L が x+y−1 回入るから
量れない量はある?
容量の最大公約数の倍数しか量れない(4Lと6Lなら1L・3L・5Lは無理)
2つの容器と蛇口で量れる量は?
大きいほうの容量までの、最大公約数の倍数すべて(3Lと5Lなら1〜5L)
蛇口の問題で汲む・捨てるも1手?
1手と数える(ゲームもツールも同じ)
蛇口の問題も短いほうが最短?
容器が16Lまでの705問で確かめた
油分け算はどこから来た?
江戸時代の『塵劫記(じんこうき)』(1627年)の、10升の油を7升と3升で5升ずつ分ける問題
映画に出てきた問題は?
『ダイ・ハード3』の、5ガロンと3ガロンで4ガロンを量る問題。蛇口の問題と同じ形
どんな所で出る?
中学受験の算数や公務員試験の判断推理
英語では何と呼ぶ?
Water pouring puzzle。西洋でも古くからある
ゲームで練習できる?
初級・中級・上級の各20問と今日の問題。「ヒント」と「答え」で最短の手順が分かる
油分け算を遊ぶ(無料・60問)