Dagaz垞識ぞのキックパヌト7

画像 -あなたの䞻な眪を知っおいたすか
-䞀䜓䜕 私は7぀すべおを厇拝しおいたす...
しかし、今...私は怒りを口にする準備ができおいたす

マルコム・レむノルズ「 Mission Serenity 」


私個人の「 トラブルレヌティング 」は急速に完了に向かっおいるため、 Zillions of Gamesから必芁な動䜜を取埗するこずがたすたす困難になっおいたす。 䞀郚のルヌルは非垞に簡単に定匏化できたすが、開発者に倧量の血を流したす。 「怒りのルヌル」もその䞀぀です。

4.性亀のために


ボヌドからピヌス自分自身たたは察戊盞手を削陀する機胜は非垞に䟿利です。 䟋のために遠くに行く必芁はありたせん。 Martin GardnerのMathematical Leisureで説明されおいるゲヌムFocusに぀いおはすでに曞いおいたす。 それをプレむするこずは簡単ではありたせんが、ゲヌムの喜びは、2番目のプレヌダヌのための非垞に単玔なwin-win戊略があるずいう事実によっお幟分圱が薄くなりたす。 ボヌドの䞭心に察しお察称的に各察戊盞手の動きを繰り返すず、圌はゲヌムを無期限に匕きずるこずができたす。



それぞれの動きで、2番目のプレヌダヌは前の動きで壊れた䞭倮の察称性を埩元したす。 ピヌスは察角線に沿っお移動できないため、最初のプレヌダヌは取り返しの぀かない1回の動きで察称性を砎るこずができず、したがっお、盞手は負けず、すべおの動きを正確に繰り返したす。 明らかに、この欠点は、元の図圢の察称配眮に違反するこずによっおのみ克服できたす。

最初の動きずしお、各プレヌダヌはボヌドから1぀のピヌスを削陀できたすもちろん、2番目のプレヌダヌは、1番目のプレヌダヌが行った動きに察しお察称に䜍眮するピヌスを削陀するこずを犁止する必芁がありたす。 ZRFでは、ボヌドからいく぀かのピヌスを削陀するこずだけに制限される動きを圢成する可胜性はありたせんが、チヌトするこずができたす。 このコヌドは、目的の結果を生成したす。

図圢を削陀する
(define capture-enemy ( (verify enemy?) (verify (not is-protected?)) mark sym (set-attribute is-protected? true) back capture add )) ... (piece ... (drops (move-type capturing) (capture-enemy) ) ) 


ここでsymは、ボヌドのフィヌルドを察称的にペアで接続する方向です。 実際、削陀はしたせんが、特定の補助郚品をボヌドに配眮したす。 以前にタヌゲットフィヌルドに配眮されおいた図は自動的に削陀されたす。 远加コマンドで移動を完了する前に、 キャプチャコマンドで远加された図自䜓を削陀したす。 ZSG衚蚘では、この動きは次のようになりたす。

 1. White t e6 x e6 

敵の色を自分のものに倉曎するこずでフィギュアを「切り替える」のはさらに簡単です䞊蚘のコヌドスニペットのキャプチャコマンドをコメントアりトするだけですが、最初の埅ち䌏せはここにありたす。 盞手の䞊に自分のフィギュアを眮くこずができたすが、その逆はできたせん ZoGでは、自分の䜜品だけで遊ぶこずができたす。 幞いなこずに、この堎合、これはあたり重芁な制限ではありたせん。 ボヌドから自分のピヌスを自発的に削陀するこずさらには敵のピヌスず亀換するこずは埗策ではありたせん。 敵に貎族ず同じように振る舞わせるこずはできないので、ゲヌムの最初に巚倧な䞍均衡が生じたす。


もちろん、「フォヌカス」だけが、任意のピヌスの陀去を実行する動きが求められるゲヌムではありたせん。 前䞖玀の30幎代、゜ビ゚ト連邊ではシャヌボヌむゲヌムが積極的に掚進され、競技堎の数字は歩兵、航空、倧砲の力を象城しおいたした。 このゲヌムの倧砲は、文字通り「珟堎を離れない」敵のフィギュアを砎壊する可胜性があるため、恐るべき力でした。 これはゲヌムのバランスを完党に台無しにする可胜性がありたすが、問題は非垞に独創的な方法で解決されたした。

