油分け算の解き方(最短手数の求め方)
「同じ向きに回す」だけで解ける手順と最短手数の求め方を、動く図で紹介します。
油分け算を遊ぶ(無料・60問)同じ向きに回せばたいてい目標の量に着く
- 中くらいの容器が空なら大きい容器から注ぐ
- 小さい容器が満タンなら大きい容器へ戻す
- どちらでもなければ、中くらいから小さい容器へ注ぐ
塵劫記の問題:10Lの油を 5L・5L・0L に分ける
10
10L0
7L0
3Lはじめの形です
この向きは9手(最短)
中と小のどちらを先に使うかで、向きは2通り。半分ずつに分けるなら、短いほうが最短です。
塵劫記(じんこうき)の問題(10・7・3で5ずつ)は、9手が最短
| 手 | 10L | 7L | 3L | 操作 |
|---|---|---|---|---|
| 0 | 10 | 0 | 0 | はじめ |
| 1 | 3 | 7 | 0 | 10L → 7L |
| 2 | 3 | 4 | 3 | 7L → 3L |
| 3 | 6 | 4 | 0 | 3L → 10L |
| 4 | 6 | 1 | 3 | 7L → 3L |
| 5 | 9 | 1 | 0 | 3L → 10L |
| 6 | 9 | 0 | 1 | 7L → 3L |
| 7 | 2 | 7 | 1 | 10L → 7L |
| 8 | 2 | 5 | 3 | 7L → 3L |
| 9 | 5 | 5 | 0 | 3L → 10L |
反対の向き(10→3→7→10)は10手です。
方眼のグラフでは点が外わくで折り返す
横を7Lの量・縦を3Lの量にすると、3つの容器の量が方眼の1つの点になります。
- 10Lと7Lの間なら横、10Lと3Lなら縦に動く
- 7Lと3Lの間ならななめ(2つの合計が変わらないため)
外わくに当たるたびに折り返し、目標(横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を量ります。
- 注ぐ先の容器が満タンなら捨てる
- 汲む容器が空なら蛇口から汲む
- どちらでもなければ汲む容器から注ぐ
| 手 | 3L | 5L | 操作 |
|---|---|---|---|
| 0 | 0 | 0 | はじめ |
| 1 | 0 | 5 | 5Lを汲む |
| 2 | 3 | 2 | 5L → 3L |
| 3 | 0 | 2 | 3Lを捨てる |
| 4 | 2 | 0 | 5L → 3L |
| 5 | 2 | 5 | 5Lを汲む |
| 6 | 3 | 4 | 5L → 3L |
3Lを汲む向きは8手なので、6手が最短です。
12Lの3等分はまず1つ分を作る
12L→8Lで4Lを残せば、あとは 8・5・3 の問題(7手)と同じです。
| 手 | 12L | 8L | 5L | 3L | 操作 |
|---|---|---|---|---|---|
| 0 | 12 | 0 | 0 | 0 | はじめ |
| 1 | 4 | 8 | 0 | 0 | 12L → 8L |
| 2 | 4 | 3 | 5 | 0 | 8L → 5L |
| 3 | 4 | 3 | 2 | 3 | 5L → 3L |
| 4 | 4 | 6 | 2 | 0 | 3L → 8L |
| 5 | 4 | 6 | 0 | 2 | 5L → 3L |
| 6 | 4 | 1 | 5 | 2 | 8L → 5L |
| 7 | 4 | 1 | 4 | 3 | 5L → 3L |
| 8 | 4 | 4 | 4 | 0 | 3L → 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問と今日の問題。「ヒント」と「答え」で最短の手順が分かる