サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
komorinfo.com
c++のexplicit指定子(explicit specifier)の使い方をググってもいい感じの情報にはたどり着けなかったのでメモ。 c++03まで #クラスのコンストラクタの宣言で explicit をつけると、次の2つの制限が適用される。 コピー初期化ができない暗黙の型変換ができないそれぞれコードで示すと以下のようになる。 class Test { public: explicit Test(int) {} }; void hoge(Test test) {} ina main() { // <コピー初期化> Test test1(0); // OK Test test2 = 0; // NG: intでコピー初期化はできない Test test3 = Test(0); // OK // </コピー初期化> // <暗黙の型変換> hoge(Test(0)); // OK hoge
テトリスAIのCold Clearの探索方法が気になったので一通り読んでまとめた。 以下の内容は2021-09-30時点の最新版(7b4abc931948d69f6f0b4eb7d401167c1cdedb03)に基づいて記載している。 概要 #Cold ClearはRustで開発されているオープンソースのテトリスAIである。テトリスAIの強豪ソフトの一つとして広く知られており、安定して高い火力を送る技術に定評がある。 Cold Clearのソースコードは以下のリポジトリから取得することができる。
やねうら王ベースのオープンソースの詰将棋エンジンで、df-pnアルゴリズムにより長手数の詰将棋でも短時間で詰みを見つけられる。手元の環境だと、現在最長手数の詰将棋であるミクロコスモス(1525手詰)の詰みを10分程度で読み切ることができる。 ソフトの概要 #df-pnアルゴリズムをベースにして、n手詰めルーチンや証明駒/反証駒による探索ノード数の削減を行うことで、現実的な時間内で長手数の詰将棋を解くことができる。指し手生成などの基本的なデータ構造はやねうら王のコードをほぼそのまま使用している。 新たに書いたコード量は1500行弱と短いが、詰将棋探索の基本的な探索手法がすべて凝縮されている。今後、自力で詰将棋エンジンを作ろうとしている人の参考になれば嬉しい1。 細かい技術解説は最近の詰将棋技術の解説記事を参照。
長手数の詰将棋の探索に用いられるdf-pnアルゴリズムについて、その概要と実用上の課題を解説する。 概要 #詰め将棋において、各局面の平均着手可能数は5.8手程度と言われている1。単純にこれを全探索することを考えると、\(n\) 手詰を解くためには \(5.8^n\) 局面を調べることになる。例えば、現時点で最長の詰将棋であるミクロコスモス(1525手詰)を解くためにはざっくり \(10^{1164}\) 局面を調べることになってしまう。このように、愚直な全探索では長手数の詰将棋を現実的な時間内で解くことはできないことが分かる。 しかし、ある局面が詰むことを示すだけならここまで膨大な探索は必要ない。例えば以下の局面を考える。 この局面の合法手は63金打、53金打など全部で9通りあるが、この局面が詰みであることを示すためには次の手順だけ探索できていればよい。 この探索結果より、玉方がどのよう
このページを最初にブックマークしてみませんか?
『komorinfo.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く