Entries from 2022-01-01 to 1 year

Rubyでバイナリデータに対するrindex検索の挙動でハマったので調べたことメモ

自分の手元の環境でこんなことが起きた。 $ ruby -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm64-darwin21] $ irb irb(main):001:0> "\x01\x80\x00\x00".index("\x01") => 0 irb(main):002:0> "\x01\x80\x00\x00".rindex("\x01") => 1 \x01 は 0…

spherical linear interpolation(slerp)によるlatent spaceでのnoise補間

memo.sugyan.com の記事を書いてから、先行事例の調査が足りていなかったなと反省。 Latent Seed の Gaussian noise 間での morphing はあんまりやっている人いないんじゃないかな、と書いたけど、検索してみると普通に居た。 why settle for a few images f…

Stable Diffusionでmorphing

#stablediffusion 完全に理解した pic.twitter.com/IR5yjnL07Y— すぎゃーん (@sugyan) August 31, 2022 ということで少し触って遊んでみたのでメモ。 Stable Diffusion をザックリ理解 先月公開された Stable Diffusion。 stability.ai 高精度で美しい画像を…

Slackの家庭内日記をはてなブログに同期していく

弊家庭ではSlackを日記ツールとして使っていて、 #diary channelに夫婦1日1投稿ずつ3~4行程度で今日あったこと・子の成長記録・感想などを書く、というのを続けてるんすよね。SNS感覚で気楽に書けて編集も出来るし遡ったり検索したりしやすくて何気に便利だ…

Rustで将棋棋譜変換ライブラリを作った

将棋棋譜の形式色々 KIF CSA USI/SFEN 文字表記 その他 JSON棋譜フォーマット(JKF, json-kifu-format) 自作parser, converter クレート公開 Rustでjson-kifu-format互換の将棋棋譜変換ライブラリを書き始めていて、ついに分岐までちゃんと対応した.kifファイ…

SIMDによる将棋Bitboard計算の高速化

自作Rust製将棋合法手生成ライブラリ、計算の高速化のためBitboardの128bit計算をSIMDで行うようx86_64のAVX2、AArch64のNEON、wasm32のsimd128で動くようにそれぞれ実装して 各環境で多少速く探索できるようになった。https://t.co/h7Dz3X6BhT— すぎゃーん …

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が好きな…