水くみパズルのはなし
目盛りのない2つの容器で、ちょうどの量を作る。作れる量と作れない量を分けるのは、最大公約数でした。
遊んでみる水くみパズル
目盛りのない容器が2つあります。たとえば3Lと5L。水は何度でもくめます。この2つだけで、ちょうど4Lを作れるでしょうか。 できるのは、「満たす」「空にする」「もう片方へ注ぐ」の3つだけです。注ぐときは、注ぎ元が空になるか、注ぎ先が満杯になるまで止められません。 それでも工夫すれば、目盛りがなくても、ちょうどの量を作れます。
差を取り出す
3Lと5Lで4Lを作る手順を見てみましょう。左を3L、右を5Lの容器とします。
- 右を満たします(右5L)。
- 右から左へ注ぎます(左3L、右2L)。左が満杯になるので止まります。
- 左を空にします。
- 右の2Lを左へ注ぎます(左2L、右0L)。
- 右を満たします(左2L、右5L)。
- 右から左へ注ぎます。左はあと1Lしか入らないので、右に4Lが残ります。
合計6手です。コツは、満杯の容器からもう片方を満たすと、2つの容量の「差」が残ることです。その残りを使い回して、新しい量を作っていきます。 このサイトの4つの問題のうち、3Lと5Lで4Lを作るのは6手、2Lと7Lで5Lを作るのは2手、3Lと5Lで1Lを作るのは4手が最短です。プログラムで確かめました。
作れる量を決めるもの
では、どんな量でも作れるのでしょうか。じつは、そうではありません。たとえば4Lと6Lの容器で、3Lは作れません。 どうやっても、2、4、6のように、2の倍数の量しか出てこないからです。
2つの容量が整数のとき、作れる量は、2つの容量の最大公約数の倍数だけです。 最大公約数とは、両方の数を割り切れる、いちばん大きい整数のこと。4と6なら2です。 この条件を満たしていて、容器に入りきる量なら、かならず作れます。数学ではこれを「ベズーの等式」という考え方で説明します。 3Lと5Lのように最大公約数が1なら、1Lきざみで、どんな量も作れます。
このサイトの作品では、容量と目標を1〜12Lの整数で選べます。そのすべての組み合わせについて、全部の状態を探索して、 「作れる量は最大公約数の倍数だけ」であることを確かめました。作れない目標のときは、ヒントがそのことを教えます。
いつからあるパズル?
容量の違う容器で水を測り分けるパズルは、中世から知られていたとされています。17世紀の数学者バシェの本にも載っている、と数学の雑誌で紹介されています。 いつ、誰が最初に考えたのかは、はっきりしません。
1939年には、この種のパズルを図で解く方法が、数学の雑誌に発表されたとされています。 2つの容器の量を縦と横の座標にして、平行四辺形のビリヤード台の中で玉が壁にはねかえりながら進む道すじとして、注ぎ分けの手順を表す方法です。 作品ページのグラフも、横軸が左の容器、縦軸が右の容器の量です。点から点へ矢印をたどるのが、1回の操作に当たります。
解くときの考え方
- まず「作れるか」を調べる。目標が最大公約数の倍数でなければ、どれだけ試しても作れません。
- 満杯から注いで「差」を作る。満たしてから注ぐと、容量の差が残ります。
- 余りを残したまま、もう片方を使う。片方に余りを置いておき、もう片方を満たしたり空にしたりして、新しい量を作ります。
- 行き詰まったら空にして、やり直してもよい。「戻る」や「リセット」で何度でも試せます。
行き詰まったら、作品ページの「ヒント」を押してください。考え方、最大公約数、次の1手の順に出ます。 作れない問題では、なぜ作れないかを教えます。
出典・参考
- Wikipedia — Water pouring puzzle
- MathWorld — Three-Jug Problem
- Cut the Knot — Water Pouring
- Cogniq Fun — src/lib/games/water-jugs/engine.test.ts(4つの問題の最短手数、容量と目標が1〜12のすべてで最大公約数の条件を全探索 / preset minima, and a full search of the greatest-common-divisor rule for every capacity and target from 1 to 12)
更新: 2026-10-17