量子モリス

ダンサヌの茪は生き物のようにくねくねしおいたした。 しかし、それらの䞭には空きスペヌスがあり、それは動いおいたした。 圌女はこの堎所が圌女のためであるこずを知っおいたした。 テネット嬢は圌女を犁じた。 しかし、圌女はい぀それを蚀ったのですか そしお、圌女はどこを理解すべきか。 圌女は䜕を理解しおいたすか 圌女が最埌に螊ったのはい぀ですか ダンスはティファニヌの血であり、圌は圌女に招いた。 シックスダンスは十分ではありたせん

...ダンサヌは圌女から目を離さず、圌女はバりンスしお圌らの間を回った。



サヌ・テリヌ・プラチェット「 りィンタヌ・マスタヌ 」



そのさにもかかわらず、䞉目䞊べはボヌドゲヌムの䞖界の瀎石です。 「 N in a row 」の原理は非垞に単玔で自然であるため、䞀床に耇数の叀代の人々によっお独自に発明されたした。 䞭囜ず日本では、叀代ペヌロッパの「 連珠 」や「 波䜐芋 将gi 」などのゲヌムの基瀎を築き 、「 アルク゚ルカ 」の原型である「 ミル 」、そしお最終的には珟代のドラフト党䜓を生み出したした 。



元の圢では、䞉目䞊べは面癜いゲヌムのようには芋えたせん。 実際、このゲヌムの各プレむダヌの双方にずっお有利な戊略は完党に明癜であり、正しいゲヌムで勝぀こずは完党に䞍可胜です。 同様のゲヌムは若い孊生を匕き付けるこずができたすが、真面目なプレむダヌを匕き付けるこずはできたせん。 しかし、それを修正するにはいく぀かの方法がありたす...



そしお、猫はどこですか



Tic-Tac-Toeの改善に関しおは、最初に頭に浮かぶのは、ゲヌムスペヌスのサむズたたはサむズの増加です。 実際、 3x3x3のボヌドでプレむするのはそれほど簡単ではなく、倧きなボヌドでプレむする倚くの皮類の䞭には、プロず芋なされる分野がありたすただし、この堎合、5぀のピヌスを䞀列に䞊べるこずに぀いお話したす。 ゲヌムを改善するあたり明癜な方法はありたせん。 したがっお、ゲヌム芁玠の1぀ずしお重力を䜿甚するず、非垞に面癜いFour in a Rowゲヌムが埗られ、勝利条件の簡単な倉曎3桁の列を構築しなければならないプレヌダヌが負けるにより、「Losing Tic-Tac-Toe」が埗られたす。勝぀のは簡単ではありたせん。



2006幎、アラン・ゎフはゲヌムを根本的に改善する別の方法を思い぀きたした 。 圌はこれをそのようにしたのではなく、「重ね合わせ」、「絡み合い」、「畳み蟌み」などの量子力孊の耇雑な抂念を説明するこずを目的ずしおいたした。 ゲヌムの圌のバヌゞョンでは、各プレむダヌは、短剣や぀た先を眮く代わりに、競技堎の異なる䜍眮に2぀のハヌフパスを䜜りたす。 ボヌドに远加されたピヌスは、2぀の䜍眮に同時に存圚する可胜性が等しくなりたす。 むンデックスには、プレヌダヌの動きのシヌケンスに関する情報が栌玍されたす。この情報は、埌に発生する競合の解決に䜿甚されたす。









ピヌスがハヌフりォヌクの圢でのみボヌド䞊に存圚する限り、各ピヌスがどの䜍眮にあるかを確実に蚀うこずはできたせん。 おそらく、これは量子力孊の最も成功した比phorではありたせん。このモデル内では、各図は2぀以䞋の可胜な堎所で「広がる」こずができるからです以䞋で説明する勝者を決定する際の困難もありたす。 2010幎、JN LeawずSA Cheongは、ゲヌムのより耇雑なバヌゞョンを提案したした。各バヌゞョンは、9次元ヒルベルト空間のベクトルです。 簡単な説明はここにありたす 。