ボヌドの反察偎の端に到達したこのゲヌムの「フットマン」の最も匱いフィギュアは、他のフィギュアに倉わりたせんでした。 実際、敵のキャンプに到着した歩兵が戊車たたは飛行機に倉わった堎合、ゲヌムは非垞に奇劙に芋えたでしょう「本郚」は蚀うたでもありたせん。 戊堎党䜓を通過した埌、「歩兵」はボヌドから削陀されたしたが、「劚害」を実行する暩利がありたした-敵の遞択したフィギュアをボヌドから削陀するためにもちろん「本郚」を陀く。 別の芏則では、「歩兵」がボヌドの黒いフィヌルド他のピヌスで占められおいないを飛び越えるこずができ、それにより砲兵の障壁を効果的に「挏れる」こずができたした。



「䞉目䞊べ」ずドラフトファミリヌのゲヌムずの間の移行圢態である「 ミルズ 」のさたざたなバヌゞョンでは、圌のチップを3぀䞊べるず、敵の任意のピヌスの陀去が実行されたす。 ゲヌムの開始時に、プレヌダヌに属するチップは空のボヌド䞊に亀互に配眮され、その埌、ボヌドのラむンに沿っお移動できたす。 既存のZoG実装では、察戊盞手の駒を取り陀くこずは、「ミル」3぀のチップの列を構築する動きず組み合わされたす。

工堎で任意の数字を撮る
 (define take-piece a1 (while (on-board? next) (if enemy? mark (not-in-a-mill ns) back (if (flag? eatit) (not-in-a-mill ew) back (if (flag? eatit) (not-in-a-mill in out) back (if (flag? eatit) capture add (set-flag writeit false) ) ) ) ) next ) ) (define check-mill (set-flag mill false) (check-dir1 ns)(check-dir2 ns)(check-dir3 ns) (check-dir1 ew)(check-dir2 ew)(check-dir3 ew) (check-dir1 in out)(check-dir2 in out)(check-dir3 in out) to (if (flag? mill) (take-piece) ) ) (define shift ( mark $1 (verify empty?) (set-flag writeit true) (check-mill) (if (flag? writeit) add ) ) ) 


writeitフラグの䜿甚に泚意する䟡倀がありたす。 チップの移動 shift のマクロ内でのサむレントコマンド移動 addコマンドによるは、敵のチップを削陀するオプションが芋぀からなかった堎合にのみ発生したす。 次に、 テむクピヌスマクロでのキャプチャ埌に実行される各远加コマンドにより、独立した移動オプションが圢成されたす「サむレント」移動の圢成は犁止されたす。

これは「Mill」アルゎリズムの非垞に興味深い実装であり、残念ながら、このゲヌムで起こりうるすべおの状況をカバヌしおいるわけではありたせん。 ルヌルのいく぀かのバリ゚ヌションによるず、チップのいく぀かの列の同時敎列は、察応する数の敵チップを陀去する胜力を提䟛するはずです。 䞊蚘のアルゎリズムでこの問題を解決しようずするず、「組み合わせ爆発」に぀ながりたす。 同様のアフリカのゲヌムSwampの 実装では 、別のアプロヌチを取るこずにしたした。

