「Pythonで〇×ゲームのAIを一から作成する」の目次です
回数 | タイトル | 公開日 | 最終更新日 |
---|---|---|---|
1 | はじめに | 2023/09/20 | 2023/09/20 |
2 | Python のプログラムの記述と実行 | 2023/09/20 | 2023/09/20 |
3 | ゲームの仕様の整理 | 2023/09/20 | 2023/09/20 |
4 | 配列 と list 型のデータ | 2023/09/20 | 2023/09/20 |
5 | ゲーム盤のデータ構造と繰り返し処理 | 2023/09/20 | 2023/09/20 |
6 | list と繰り返し処理 | 2023/09/20 | 2023/09/20 |
7 | Python のデータとオブジェクト | 2023/09/20 | 2023/09/20 |
8 | Python の変数と代入処理 | 2023/09/20 | 2023/09/20 |
9 | list の仕組み | 2023/09/20 | 2023/09/20 |
10 | 正しい初期化されたゲーム盤の作成方法 | 2023/09/20 | 2023/09/29 |
11 | Python の代入処理の補足 | 2023/09/20 | 2023/09/21 |
12 | マークの配置と条件分岐 | 2023/09/21 | 2023/09/29 |
13 | 関数の定義と関数呼び出し | 2023/09/24 | 2023/09/29 |
14 | 名前空間とスコープの仕組み | 2023/09/28 | 2023/09/29 |
15 | 名前解決を見分けやすいプログラムの記述方法 | 2023/10/01 | 2023/10/09 |
16 | プログラムの修正と関数の副作用 | 2023/10/05 | 2023/10/09 |
17 | モジュールのインポートと docstring | 2023/10/08 | 2023/11/25 |
18 | ゲーム盤の表示 | 2023/10/12 | 2023/10/12 |
19 | オブジェクト指向プログラミング | 2023/10/15 | 2023/10/15 |
20 | クラスとインスタンスの仕組み | 2023/10/19 | 2023/10/19 |
21 | クラスの属性 | 2023/10/22 | 2023/10/22 |
22 | 手番の実装 | 2023/10/26 | 2023/10/26 |
23 | 勝敗判定 | 2023/10/29 | 2023/11/25 |
24 | 勝敗判定のテストの手法 | 2023/11/02 | 2023/11/02 |
25 | テストを行う関数とデータと処理の分離 | 2023/11/05 | 2023/11/05 |
26 | テストケースを表すデータ構造の修正 | 2023/11/09 | 2023/11/09 |
27 | アルゴリズムとデータ構造 | 2023/11/12 | 2023/11/12 |
28 | list と文字列の変換 | 2023/11/16 | 2023/11/16 |
29 | 文字列で表現する xy 座標 | 2023/11/19 | 2023/11/19 |
30 | その他の座標を表すデータ構造 | 2023/11/23 | 2023/11/23 |
31 | 〇の勝利の判定に対するテスト | 2023/11/26 | 2023/11/26 |
32 | × の勝利の判定に対するテストと test_judge の改良 | 2023/11/30 | 2023/11/30 |
33 | 引き分けの判定に対するテストと組み合わせ網羅テスト | 2023/12/03 | 2023/12/03 |
34 | さまざまな勝利判定のアルゴリズム | 2023/12/07 | 2024/01/28 |
35 | さまざまな勝利判定のアルゴリズム2 | 2023/12/10 | 2023/12/11 |
36 | すべてのマスが埋まっていることを判定するアルゴリズム | 2023/12/15 | 2023/12/15 |
37 | 〇×ゲームを遊ぶためのメソッドの定義 | 2023/12/17 | 2023/12/17 |
38 | play メソッドの改良 | 2023/12/21 | 2023/12/21 |
39 | 単純な AI の作成 | 2023/12/24 | 2023/12/24 |
40 | AI の強さの評価方法 | 2023/12/29 | 2023/12/29 |
41 | 比率の表示と書式の指定 | 2023/12/31 | 2023/12/31 |
42 | 手番を入れ替えた対戦 | 2024/01/04 | 2024/01/04 |
43 | AI の視点からの結果の表示 | 2024/01/07 | 2024/01/07 |
44 | ルールベースのAIとAIの検証 | 2024/01/10 | 2024/01/10 |
45 | 勝てる場合に勝つAIと、浅いコピーと深いコピー | 2024/01/14 | 2024/01/14 |
46 | 相手の勝利を阻止するAI | 2024/01/18 | 2024/01/18 |
47 | 評価値を利用するアルゴリズム | 2024/01/21 | 2024/01/21 |
48 | デバッグ表示と、可変長引数と実引数の展開 | 2024/01/25 | 2024/01/25 |
49 | 評価値の計算方法 | 2024/01/28 | 2024/01/28 |
50 | 局面に対する評価値の設定と計算 | 2024/02/01 | 2024/02/01 |
51 | 〇×ゲームに勝つための条件 | 2024/02/04 | 2024/02/04 |
52 | set の性質と利用方法 | 2024/02/08 | 2024/02/08 |
53 | dict のハッシュ可能なオブジェクトへの変換と互換性 | 2024/02/11 | 2024/02/11 |
54 | namedtuple を使った dict の変換 | 2024/02/15 | 2024/02/15 |
55 | 必要条件と十分条件と、複数の条件を考慮した評価値 | 2024/02/19 | 2024/02/19 |
56 | 棋譜の記録と、問題のある試合経過の検証 | 2024/02/22 | 2024/02/22 |
57 | 敗因の検証と改善方法 | 2024/02/26 | 2024/02/26 |
58 | 最強の AI と最善手の定義とその性質 | 2024/03/01 | 2024/03/01 |
59 | 演繹法とヒューリスティックによる問題の解決 | 2024/03/04 | 2024/03/04 |
60 | 弱解決の定義と性質とその判定方法 | 2024/03/08 | 2024/03/08 |
61 | ai11s の検証と限定的な条件による問題の解決 | 2024/03/11 | 2024/03/11 |
62 | 条件の統合と乱数の種によるプログラムの再現性 | 2024/03/14 | 2024/03/14 |
63 | 最善手の優劣 | 2024/03/17 | 2024/03/17 |
64 | ルールベースの AI の一覧、対戦成績、作成したデータファイルのまとめ | 2024/03/18 | 2024/08/22 |
65 | matplotlib による画像の描画の基本 | 2024/03/21 | 2024/03/21 |
66 | 枠線と文字列によるマークの描画 | 2024/03/24 | 2024/03/24 |
67 | 画像によるマークの描画 | 2024/03/28 | 2024/03/28 |
68 | ipywidgets と ipympl の使い方とイベント駆動型プログラミング | 2024/03/31 | 2024/03/31 |
69 | 画像の描画のタイミングと丸めによる座標の変換 | 2024/04/04 | 2024/04/05 |
70 | マウスによる着手の処理 | 2024/04/07 | 2024/04/08 |
71 | GUI による AI との対戦 | 2024/04/11 | 2024/04/14 |
72 | リセットボタンによるゲームのリセット | 2024/04/14 | 2024/04/14 |
73 | 重複する処理の統合 | 2024/04/18 | 2024/04/18 |
74 | Dropdown による AI を選択するドロップダウンメニューの作成 | 2024/04/21 | 2024/04/21 |
75 | 循環インポートとDropdownの項目の自動登録 | 2024/04/24 | 2024/04/24 |
76 | playメソッドのバグの修正とデフォルト引数に関する注意点 | 2024/04/28 | 2024/04/28 |
77 | Dropdown による AI の選択と play メソッドの改良 | 2024/05/02 | 2024/05/02 |
78 | リプレイ機能の実装 | 2024/05/05 | 2024/05/05 |
79 | リプレイ機能の < ボタンに関する修正 | 2024/05/09 | 2024/05/09 |
80 | リプレイ機能の残りの問題の修正 | 2024/05/12 | 2024/05/12 |
81 | AI が手番を担当した場合のリプレイ機能とGUIの処理の分離 | 2024/05/16 | 2024/05/16 |
82 | self の意味の混同に由来する様々なエラー | 2024/05/19 | 2024/05/19 |
83 | GUIの機能の分離の完了と差分による局面の再現 | 2024/05/23 | 2024/05/23 |
84 | IntSliderとキー入力によるGUIの実装 | 2024/05/26 | 2024/05/26 |
85 | キー入力による着手の処理の実装と inspect モジュールを利用したバグの修正 | 2024/05/30 | 2024/05/30 |
86 | GUI による乱数の種の設定と対戦結果のファイルへの読み書き | 2024/06/02 | 2024/06/02 |
87 | ファイルダイアログの設定とOutputウィジェット | 2024/06/06 | 2024/06/06 |
88 | ゲーム木、木構造と親ノードと子ノードの関係の視覚化 | 2024/06/09 | 2024/06/09 |
89 | 幅優先アルゴリズムによる深さ 2 のゲーム木の作成と視覚化 | 2024/06/13 | 2024/06/13 |
90 | 幅優先アルゴリズムによる任意の深さのゲーム木の作成と部分木の視覚化 | 2024/06/16 | 2024/06/16 |
91 | ゲーム木の視覚化の処理のバグの修正と改良 | 2024/06/19 | 2024/06/19 |
92 | ゲーム木の部分木の表示範囲の改良 | 2024/06/23 | 2024/06/23 |
93 | 継承を利用したGUIの定義 | 2024/06/27 | 2024/09/05 |
94 | ゲーム木を視覚化する GUI の作成 | 2024/06/30 | 2024/06/30 |
95 | ゲーム木を視覚化する GUI の改良 | 2024/07/04 | 2024/07/04 |
96 | テンキーとマウスによる中心となるノードの移動 | 2024/07/07 | 2024/07/07 |
97 | ゲーム木の生成過程を表示するアニメーション | 2024/07/11 | 2024/07/11 |
98 | ゲーム木の生成過程を表示するアニメーションの改良と処理時間の計測 | 2024/07/15 | 2024/07/15 |
99 | 深さ優先アルゴリズムによるゲーム木の生成 | 2024/07/19 | 2024/07/19 |
100 | 再帰呼び出しによる繰り返し処理の性質 | 2024/07/21 | 2024/07/21 |
101 | for 文と while 文による繰り返し処理の性質と使い分け | 2024/07/25 | 2024/07/25 |
102 | 直線的な繰り返し処理を行うボトムアップとトップダウンな再帰呼び出し | 2024/07/28 | 2024/07/28 |
103 | 複数の項で表される漸化式のトップダウンな再帰呼び出しによる計算 | 2024/08/01 | 2024/08/01 |
104 | 木構造のデータに対する幅優先と深さ優先アルゴリズムによる繰り返し処理 | 2024/08/04 | 2024/08/04 |
105 | ミニマックス法によるゲーム木の全てのノードの評価値の計算 | 2024/08/08 | 2024/08/08 |
106 | 深さ優先アルゴリズムと幅優先アルゴリズムでのゲーム木の評価値の計算の過程の視覚化 | 2024/08/11 | 2024/08/11 |
107 | ゲーム木を利用した強解決のAIの作成とエラーメッセージによるデバッグ | 2024/08/15 | 2024/08/15 |
108 | ゲーム木を利用した AI の処理の改良とプログレスバーの表示 | 2024/08/18 | 2024/08/18 |
109 | 強解決の AI であるかの判定 | 2024/08/22 | 2024/08/25 |
110 | データ型による演算子の処理の違いによるバグとboard 属性を利用した局面の表現 | 2024/08/25 | 2024/08/25 |
111 | 同一局面の計算と同一局面を考慮した強解決の AI の判定 | 2024/08/29 | 2024/08/29 |
112 | 弱解決の AI であるかの判定と枝狩りによる探索の効率化 | 2024/09/01 | 2024/09/02 |
113 | パラメータを必要とする AI に対する GUI の対戦機能の実装 | 2024/09/05 | 2024/09/05 |
114 | データ構造を変更した結果生じた Marubatsu_GUI クラスのバグの修正 | 2024/09/08 | 2024/09/08 |
115 | ファイルの保存と読み込みに関するバグの修正と改良 | 2024/09/12 | 2024/09/12 |
116 | 〇×ゲームの GUI とゲーム木の表示の連動 | 2024/09/15 | 2024/09/15 |
117 | GUI の部分木への最善手の表示と最善手を着手し続けた場合の局面の表示 | 2024/09/19 | 2024/09/19 |
118 | 最善手の優劣を考慮したゲーム木を利用する AI | 2024/09/22 | 2024/09/22 |
119 | matplotlib での文字の表示の性質と部分木の表示サイズを変更する FloatSlider の実装 | 2024/09/26 | 2024/09/26 |
120 | draw_subtree メソッドで表示する部分木の動的な作成 | 2024/09/29 | 2024/09/29 |
121 | 部分木の動的な作成の続きと潜在的なバグ | 2024/10/03 | 2024/10/03 |
122 | 評価値が計算された部分木の動的な作成と Mbtree_GUI クラスによる表示 | 2024/10/06 | 2024/10/06 |
123 | Dropdown による最善手・評価値の対応表の変更 | 2024/10/10 | 2024/10/10 |
124 | リプレイ機能を利用した際のバグの検証と修正 | 2024/10/13 | 2024/10/13 |
125 | 現在の局面の状況と合法手を着手した際の局面の状況の表示 | 2024/10/17 | 2024/11/16 |
126 | AI が計算した候補手または評価値のゲーム盤への表示 | 2024/10/20 | 2024/10/20 |
127 | ラッパー関数 | 2024/10/23 | 2024/10/23 |
128 | ラッパー関数を作成して返り値として返す高階関数とクロージャーの仕組み | 2024/10/28 | 2024/10/28 |
129 | デコレーターとデコレーター式によるラッパー関数の定義 | 2024/11/01 | 2024/11/01 |
130 | クラスによるデコレーターの定義とデコレーター式による AI の定義 | 2024/11/04 | 2024/11/04 |
131 | ラッパー関数とラップする関数の仮引数の関係 | 2024/11/09 | 2024/11/09 |
132 | デコレーター式を利用したすべての AI の関数の再定義 | 2024/11/12 | 2024/11/12 |
133 | 再定義した AI の検証と任意の AI が計算した候補手または評価値のゲーム盤への表示 | 2024/11/16 | 2024/11/16 |
134 | 評価値を表示するAIの自動選択とゲーム木を利用するAIの評価値の一覧の計算 | 2024/11/24 | 2024/11/24 |
135 | 引き分けの局面での最善手の優劣と最大と最小の評価値の計算 | 2024/11/28 | 2024/11/28 |
136 | ミニマックス法と引き分けの局面の評価値の再計算の処理の分離 | 2024/12/01 | 2024/12/01 |
137 | ミニマックス法による探索の実装方法の種類と評価値を動的に計算する実装方法 | 2024/12/05 | 2024/12/05 |
138 | αβ(アルファベータ)法の仕組みと実装 | 2024/12/08 | 2024/12/08 |
139 | Mbtree_Anim クラスのバグの修正と改良 | 2024/12/15 | 2024/12/15 |
140 | αβ 法による評価値の計算手順の視覚化 | 2024/12/19 | 2024/12/19 |
141 | αβ 法の視覚化の改良 | 2024/12/22 | 2024/12/22 |
142 | 近日公開予定です |