もちろん、動きを広めるずいう考えは新しいものではありたせん。
たずえば、 拒吊チェス Fred Galvin、1958では、各プレむダヌが2぀の可胜な動きを提案し、察戊盞手は提案された動きの1぀を遞択したした。 蚱可された移動のみが可胜なポゞションに぀いおのみ䟋倖が䜜成されたした。 同様に、ゲヌムプレむはAmbiguous Chessで構築されおいたすFabrice Liardet、2005。 このゲヌムのバリ゚ヌションでは、プレヌダヌは自分が行こうずしおいるフィヌルドをマヌクし敵のフィギュアによっお占有されおいる堎合がありたす、察戊盞手はこの移動を完了するこずができるフィギュアを遞択したす。







いずれにせよ、この抂念は私にずっお興味深いものでした。 ボヌドゲヌムは基本的にシンプルです。 ピヌスはボヌドに眮かれ、移動され、回転され、他のピヌスが取られたす-これらはすべお非垞に簡単に実装できたす。 しかし、「ハむラむト」があり、その耇雑さは文字通り「ロヌルオヌバヌ」したす。 Chessでは、これらはcheckずcheckmateの抂念であり、 Checkersでは -「倚数決」、 Goでは -ピヌスの盞互圱響です。 「重ね合わせ」ずそれに関連する「絡み合い」の抂念は、これらの「ハむラむト」の1぀です。



混乱を解き明かす



問題が半分の通路のみに限定されおいる堎合、「量子䞉目䞊べ」には䜕も興味深いものはありたせん。 勝぀ためには、䞎えられた䜍眮にフィギュアが100存圚するこずを保蚌する必芁がありたす 半回転はどうやっお本栌的な数字になりたすか それを理解する時が来たした。 ボヌドを半分ほど長く埋めるず、遅かれ早かれ、次のような状況が発生したす。









衝突が発生したした、䞀皮のパ​​ラドックス-゜ヌスデヌタの矛盟。 最終的に、各図の䜍眮を正確に定矩する必芁がありたす。 すべおのハヌフりォヌクは「削枛」されるべきですが、そのような「畳み蟌み」には根本的に異なる2぀の可胜性がありたす。 これらのいずれかの堎合、ゲヌムは終了したす。









盞互䟝存関係のサむクルを閉じたプレむダヌは、「パラドックス」の発生に察しお有眪です。 このため、コンボリュヌションオプションの遞択が盞手に提䟛されたす。 私たちの堎合、サむクルは「クロス」で閉じられたした。 これは、「぀た先」が敗北を回避できるこずを意味したす。 圌らは、「クロス」がただ勝っおいない「2぀の可胜な䞖界から」を遞択したす。 ただし、畳み蟌みオプションの遞択に䜕も䟝存しない状況は可胜です。









ここで遞択しないものは、最終結果は「぀た先」ず同じです-圌らは倱いたした。 瞮退した状況も可胜です。 プレヌダヌは誰でも、ボヌドの同じ゚リアで2回のハヌフパスを行うこずができたす。 これは、可胜な限り最短の衝突です。 2぀の完党に同䞀のオプションの「遞択」を意味するため、このような半移動のシヌケンスは、このフィヌルドのフルストロヌクずほが同等です。









「十字」が遞択したフィヌルドからどのように移動するかに泚意しおください。 ボヌドの各セルには、1回の「フル」ムヌブの結果が含たれる堎合がありたす。 このような「混雑」は、チェヌンに沿っおさらに広がる可胜性がありたす実際には、ツリヌを介しお。 私の意芋では、そのような動きはどこかファりルの危機にonしおいるずころです。 匷すぎる。 このような「決定論的」な動きは、「䞉目䞊べ」の通垞の動きず同等であり、さらに、遞択した䜍眮から敵を「远い払う」こずができたす。 「Quantic Tic-Tac-Toe」の実装のほずんどのオプション10点䞭6点で、「決定論的」な動きの実装を犁止したした。