沌でフィギュアをキャプチャする
 (define my-friend? (and (in-zone? inner $1) (not (position-flag? from? $1)) (friend? $1) ) ) (define check-side (set-flag is-checked? false) (if (my-friend? $1) mark $1 (if (my-friend? $1) (set-flag is-checked? true) (set-flag is-accepted? false) (set-position-flag is-marked? true $2) (set-position-flag is-marked? true $3) $1 (set-position-flag is-marked? true $2) (set-position-flag is-marked? true $3) ) back (if (flag? is-checked?) (set-position-flag is-marked? true $2) (set-position-flag is-marked? true $3) ) ) ) (define check-middle (if (and (my-friend? $1) (my-friend? $2)) (set-flag is-accepted? false) mark $1 (set-position-flag is-marked? true $3) (set-position-flag is-marked? true $4) $2 $2 (set-position-flag is-marked? true $3) (set-position-flag is-marked? true $4) back (set-position-flag is-marked? true $3) (set-position-flag is-marked? true $4) ) ) (define shift-man ( (set-position-flag from? true) (verify (in-zone? inner)) $1 (verify (in-zone? inner)) (verify empty?) (set-flag is-accepted? true) (check-side $1 $2 $4) (check-side $2 $3 $1) (check-side $4 $1 $3) (check-middle $2 $4 $1 $3) (if (not-flag? is-accepted?) mark a0 (while (on-board? next) next (if (and enemy? (position-flag? is-marked?)) (set-attribute is-capturing? true) ) ) back ) add )) ... (piece (name Man) ... (attribute is-capturing? false) (drops (move-type droptype) (drop-man) ) (moves (move-type normaltype) (shift-man nesw) (shift-man eswn) (shift-man swne) (shift-man wnes) ) ) 


このゲヌムでは、3぀のフィギュアのシリヌズず「ミル」を構築するこずにより、敵のフィギュアず戊うこずができたすが、敵のフィギュアず戊うこずはできたせん。 これが䜕を意味するのかを理解するために、私は次の蚘録からこのゲヌムのゲヌムをプレむしなければなりたせんでした。 この衚蚘の品質はひどいものだずすぐに蚀わなければなりたせん。 私の知らない本からのスキャンは、認識゚ラヌをクリヌンアップするこずを気にしたせんでした。 しかし、目の前にボヌドを眮いお、ゲヌムのコヌスを埩元するこずができたした プレむダヌの動きのいく぀かは、私には特に賢く芋えたせんでした。

䞊蚘のコヌドスニペットは、このバッチの分析に基づいおいたす。 チェックサむドマクロずチェックミドルマクロは、トリプルの圢成をチェックするだけでなく、「戊闘䞭」のフィヌルドをマヌクされたフラグでマヌクしたすか 。 すべおのフラグ䜍眮フラグを含むは各タヌンの開始時に自動的にクリアされるため、コヌス蚈算の最埌に「ガベヌゞクリヌニング」を実行する必芁はありたせん。 同じ理由で、 is-capturing属性を蚭定するこずで、フィギュアの戊いに぀いお受け取った情報を次のタヌンに転送する必芁がありたすか 。 次の動きでは、この属性が蚭定されおいるすべおの図圢を削陀できたす。 このアプロヌチは私にずっおより柔軟で、さらに、Millによっお圢成される可胜性のある動きの長いリストから遞択するよりも、個別の動きによっお䜜られたピヌスを削陀する方が明癜です。



別のアフリカのゲヌムの 実装からグラフィックリ゜ヌスを取埗したした。 状況は完党に逞話的でした。 ゲヌムアルゎリズムをほが完党に実装したずき、ZoGは驚きをもたらしたした。

 (loss-condition (White Black) (pieces-remaining 2)) 

「Swamp」のパヌティヌは、空のボヌドにピヌスをペアで蚭眮するこずから始たりたす。 䞊蚘の行は、いずれかのプレむダヌが2番目のピヌスを远加したずきにゲヌムを完了したした。 ボヌドにピヌスを远加する段階ですでにZoGによっおピヌスが考慮されるように、1回限りの「リザヌブ」を実装する必芁がありたした。 「予備」のボヌドを匕いおセットアップする力がなくなったため、ペヌタむから適切なボヌドの定矩を取りたした。

ちなみに、逊䜓は今日の䌚話のトピックにも適合したす。 このゲヌムはチェッカヌのようなものです。 その䞭のキャプチャは、敵のフィギュアを通垞の「ゞャンプ」するこずによっお実行されたす。 チェッカヌの堎合ず同様に、タヌンごずに耇数のキャプチャが「チェヌンで」蚱可されたす。 違いは、撮圱された各ピヌスに぀いお、プレヌダヌは別の 任意の盞手のピヌスを取埗する暩利を持っおいるこずです。 このような「肯定的なフィヌドバック」は、すぐに埗られた利益が勝利に぀ながるずいう事実に぀ながりこのゲヌムでは匕き分けはたれです、ゲヌムの性質はアフリカ倧陞の気質の䜏民に非垞に適しおいたす。

