Rust

Bitboardでleading/trailing zerosを使って飛び駒の利きを求める

前置き 飛び利き計算いろいろ 基礎知識 縦型Bitboardでの香車の利き 角行・飛車の利き (Magic Bitboard / PEXT) Qugiyの手法 Leading/Trailing Zerosを使う 実験と考察 前置き Rustで将棋の高速合法手生成ライブラリを作り始めていて、 Rustでつくる もう一…

Rust+WASMでつくる、ブラウザ上で動く詰将棋Solver

成果物 Rust製ソルバの改良 探索部の抽象化 探索打ち切りのための拡張 WebAssembly化 将棋Player (自作WebComponents) まとめ 成果物 https://sugyan.com/tsumeshogi-solver-wasm/ 局面を編集し指定し、その局面からの詰み手順を探索する。クエリパラメータ…

Rustで将棋合法手生成、速度改善

memo.sugyan.com の続き。 前記事時点でだいたい合法手の生成が出来ていたが、速度面でやや問題があった。 perft の計測してみるとRust版Aperyと比較して2倍程度遅い。 だいたい同じ手順になるよう実装しているはずなんだけど どうしてそんなに差がついてい…

Rustでつくる もう一つの将棋ライブラリ

昨年末に出版された「強い将棋ソフトの創りかた」という本を読んで、自分も将棋AIを作ってみたいと思った。 強い将棋ソフトの創りかた作者:山岡忠夫,加納邦彦マイナビ出版Amazon この本では主にPythonでの実装が紹介されていたが、自分は最近はRustが好きな…

Rustでつくる詰将棋Solver その後

memo.sugyan.com の続き。1ヶ月ほど経ってちょこちょこ更新して進化した。 残課題が幾つかあったが、そのうち幾つかは解決した。 探索無限ループ 上図のような問題で ▲4四飛成 △3二玉 ▲4一竜 △3三玉 ▲4四竜 △3二玉 ... を無限に探索してしまっていた問題。 …

Rustでつくる詰将棋Solver

ついカッとなって先週からRustで詰将棋ソルバを書き始めてしまい、ようやくdf-pnで何らかの解答を出せるようになったところ。ここからもうちょっと調整していくぞ、、 pic.twitter.com/XM9iPJqocv— すぎゃーん (@sugyan) November 2, 2021 というわけで突然R…

N番目の素数を求める

SNSなどで話題になっていたので調べてみたら勉強になったのでメモ。 環境 Pythonでの実装例 例1 例2 例3 エラトステネスの篩 Rustでの実装例 試し割り法 エラトステネスの篩 アトキンの篩 おまけ: GMP Benchmark 高速化のテクニック 上限個数を見積もる Whee…

Advent of Code 2020 完答した

昨年はじめて真面目に挑戦した、Advent of Code。 memo.sugyan.com 今年もやるぞー!と意気込んで、12月になる前からちょいちょいTwitterで宣伝したりした甲斐もあってか、今年は日本国内でも挑戦している人が少し増えたようだった。嬉しい。 僕は昨年に引き…

Advent of Code 2019 に挑戦している

Advent of Code というのがある。 https://adventofcode.com/ 日本ではまだあまり 知っている人/やっている人 は多くないかもしれない。検索してみても、日本語の紹介記事はこれくらいしか見つからなかった。 Advent of Code の紹介 - Qiita 僕も、去年 元同…