どのように機胜したすか
このコヌドは悪倢の具䜓化です。 3回曞き盎したした 今では䜕ずか動䜜したす。 珟時点では、䞻にパッチで構成されおいるため、どのようにすればよいかよくわかりたせん。 Axiomアプリケヌションのデバッグプロセスは簡単ではありたせん。 コヌドに゚ラヌがある堎合、クラッシュしたす。 ほずんどの堎合。 しかし、すべおが機胜する堎合、これぱラヌがないずいう意味ではありたせん。 間違い自䜓が奇劙になっおいるだけです。 そしお、はい、ビゞネスは再垰なしで行われおいたせん。



: in-collision? ( -- ? ) FALSE 0 BEGIN DUP curr-size @ < IF DUP pos[] @ here = IF 2DROP TRUE 0 TRUE ELSE 1+ FALSE ENDIF ELSE TRUE ENDIF UNTIL DROP ; : pair-found? ( -- ? ) FALSE 0 BEGIN DUP empty-at? NOT OVER piece-type-at piece-type = AND IF DUP here <> IF DUP 0 pos[] @ = IF collision-size @ 0= IF curr-size @ collision-size ! ENDIF DROP ALL ELSE DUP to here curr-size @ pos[] ! curr-size ++ 2DROP TRUE ALL ENDIF ENDIF ENDIF 1+ DUP ALL >= UNTIL DROP ; : not-prev? ( -- ? ) curr-size @ 0> IF curr-size @ 1- pos[] @ here <> ELSE TRUE ENDIF ; : try-pos ( -- ) down DROP BEGIN here my-empty? NOT not-prev? AND IF here curr-size @ pos[] ! curr-size ++ pair-found? curr-size @ TOTAL < AND IF RECURSE curr-size -- ENDIF curr-size -- ENDIF to up NOT my-empty? OR collision-size @ 0> OR UNTIL ; : check-collision ( -- ) find-mark try-pos collision-size @ DUP 2 > verify curr-size ! from to in-collision? verify ;
      
      





可胜性ずしおは、これがプロゞェクト党䜓の䞭心です。 最も難しかったのは、玛争の存圚の事実の決定ず、それに含たれるすべおの数字の怜玢でした。 「解く」プロセスは、これらの数字でのみ開始できたす。 そしお、衝突があり、衝突が1぀しかない限り、「解く」以倖の動きを蚱可するこずはできたせん。 そうしないず、すべおを完党に混乱させる可胜性がありたす。 難しくありたせん。 優先順䜍が圹立ちたす。 少なくずも1぀の優先移動がある堎合、他の移動は実行できたせん。 これは最も普遍的なメカニズムではありたせんが、機胜したす。



 {move-priorities {move-priority} high-priority {move-priority} normal-priority {move-priority} low-priority move-priorities} {moves p-drop {move} select-piece {move-type} high-priority {move} drop-half {move-type} normal-priority {move} drop-piece {move-type} normal-priority {move} Pass {move-type} low-priority moves} {pieces {piece} M {drops} p-drop {piece} x1 {piece} o1 {piece} x2 {piece} o2 {piece} x3 {piece} o3 {piece} x4 {piece} o4 {piece} x5 {piece} X1 1 {value} {piece} O1 1 {value} {piece} X2 2 {value} {piece} O2 2 {value} {piece} X3 3 {value} {piece} O3 3 {value} {piece} X4 4 {value} {piece} O4 4 {value} {piece} X5 5 {value} pieces}
      
      





残りは簡単です。 たたみ蟌みを正しく実行するこずもそれほど難しくありたせん。 Gregはリングバッファヌを操䜜するための特別な関数を考え出したしたが、残念なこずに、私はそれらを䜿甚したせんでした。 繰り返し配列を配列の最埌に远加する、叀き良きトリックはただ機胜したす。



 : add-position ( -- ) 0 BEGIN DUP here <> OVER empty-at? NOT AND IF DUP piece-type-at piece-type = OVER not-in-position? AND curr-size @ ALL < AND IF DUP curr-size @ pos[] ! curr-size ++ ENDIF ENDIF 1+ DUP ALL >= UNTIL DROP ; : mark-all ( player -- ) marked-player ! here curr-pos ! down DROP mr verify marked-player @ mark create-player-piece-type down DROP BEGIN empty? NOT here curr-pos @ <> AND piece-type mark > AND IF add-position ENDIF marked-player @ mark create-player-piece-type up NOT UNTIL ; : untangle ( -- ) 0 BEGIN DUP curr-size @ < IF DUP pos[] @ to player piece-type OVER mark-all down DROP bg verify DIM + create-player-piece-type 1+ FALSE ELSE TRUE ENDIF UNTIL DROP ;
      
      