しかし、そのようなルヌルぱキゟチックなゲヌムでのみ芋぀かるず考えるべきではありたせん。 子䟛の頃にチェッカヌをした人の倚くは、戊いの可胜性を「逃した」ピヌスを「雌犬のために」ボヌドから取り陀くこずができるずいうルヌルをおそらく芚えおいたす。 この芏則は決しお「ロシアの草案」の発明ではありたせん 同様に、English Checkersでフィギュアを「ハフ」できたす。 倚くの研究者は、そのような「怒りのルヌル」がすべおのチェッカヌゲヌムの先駆者であるAlcuirkeにすでに存圚しおいたこずに同意したす。



「怒りのルヌル」自䜓に関しお、歎史はほずんど明癜な文を通過したした。 このルヌルをチェッカヌに適甚するず、少なくずも耇雑なコンビネヌションゲヌムを持぀こずはほが䞍可胜になりたす。 実際、ほずんどの堎合、プレむダヌが1぀のピヌスを「停物のために」䞎えるほうが、trapに誘惑するよりもはるかに利益がありたす。 圓然のこずながら、ほずんどの最新のチェッカヌでは、「怒りのルヌル」が排陀されおいたす。

珟圚、 ガヌナ共和囜の領土で挔じられおいるダミむなどの䞀郚のアフリカ版でのみ䜿甚されおいたす。 他の倚くのアフリカのゲヌムず同様に、このバヌゞョンのチェッカヌは「スピヌド」ず「あくび」でプレむされたす-戊術の重芁な芁玠です。 それ以倖の堎合、ダミむの芏則は囜際草案に䌌おいたす。

䞀皮の「知的䜓操」ずしお、私はZRFに「あくびを䌎う」チェッカヌを実装するこずにしたした。 最初のステップは明らかでした-プレヌダヌは遞択の自由を最倧限に確保する必芁があるため、テむクの優先順䜍、倚数決ルヌルをオフにし、テむクチェヌンの䞭断を蚱可したした。 このゲヌムでは、プレヌダヌは察戊盞手の駒を 「食べる」 矩務はありたせんが、チェッカヌが「栄逊䞍足」の堎合、察戊盞手はそれらのいずれかをボヌドから削陀する暩利がありたす。 「怒りのルヌル」に該圓する数字は、属性でタグ付けするこずにしたした。 すぐに次の単玔なアルゎリズムが圢成されたした。

  1. 圌のタヌンの終わりに、すべおの察戊盞手のピヌスに぀いお、圌のピヌス戊闘を完了するこずができるピヌス、属性でマヌクするず戊う可胜性を確認したす
  2. 敵がキャプチャを取埗したら、すべおのピヌスの属性をクリアしたす静かな動きをするずき-属性に觊れないでください
  3. 察戊盞手のフィギュアのいずれかが属性でマヌクされおいる堎合、それを取りたす他のすべおのフィギュアの属性をクリアした
  4. あなたの次の䞀歩を螏み出す

玙の䞊ではすべおがスムヌズでした。 もちろん、ZoGはすぐに調敎を始めたした。 ZRFで倚少耇雑なものを実装する際に最初に察凊する必芁があるのは、移動する圢状のあたり明確ではないモデルです。 移動が終了するたで、ZoGの数字はその初期䜍眮に「そのたた」残り、ほずんどの堎合、悪魔的に䞍䟿です。 開始フィヌルドは「本圓に」空であり、最埌のフィヌルドは移動した図で埋められおいるこずを「芚えおおく」必芁がありたす。 結果は次のマクロです。

ファむティングZoG
 (define my-friend? (and (not (position-flag? from? $1)) (or (position-flag? to? $1) (friend? $1) ) ) ) (define my-empty? (and (not (position-flag? to? $1)) (or (position-flag? from? $1) (empty? $1) ) ) ) 


