0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

将棋エンジンを作ってみる【ルール実装編(0)】本記事の目指すところ

Last updated at Posted at 2021-02-09

本ページでは0回として本記事の目標のみを記載することにして、実装は以降のページに譲るとする。

※「本ページ」と「本記事」同じ意味じゃね?と突っ込まれそうなので、以下のように使い分けると補足しておく。
本ページ:このURLを指す。
本記事:「将棋エンジンを作ってみる【ルール実装編】」全体を指す。

本記事の目指すところ

強い将棋エンジンが複雑な将棋のルールをどのように効率的に実装したのか気になったので調べてみた。
理解を深めるために実際に実装しようと思うのでその過程を記録として残すことにする。

当面は↓のように局面から合法手を列挙することを目標とする。
将棋エンジンに詳しくない読者にはわかりにくいと思うが、赤枠で囲った箇所に初期配置における合法手が全て列挙されている。
それぞれの意味はわからなくても指し手が30あることはわかると思う(初期配置における合法手は30)。
(この図はやねうら王さんエンジンを拝借して作成した)

前提として

強い将棋エンジンを作りたいという方向けではない(いずれ、そのような情報をまとめたいとは考えているが)。
将棋ソフトが強いと話題になっており関連書籍も増えているにも関わらず、ルールの実装についてまとめられているものを見たことがないので調べたことを記録することを目的としている。

強い将棋エンジンを作るための情報はやねうら王の開発者やねうらおさんがまとめている以下の記事が参考になると思う。
http://yaneuraou.yaneu.com/yaneuraou_mini/

やねうら王はオープンソースとして公開されており、さまざまな将棋エンジンのフレームワークとなっている。
https://github.com/yaneurao/YaneuraOu
将棋ソフトの中でも有名(だと個人的には思っている)な「水匠」「elmo」「Apery」など、これらのエンジンもやねうら王をベースとして作られている
(言い切ったが確証がない、特にAperyは以前はそうだったと思うが開発言語を移行したようなので、今は違うと思う)。

つまり、**本記事の内容など一切意識しなくても将棋エンジンを作ることはできるはず**なのである(もちろん強い将棋ソフトの開発者は完璧に理解しておられるのだろうが)。

連載

  1. Bitboard入門
  2. USIプロトコル
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?