【参考】
ニム(Nim)とは、物を並べて二人で交互に取合うゲームのことをいいます。
英語です。
◆石川県 Takashi さんからの解答
【問題1】
先手必勝。
まず、2段目の中央の1本を消す。 |
|+|
すると、同時に2本以上消す事の出来ない棒が3本残っているので、先に消す後手が必ず負ける。
【問題2】
2段目の中央の1本を消すか、2段目を3本とも消す。
問1で説明した事を応用して考えると、
互いに独立した(2n−1)本【nは自然数】を残して相手に渡すと勝つ事が出来る。
【問題3】
先手必勝。
まず、3段目の端から3本を消す。 |
|||
+++||
<a>後手が、1段目を消したとき、
先手は、2段目の端の1本を消す。 +
||+
+++||
次に、後手が1本消したら先手は2本
後手が2本消したら先手は1本消せば先手が勝。
<b>後手が、2段目の端の1本を消したとき、
先手は、1段目を消す。 +
||+
+++||
よって、<a>と同様となり先手が勝。
<c>後手が、2段目の中央の1本を消したとき、
先手は、3段目の2本を消す。 |
|+|
+++++
よって、問1と同様に、先手が勝。
<d>後手が、2段目の2本を消したとき、
先手は、3段目の1本を消す。 |
|++
+++|+
よって、問1と同様に、先手が勝。
<e>後手が、2段目の3本を消したとき、
先手は、3段目の2本を消す。 |
+++
+++++
よって、先手が勝。
<f>後手が、3段目の1本を消したとき、
先手は、2段目の2本を消す。 |
++|
++++|
よって、<d>と同様に、先手が勝。
<g>後手が、3段目の2本を消したとき、
先手は、2段目の3本を消す。 |
+++
+++++
よって、先手が勝。
以上によって、先手が必勝である。
◆広島県 清川 育男 さんからの解答
【問題1】
先手 2段目の3本を消す。
後手 1段目の1本を消さざるを得ない。
したがって、先手必勝。
【問題2】
後手 2段目の3本を消す。
終局まで残り3手であるから、先手−後手−先手
したがって、後手の勝ち。
【問題3】
先手必勝。
3段目を左から1,2,3,4,5と番号を付けるとき、
(1,2,3)の3本か(3,4,5)の3本を消せばよい。
1 1
111 111
+++11 11+++
ブロック(つながっているもの)で考えると「3山崩しの問題」に還元される。
残りは(1,3,2)。
(1,1,1)または(2,2)にして後手に手を渡す。
例えば、後手が2段目の中央の1本を消せば、先手は3段目の2本を消す。
ブロックで考えると残りは、(1,1,1)となる。
2進法で最初の状態を表現すると、
「001」 「001」
「011」−>>「011」
「101」 「010」
1 XOR 3 XOR 5=7 ->> 1 XOR 3 XOR 2=0
排他的論理和を0にして後手に手を渡したことになる。
【問題4】
1 XOR 3 XOR 5 XOR 7=0 001
011
101
111
――――
224
排他的論理和が0でかつ2本以上の段が2個以上あるから、後手必勝です。
●例 1 1 1
111 111 111
11111 −>> 11111 −>> +++11
1111111 11+++11 11+++11
1 XOR 3 XOR 5 XOR 2 XOR 2=7
1 XOR 3 XOR 2 XOR 2 XOR 2=0
最初の状態のとき排他的論理和0がであるから後手必勝となら。
【おまけ】
ブロック(つながっているもの)で考えると、「N山崩しの問題」に還元される。
今回のルールでは後手必勝のパターンは、2個以上の山が2個以上あり、かつ排他的論理和が0のときである。
1段(問題にならないと思います。)
4段,8段,12段,・・・・,4N段(Nは自然数。)
のとき後手必勝で、他の場合は先手必勝である。
結局2進法の問題に還元されます。
またブロック(つながっているもの)で考えると、「N山崩しの問題」になります。
◆石川県 平田 和弘 さんからの解答。
【問題1】
勝ち方その1 先手 後手
| | +
||| → +++ → +++ → 先手勝ち
勝ち方その2 先手 後手 先手 後手
| | | + +
||| → |+| → ++| → ++| → +++ → 先手勝ち
以上より先手勝ちとなります。
【問題2】
先手 後手
| | | |
||| ||| +++
||||| → |+++| → |+++| → | | → となり、
ここでの後手番勝ち即ち後手勝ちとなります。
【問題3および問題4】
1,3,5,7をそれぞれ山と呼ぶことにしてを各山を2進法で表して考えます。
また山の間(途中)を消されたときは山を分割して同様に考えます。
1)1,3,5 のとき
1= 1(2)
3= 11(2)
5=101(2)
2)1,3,5,7 のとき
1= 1(2)
で、2進法表記の各位の1の個数が偶数個の時、偶数ポジションと呼び、そうでないとき奇数ポジションと呼ぶことにします。
3= 11(2)
5=101(2)
7=111(2)
上の例では1)は奇数ポジションで、2)は偶数ポジションです。
結論から言うと、奇数ポジションの時は、先手勝ちとなり、偶数ポジションの時は後手勝ちとなります。
戦略1)どの山にも1個しかないときは、奇数個の時に相手に手番が渡るようにする。
戦略2)どれかの山に2個以上あるときは、
A)奇数ポジションのときはうまい手を選んで偶数ポジションにすることができる。
B)逆に偶数ポジションのときは必ず奇数ポジションになる。
上記2つの戦略により、先手勝ち、後手勝ちが決まります。
実際、問題3では、奇数ポジションなので、
先手が5の山の左から1,2,3本目を消すと、
1= 1(2)
3=11(2)
2=10(2)
となり、偶数ポジションとなります。
以後は後手がどのような手を選択しても奇数ポジションになります。
以下、同様の戦略で先手勝ちとなります。
また、問題4では、偶数ポジションなので、先手がどんな手を選択しても奇数ポジションになります。
例えば、先手が5の山の左から2,3本目を消したとすると、後手が7の山の左から1〜6本目を消せば、再び偶数ポジションとなります。
2進法で表すと以下のようになります。
先手 後手
1 1 1
11 11 11
101 1 1
111→ 10 → 10
111 111
以下同様の戦略で後手勝ちとなります。
【おまけの問題】
結論は段数が4n(n=1,2,3,・・・・・)のとき後手勝ちとなります。
実は段数が4n(n=1,2,3,・・・・・)のとき上記定義の、偶数ポジションとなります。
実際、1,3,5,7,・・・・の一般項は
a(n)=2n−1 で、
1)n=4m(m=1,2,3,・・・) のとき、
a(n)=8m−1
2)n=4m−3(m=1,2,3,・・・) のとき、
a(n)=8m−7=8m−22−2−1
3)n=4m−2(m=1,2,3,・・・) のとき、
a(n)=8m−5=8m−22−1
4)n=4m−1(m=1,2,3,・・・) のとき、
a(n)=8m−3=8m−2−1
従って、段数が4n(n=1,2,3,・・・・・)のとき
8m | −1 | ||
8m | −22 | −2 | −1 |
8m | −22 | −1 | |
8m | −2 | −1 |
で、2進法で表したときの
1の位、2の位、22の位、23位以上の1の個数が必ず偶数個となります。
後は上記、戦略1)、2)に従えば後手勝ちとなります。
【問題4 補足】
2進法表記で、
1
11
101
111
――――
の偶数ポジションでスタートして先手は(左右同形を除いて)次の30手しかありません。
しかも必ず奇数ポジションになります。
01)
+
||| 11
||||| 101
||||||| → 111
――――
02)
| 1
+|| 10
||||| 101
||||||| → 111
――――
03)
| 1
|+| 1
||||| 1
||||||| → 101
111
――――
04)
| 1
++| 1
||||| 101
||||||| → 111
――――
05)
| 1
+++ 101
||||| → 111
――――
|||||||
06)
| 1
||| 11
+|||| 100
||||||| → 111
――――
07)
| 1
||| 11
|+||| 1
||||||| → 11
111
――――
08)
| 1
||| 11
||+|| 10
||||||| → 10
111
――――
09)
| 1
||| 11
++||| 11
||||||| → 111
――――
10)
| 1
||| 11
|++|| 1
||||||| → 10
111
――――
11)
| 1
||| 11
+++|| 10
||||||| → 111
――――
12)
| 1
||| 11
|+++| 1
||||||| → 1
111
――――
13)
| 1
||| 11
++++| 1
||||||| → 111
――――
14)
| 1
||| 11
+++++ → 111
――――
|||||||
15)
| 1
||| 11
||||| 101
+|||||| → 110
――――
16)
| 1
||| 11
||||| 101
|+||||| → 1
100
――――
17)
| 1
||| 11
||||| 101
||+|||| → 10
100
――――
18)
| 1
||| 11
||||| 101
|||+||| → 11
11
――――
19)
| 1
||| 11
||||| 101
++||||| → 101
――――
20)
| 1
||| 11
||||| 101
|++|||| → 1
100
――――
21)
| 1
||| 11
||||| 101
||++||| → 10
11
――――
22)
| 1
||| 11
||||| 101
+++|||| → 100
――――
23)
| 1
||| 11
||||| 101
|+++||| → 1
11
――――
24)
| 1
||| 11
||||| 101
||+++|| → 10
10
――――
25)
| 1
||| 11
||||| 101
++++||| → 11
――――
26)
| 1
||| 11
||||| 101
|++++|| → 1
10
――――
27)
| 1
||| 11
||||| 101
+++++|| → 10
――――
28)
| 1
||| 11
||||| 101
|+++++| → 1
1
――――
29)
| 1
||| 11
||||| 101
++++++| → 1
――――
30)
|
||| 1
||||| 11
+++++++ → 101
――――
たぶんもれていないと思いますが・・・・・。
◆埼玉県 ごろー さんからの解答
一般の場合の『N山崩し』、『棒取りゲーム』の証明です。
この証明は「棒取りゲーム(最後に取ったほうの負け)」のものです。
石川県平田和弘さんの戦略2)A)B)が正しいことの証明と具体的にどのように棒を取るかについて書いてみました。
”(5)のときは次の一手で(1),(5)の形にはできないことの証明。”がN山崩しの証明とは異なる部分だと思います。
[命題、用語の説明]
|||・・| a本 |||・・・| b本 |||・・・・|c本 |||・・・・|・ ・・・・・・・・・ ・・・・・・・・・を(a,b,c,・・・)のように書くことにします。
一般の場合(a,b,c・・・)の勝ち負けについて。
a*b*c*・・・を次のように決める。
各数を二進数表示して各桁ごとに1が奇数個なら1、偶数個なら0とした二進数とする。
(これはa XOR b XOR c XOR ・・・・と等しいものです。)
次の(1)〜(5)の場合しかなく、これで勝敗が判定できます。
(1)a=b=c=・・・=1かつ1が奇数個 →(この場面の時の)後手が必勝 (2)a=b=c=・・・=1かつ1が偶数個 →(この場面の時の)先手が必勝 (3)a,b,c,・・・の一個だけが1でない。→(この場面の時の)先手が必勝 (4)a,b,c,・・・の二個以上が1でないかつa*b*c*・・・=00・・0でない →(この場面の時の)先手が必勝 (5)a,b,c,・・・の二個以上が1でないかつa*b*c*・・・=00・・0 →(この場面の時の)後手が必勝(1),(2),(3)は正しいことが簡単にわかります。
[証明はここから]
石川県平田和弘さんの戦略2)A)に対応する部分。
(4)のときは次の一手で必ず(5)の形にできることの証明。
なぜなら、a*b*c*・・・=00・・0でないので、この値を左から順にみていけば1が必ず見つかります。
一番右が1桁目であると数えることにして、今見つけた1はn桁目だとします。
a,b,c,・・・を二進数表示したときn桁目が1であるものがある。
なぜならn桁目の1の個数は奇数個なので、とくに1の個数は0ではありません。 |
それがaだとする。
a*b*c*・・・の1である桁とaを二進数表示したときの同じ桁の1と0をすべて入れ替えて、
それをa’とおく。
nの決め方からnより大きい桁(左側)の1と0は入れ替わらない。
n桁目は1から0に変わるので、a>a’となります。
1からn−1桁目でもaとa’は異なるかもしれませんが これは考えなくてもa>a’となります。 たとえば、777123>777097であることと同じことです。 |
また、a’の作り方からa’*b*c*・・・=0です。
なぜなら、各桁ごと1の個数が偶数個になっています。 |
a,b,c,・・・の三個以上が1でないなら
aがa’となるように棒を取れば(5)の形になります。
a,b,c,・・・の二個のみ1でないときは
a’>1となるのでaがa’となるように棒を取れば(5)の形になります。
石川県平田和弘さんの戦略2)B)に対応する部分。
(5)のときは次の一手で(1),(5)の形にはできないことの証明。
(1)にならないことは簡単にわかります。
(5)の形にならないことについて。
先手はaから棒を取ったとします。
このとき(a) → (a’)のように端の棒を含めてとる場合と
(a) → (a1,a2)のように端の棒を取らずに棒をとる場合があります。
前者ではどう取ってもaとa’の二進展開のある桁は異なるので
a’*b*c*・・・=00・・0ではありません。
だから(5)の形ではありません。
後者はa=a1*a2が成り立つように棒を取ることはできないことを証明します。
まず1本以上棒を取ることからa>a1+a2となります。
次にa1≧a2であるとしても問題ありません。
aが二進でn桁の数であるとします。
a=a1*a2となるためにはa1は2nー1以上でなければなりません。
しかし、a2<a−a1であるのでa=a1*a2が成り立つようにはできません。
そうすると、どう取ってもaと(a1*a2)の二進展開のある桁は異なるので
(a1*a2)*b*c*・・・=00・・0ではありません。
だから(5)の形ではありません。
この証明から上のように棒をとっていけば最初の形だけで先手必勝か後手必勝かが決まっていることがわかります。
問題
(a,b,c,・・)+(x,y,z,・・)=(a,b,c,・・,x,y,z,・・) k(a,b,c,・・)=(2k*a,2k*b,2k*c,・・) で定める。 V={(・・・)|(・・・)は後手必勝形}−{(1,1,1,・・)|奇数個の1} は和、スカラー倍で閉じている。
◆ 問題へもどる
◆ 今週の問題へ