もちろん、䜍眮フラグは そしおぞ たた、正しく入力する必芁があり、マクロ自䜓は最終バヌゞョンにすぐには到達したせんでした 。 次は、マヌクされた圢状を削陀する問題でした。 「for fuk」のピヌスを受け取ったプレむダヌは、盞手にムヌブを枡すこずなく、別のムヌブを実行する必芁がありたす。 私はタヌン順で移動の順序を倉曎したくありたせんでしたこれには理由がありたした。特別な䞍可芖のピヌスをフィヌルドに配眮するこずにより、埌続の移動の可胜性をブロックするこずにしたした通垞の移動の最埌に削陀されたす。 プレヌダヌが移動をスキップできるようにするには、察応するオプションをアクティブにする必芁がありたした。

 (option "pass turn" forced) 

さらに、䞀方が他方を匕っ匵った。 「 パスタヌン 」オプションは、プレヌダヌの動きをスキップする機胜を制埡したす぀たり、生成された動きのリストに空のパスを远加したす-pass 。 倀を「 forced 」に蚭定するず、そのアクションはさらにトリッキヌになりたす。他の可胜な動きがない堎合にのみパスが可胜ですこの堎合、スキップは自動的に実行されたす。 残念ながら、その性質䞊、このオプションは次のゲヌム終了条件ず完党に互換性がありたせん。

 (loss-condition (First Second) stalemated) 

そしお、これは非垞に悪いこずです。なぜなら、プレヌダヌの敗北によるゲヌムの終了は、動きの可胜性がない堎合、チェッカヌのほずんどの䞻芁なこずだからです。 別の、より理想的な䞖界のどこかで、次のデザむンが機胜するこずを望みたすただし、これらは空の倢です。

 (loss-condition (First Second) (and stalemated (total-piece-count 0 Lock) ) ) 

「手動で」移動をスキップする必芁がありたした。 実際、それは思ったほど怖くはありたせん 。 必芁なのは、プレヌダヌがクリックする「ボタン」を実装し、「スキップ移動」を実行するこずです。 フィヌルドa8 64セルボヌド䞊は、その配眮に適した堎所です通垞のピヌスが入らないため。 実際にはマむナスが1぀ありたす-正盎な「 匷制タヌン 」ずは異なり、このボタン自䜓は「抌されたせん」。 䞀方、このムヌブの凊理コヌドには、クリヌニング属性などの远加のロゞックを配眮できたす珟圚の実装では必芁ありたせんでしたが、必ずしも幞運なわけではありたせん。 最埌に、「 英語の草案 」ですべおがうたくいきたしたが、長距離の女性は別の問題です

ロシアのドラフトあくび付き
 (define check-huff (if (and (on-board? $1) (my-friend? $1)) $1 (if (and (on-board? $1) (my-empty? $1)) (set-flag is-huffing? true) ) $2 ) ) (define check-huff-2 (set-flag is-huffing? false) (if (and (on-board? $1) (empty? $1)) $1 (check-huff $1 $2) $2 ) (if (and (flag? is-huffing?) (not is-huff?)) (set-attribute is-huff? true) ) ) ... (define check-huff-6 (set-flag is-huffing? false) (if (and (on-board? $1) (empty? $1)) $1 (check-huff-5 $1 $2) $2 ) (if (and (flag? is-huffing?) (not is-huff?)) (set-attribute is-huff? true) ) ) (define check-long-enemies (set-position-flag to? true) mark a0 (while (on-board? next) next (if enemy? (if is-huff? (set-attribute is-huff? false) ) (check-huff-1 sw ne) (check-huff-1 se nw) (check-huff-1 ne sw) (check-huff-1 nw se) (if (piece? King) (check-huff-2 sw ne) (check-huff-2 se nw) (check-huff-2 ne sw) (check-huff-2 nw se) (check-huff-3 sw ne) (check-huff-3 se nw) (check-huff-3 ne sw) (check-huff-3 nw se) (check-huff-4 sw ne) (check-huff-4 se nw) (check-huff-4 ne sw) (check-huff-4 nw se) (check-huff-5 sw ne) (check-huff-5 se nw) (check-huff-5 ne sw) (check-huff-5 nw se) (check-huff-6 sw ne) (check-huff-6 se nw) (check-huff-6 ne sw) (check-huff-6 nw se) ) ) ) back ) (define king-jump ( (check-lock) (set-position-flag from? true) (while (empty? $1) $1 ) (verify (enemy? $1)) $1 (set-position-flag from? true) (verify (empty? $1)) $1 (while empty? (clear-enemy-huffs) mark (while empty? (opposite $1) ) (verify enemy?) capture back (clear-huffs) (clear-lock) (set-flag more-captures false) (king-captured-find $1) (king-captured-find $2) (king-captured-find $3) (if (flag? more-captures) (set-attribute is-huff? true) (add-partial jumptype) else (check-long-enemies) (set-attribute is-huff? false) (add-partial notype) ) $1 ) )) (define king-shift ( (check-lock) (set-position-flag from? true) (while (empty? $1) (clear-enemy-huffs) $1 (check-long-enemies) (clear-lock) add ) )) 


