2進数で表現された数では、偶数桁目に現れる1の数と、奇数桁目に現れる1の数の差が3の倍数になると、その数は3で割り切れる、という性質があります(*)。この特別な場合として、偶数桁目、奇数桁目に現れる1の数が等しければ、その数は3で割り切れます。(例: 10進数の 30 = 2進数で 11110 偶数桁目,奇数桁目それぞれに 1が二つ)。
この性質をゲームにしてみたのが、びんさめです。このゲームでは、黒丸、白丸が、2進数の1,0に対応しています。一番右は、次の行の一番左につながっていると考えて下さい。つまり最小サイズなら、5 × 3 = 15桁の2進数が表示されているわけです。さらに、最初に表示される数は上に書いたように、偶数桁目、奇数桁目の黒丸、つまり1の数が丁度同じになるように調整してあります。
そして、各行の桁数は、サイズ最小で 5桁、サイズ最大で35桁というように、必ず奇数になるようにしてあります。隣り合うマスは、上下でも左右でも、奇数の位置と偶数の位置になるようになっています。別の言い方をすれば、偶数の位置を赤、奇数の位置を白にして塗れば、チェッカーのように互い違いになります。つまり、上下左右に隣り合う黒石(白石もですが)を消しても、偶数桁目、奇数桁目にある1の数は変わりません。
さらに、他のルールも、偶数の位置にある石は必ず偶数の位置に動き、奇数の位置にある石は必ず奇数の位置に動くように定めてあります。このおかげで、最後に白石が一つだけ残った状態にできれば、偶数の位置にある石と奇数の位置にある石の数が等しかった、つまり、元の数は3で割り切れる数だった、と言うことが確認できたことになります。
(*) 2進数n桁目を An (= 0,1) とすると、
(Σ An 2^n) mod 3 = [Σ An (3-1)^n] mod 3 = [Σ (-1)^n An] mod 3 = (A0 - A1 + A2 - A3 + A4 - A5 + ...) mod 3