もう1぀未確認の問題がありたす。 プレむダヌの1人がクロスたたはれロのラむンを構築するずゲヌムは終了したすもちろん、これは通垞の䞉目䞊べでは非垞にたれです。 勝者は誰ですか









アラン・ゎフは、数字の移動に䜿甚されるむンデックスを再利甚するこずを提案しおいたす。 プロットされた線ごずに、最倧のむンデックスを芋぀ける必芁がありたす。 このむンデックスを持぀ものが勝者であるこずが刀明したした。 圌の䜜品では、゚ンドツヌ゚ンドの移動の番号付けX1、O2、X3、...を䜿甚しおいるため、ラむンがある堎合、勝者は垞にそうなりたす。 別の番号付けスキヌムを䜿甚しおいるこずは簡単にわかりたす。私の堎合、匕き分けが再び埗られたす。



キダノンから離れた理由は䜕ですか 2぀の考慮事項。 第䞀に、゚ンドツヌ゚ンドの番号付けスキヌムは、最初のプレヌダヌに非垞に深刻な利点をもたらしたす。 私の意芋では、ゲヌムのバランスはドロヌを獲埗する仮想的な可胜性よりもはるかに重芁ですクォンタムチックタックトヌでは、ドロヌはたれな状況です。 さらに重芁なこずは、゚ンドツヌ゚ンドのナンバリングおよび関連する勝者を決定する方法論は、クォンタムモリスにずっお完党に受け入れがたいものであり、これに぀いおは以䞋で説明したす。 そこでは、各プレヌダヌには3぀のピヌスしかありたせん。



みんなダンス



モリスダンスは、豊ferの儀匏に関連する叀代の英語の習慣です。 この行動の粟神を感じたい人は、テリヌ・プラチェットによる「冬の職人」をお勧めしたす。 圌らはそこで螊りに぀いお話したが、心から 私たちの物語の䞀郚ずしお、この習慣ず䞭䞖ペヌロッパで非垞に人気のあるボヌドゲヌムのファミリヌ党䜓ずの関係がより重芁です。 家族の最幎少のゲヌム「 䞉人の螊り 」は䞉目䞊べを「改善する」もう䞀぀の方法です。 実際、それはフォックスずギヌスやアルクヌアなどの動きのある人物ず埌のゲヌムずの間のリンクです 。



ゲヌムの基本は非垞にシンプルなアむデアです。䞀床に列を䜜るこずができなかった堎合でも、既にレむアりトされたチップを順番に動かすこずで勝぀こずができたす 移動する堎所を確保するために、各プレヌダヌは3぀のピヌスのみを䜿甚したすこれで線を匕くのに十分です。 「 ダンスオブナむンメン 」などの家族の叀いゲヌムでは、列「ミル」を構築したプレヌダヌは、すでにボヌドに眮かれおいる敵のピヌスを回埩䞍胜に「挜く」暩利を持っおいたす。 私たちの堎合、それぞれの偎に3぀のピヌスしかないため、それらのいずれかの損倱は無条件の敗北を意味したす。 2぀の数字では行を䜜成するには䞍十分です



ここから「クォンタムモリス」たではわずか1歩です。 「人間の死はない」ずいう問題は、「量子䞉目䞊べ」ではそれほど深刻ではありたせんが、ゲヌム自䜓はあたりにもtooいたたです。 ピヌスの数を3぀䞡偎に制限し、ボヌドに眮いおから移動するず、ゲヌムが「䌞び」、嚯楜ず驚きが増したす。







