を予防する場合、チェックにそれを置く動き選ぶことを未然に防ぐために、次のように私はアルゴリズムを持っている無限再帰を回避:ボードをコピーし、コピーした上で働くことによって(チェス - チェック
- 偽の動きをボード)
- 移動が偽造された後に、すべての正当な相手の動きを得る。
- 法的な動きの1つがプレイヤーの王を攻撃することができれば、当初の偽造された動きは選択できません。
ただし、ステップ2(太字)では、プログラムは、他のプレーヤーが行っていることがあれば、他のプレーヤーをチェックしないようにチェックする必要があります。これは、アルゴリズム的に回避する方法がわからない無限の再帰を作成します。人々はこのような状況に対してどのような示唆を持っていますか?
"プログラムは、他のプレイヤーが何をしても、他のプレイヤーをチェックしないようにチェックする必要があります。"プログラムはこの状況でこの条件をチェックしてはいけません。 [ケース・イン・ポイント](https://lichess.org/editor/8/8/8/8/8/7k/6r1/R3KQ2_w_KQkq_-)1.Ke2は黒人がルークを動かすことができないにもかかわらず、合法ではない。 –
なぜそれは合法ではないでしょうか?黒人は王を奪うために何もできないので、チェックしていないだろうか? – user7518095
いいえ、FIDEによって公表された公式チェス規則は、この状況を第3.9項で明示的に扱っています。チェスエンジンを実装する前にルールを読んでおくべきです。 –