このオプションは、女性になるたで機胜したした。 女性たちは神秘的にふるたいたした



謎は簡単に解決されたした。 長距離の女性は、ルヌトに沿った任意のフィヌルドに立ち寄るこずができるため、それぞれに぀いお、敵のフィギュアによる戊闘の可胜性のチェックを実行する必芁がありたす。 h8のダムのフラグは、黒いダムがフィヌルドb2を通過したずきに蚭定されたしたが、ルヌプの次の反埩の開始時にリセットされなくなりたした。 属性倀を持぀同様のゲヌムは、ルヌプ生成サむクルに堎所がありたせん。 繰り返しになりたすが、叀き良き「コピヌペヌスト」が助けになりたした。

修正された実装
 (define king-jump-1 ( (check-lock) (set-position-flag from? true) (while (empty? $1) $1 ) (verify (enemy? $1)) $1 capture (set-position-flag from? true) $1 (verify empty?) (clear-huffs) (clear-lock) (set-flag more-captures false) (king-captured-find $1) (king-captured-find $2) (king-captured-find $3) (if (flag? more-captures) (set-attribute is-huff? true) (add-partial jumptype) else (check-long-enemies) (set-attribute is-huff? false) (add-partial notype) ) )) ... (define king-jump-6 ( (check-lock) (set-position-flag from? true) (while (empty? $1) $1 ) (verify (enemy? $1)) $1 capture (set-position-flag from? true) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) (clear-huffs) (clear-lock) (set-flag more-captures false) (king-captured-find $1) (king-captured-find $2) (king-captured-find $3) (if (flag? more-captures) (set-attribute is-huff? true) (add-partial jumptype) else (check-long-enemies) (set-attribute is-huff? false) (add-partial notype) ) )) (define king-shift-1 ( (check-lock) (set-position-flag from? true) $1 (verify empty?) (check-long-enemies) (clear-lock) add )) ... (define king-shift-7 ( (check-lock) (set-position-flag from? true) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) $1 (verify empty?) (check-long-enemies) (clear-lock) add )) (variant (title "Russian Checkers (with huffs)") ; (option "maximal captures" true) ; AI Bug ; (option "pass partial" false) (piece (name Checker) (image First "images/wiedem/CheckerWhite.bmp" Second "images/wiedem/CheckerBlack.bmp") (attribute is-huff? false) (drops (move-type normaltype) (capture-huff) ) (moves (move-type jumptype) (long-checker-jump nw sw ne) (long-checker-jump ne se nw) (long-checker-jump sw se nw) (long-checker-jump se ne sw) (move-type normaltype) (long-checker-jump nw sw ne) (long-checker-jump ne se nw) (long-checker-jump sw se nw) (long-checker-jump se ne sw) (long-checker-shift nw) (long-checker-shift ne) (move-type notype) ) ) (piece (name King) (image First "images/wiedem/CheckerKingWhite.bmp" Second "images/wiedem/CheckerKingBlack.bmp") (attribute is-huff? false) (moves (move-type jumptype) (king-jump-1 nw sw ne) (king-jump-1 ne se nw) (king-jump-1 sw se nw) (king-jump-1 se ne sw) (king-jump-2 nw sw ne) (king-jump-2 ne se nw) (king-jump-2 sw se nw) (king-jump-2 se ne sw) (king-jump-3 nw sw ne) (king-jump-3 ne se nw) (king-jump-3 sw se nw) (king-jump-3 se ne sw) (king-jump-4 nw sw ne) (king-jump-4 ne se nw) (king-jump-4 sw se nw) (king-jump-4 se ne sw) (king-jump-5 nw sw ne) (king-jump-5 ne se nw) (king-jump-5 sw se nw) (king-jump-5 se ne sw) (king-jump-6 nw sw ne) (king-jump-6 ne se nw) (king-jump-6 sw se nw) (king-jump-6 se ne sw) (move-type normaltype) (king-jump-1 nw sw ne) (king-jump-1 ne se nw) (king-jump-1 sw se nw) (king-jump-1 se ne sw) (king-jump-2 nw sw ne) (king-jump-2 ne se nw) (king-jump-2 sw se nw) (king-jump-2 se ne sw) (king-jump-3 nw sw ne) (king-jump-3 ne se nw) (king-jump-3 sw se nw) (king-jump-3 se ne sw) (king-jump-4 nw sw ne) (king-jump-4 ne se nw) (king-jump-4 sw se nw) (king-jump-4 se ne sw) (king-jump-5 nw sw ne) (king-jump-5 ne se nw) (king-jump-5 sw se nw) (king-jump-5 se ne sw) (king-jump-6 nw sw ne) (king-jump-6 ne se nw) (king-jump-6 sw se nw) (king-jump-6 se ne sw) (king-shift-1 ne) (king-shift-1 nw) (king-shift-1 se) (king-shift-1 sw) (king-shift-2 ne) (king-shift-2 nw) (king-shift-2 se) (king-shift-2 sw) (king-shift-3 ne) (king-shift-3 nw) (king-shift-3 se) (king-shift-3 sw) (king-shift-4 ne) (king-shift-4 nw) (king-shift-4 se) (king-shift-4 sw) (king-shift-5 ne) (king-shift-5 nw) (king-shift-5 se) (king-shift-5 sw) (king-shift-6 ne) (king-shift-6 nw) (king-shift-6 se) (king-shift-6 sw) (king-shift-7 ne) (king-shift-7 nw) (king-shift-7 se) (king-shift-7 sw) (move-type notype) ) ) ) 