小さな「半分の圢状」だけが動くこずは簡単にわかりたす。 たた、図党䜓を2぀の半分の図に「分割」し、そのうちの1぀を別の䜍眮に移動するこずもできたす。 倧きな図を移動するこずはできたせん。 「Quantum Tic-Tac-Toe」のように、「決定論的」な動きの可胜性がありたす。 2぀のハヌフパスを1぀のセルに「ダンプ」するだけでなく、䞀方を他方に移動するこずで、ハヌフシェむプを「結合」できたす。 私はただそのような動きは匷すぎるず思い、ゲヌムオプションの芳点からそれらを犁止しおいたす。



カバヌを匕き裂く
グラフィックリ゜ヌスのわずかに倉曎されたセットを䜿甚した以前のスクリヌンショットの1぀を怜蚎しおください。 すべおの秘密がすぐに明らかになりたす









これらの濃い緑色の円は、アプリケヌションの通垞の操䜜䞭は芋えない補助図です。 圌らは䜕のために 2぀の円を含むセルから始めたしょう。 右䞋隅にある補助図はマヌカヌです。 圌は、最埌の動きが実行されたボヌドの領域をマヌクしたす。 この䜍眮から、競合の怜玢を開始できたす。 競合がある堎合、それに含たれる゚リアの1぀が確実にマヌクされたす。 原則ずしお、マヌカヌなしで行うこずは可胜ですが、すでに耇雑な衝突怜玢アルゎリズムを耇雑にしたくありたせんでした。 明らかに、このセルは完党に安党に䜿甚できたす。 ボヌドの各領域には、8個たでの小片を含めるこずができたす。



䞭心の円は、より興味深いオブゞェクトです。 実際には、ナヌザヌむンタヌフェむスを介しおピヌスがドロップ drop される堎所ではなく、小さなピヌスがボヌドセルに順番に远加されたす。 したがっお、リセットされるのは図圢そのものではなく、補助的な䞍可芖マヌカヌです。 なぜ圌は削陀されないのですか ゲヌムは2枚のボヌド grid を䜿甚したす。 9x9では小さな断片が、3x3では倧きな断片が保存されたす。 リセット可胜なマヌカヌを削陀するず、拡倧ボヌド䞊の画像が砎壊されたす。 ビデオでは、画像がただ砎壊されおいるこずが瀺されおいたす倧きな数字を分割する堎合が、この効果は短呜です。 さらに、私はそれで䜕もできたせん。



最もおかしいのは、倧きな数字のある1぀の゚リアにある9぀の円を指定するこずです。 ここでも、ナヌザヌむンタヌフェむスのコストを扱いたす。 9x9ボヌドのセルは倧きなグリッドの䞊にあり、ほが完党にその圢状に重なりたす。 Morrisのゲヌムでは、ピヌスを移動する必芁がありたす。 倧きなものを含める同時に分割が発生する。 しかし、図圢を移動するには、マりスでそれを「フック」できる必芁があり、3x3グリッド䞊の図圢の堎合、これは非垞に問題ですたずえその䞊に図圢がなくおも。 「ハンドル」を远加しお、倧きな郚分を分割できるように匕っ匵る必芁がありたした。



「Quantum Tic-Tac-Toe」は、おそらく理想的ではなく、量子力孊のアむデアの非垞に成功した䟋です。 このゲヌムは泚目を集めおいたす。 プログラミングのコンテストで䜿甚され、このトピックに関する質問はStackExchangeに定期的に衚瀺されたす 。 珟圚、゜フトりェアの実装を芋぀けるこずは難しくありたせん。 AndroidずiOSの䞡方に察応しおいたす。 特にせっかちな人は、 Webベヌスのむンタヌフェヌスから盎接プレむできたす 。 「クォンタム」ゲヌムのセットは、「䞉目䞊べ」に限定されたせん。 ボヌナスずしお、 このゲヌムをお勧めするこずもできたす。



すべお金曜日、䞻よ




All Articles