オセロ完全読みサンプル

AIに、オセロの完全読みプログラムのサンプルを作ってもらいました。

Othello α-β 完全読み

ファイルはこのHTML1つで、JavaScriptで動きます。

使い方は、盤面をポチポチ入力して、手番を選択して、「完全読み」ボタンを押すだけ。10個空きくらいならすぐ結果が出ます。20個空きとかは、時間がかかりすぎるのでやめた方が良いです。

結果は、こんな感じ。

実行結果

中身は…うん、まぁ、そんな感じですか(興味のある人は眺めてみて下さい)

64bitのbitboardを、BigIntを使って平然と扱ってて、「あ、そういう感じかー」と。

分かりやすさ優先で作ってくれたと思われ、east、west等は関数にしないで展開しちゃった方が速そうに思います。

AIに「作って」と指示して、何か動くのが出て来たのは数秒、軽くテストしてデバッグして50分くらいでできました。最初は、パスの扱いがバグってました。

盤面をポチポチする時間がかかったので、それはテスト盤面を埋め込んでもらえば早かったと思います。

AIがどういう仕組みかって、ネット上のソースコードをAIが収集、「学習」して、どんな要望にも応えて出力を変更するまでに進化したということなんですかね。

AI自身による説明は以下の通り。

「AIがネット上のソースコードを収集して学習した」という部分

ここだけは、もう少し正確にいうと、

ネット上のソースコードをその場で検索して集め、それを組み合わせてプログラムを作っている

という仕組みでは必ずしもありません

大規模言語モデルは、訓練時に大量のテキストやコードなどから、**「この文脈なら次にどういう記号・単語・コードが現れやすいか」**というパターンを学習しています。

その結果、

オセロ
→ bitboard
→ 64bit整数
→ αβ法
→ negamax
→ transposition table
→ move ordering

のような、プログラムを書く人間が持っている知識の組み合わせを、要求に応じてその場で構成できる。

さらに今回のように、

「HTML/JavaScriptにして」
「盤面を入力できるように」
「合法手を表示して」
「全合法手の完全読み結果を表示して」
「Node/sも表示して」
「パスがバグってない?」

と要求するたびに、既に出したプログラムを文脈として維持しながら修正していける

ここが昔の「コード生成ツール」とかなり違うところですね。

そして実際には今回、AIが最初から完璧なプログラムを出したわけではなく、

生成 → 実行 → エラー発見 → 修正 → テスト → 改良

という、人間のプログラミングとかなり似た工程になっています。

まぁ、すごい時代になった。

追記:マルチスレッド対応しました。

Othello α-β 完全読み v3

v3結果

打てる箇所がn個所ならnスレッドでやるという、素朴なマルチスレッド。「worker」で検索して出て来るのがマルチスレッド対応の部分です。

これ、私が書き方を分かってないので、自分で調べて書いたらすごく時間かかると思います。AIは「知ってる」のでサクッと書きました。

タイトルとURLをコピーしました