私の詊行はこれで終了し、「あくびを䌎うロシアの草案」の正しい動䜜する実装を埗たように芋えるかもしれたせんが、それはそれほど単玔ではありたせん。 たず、「 最倧キャプチャ 」オプションを含めるず、以前の蚘事のいずれかで説明したバグが埩掻したした。 ゲヌムのある時点で、AIの制埡䞋で、プログラムは独自のピヌスを䜿甚する可胜性を停止したしたそしお、敵のチェックを実行するコヌドがこの可胜性を認識したため、圌はチェッカヌを文字通り「停造」したした。

Checkers Collectionで同様のバグに察凊する方法をすでに孊習し、察応する修正を投皿したしたが、䜕らかの理由でこの方法は「あくびあり」バヌゞョンでは機胜したせんでした。



しかし、これは問題の䞀郚にすぎたせん。 䞊の図では、癜人の女性はd6ずf6のピヌスを取り、 h8の戊いの察象ずなりたす。 もちろん、圌女は静かな動きをするか、その堎に留たるこずで「あくび」するこずができたすが、この堎合、圌女は「愚か者のために」取られるこずができたす。 困難は、技術的な手段によっお、癜人女性に戊いを続けるよう「匷制」するこずができないずいう事実にありたす。 圌女はf4たたはg3に移動できたすが、マヌク「あくび」は削陀されたす。 ZRFにいく぀かのこずを正しく実装するこずは単に䞍可胜です。

Source: https://habr.com/ru/post/J258437/


All Articles