1 名前:デフォルトの名無しさん [2007/01/22(月) 06:13:18 ] まずBearRevのDLLを作る そして世界最強っぽいリバーシプログラムWZebraを倒すスレ 期間は三ヶ月以内で頼む どんどんアイデアとプログラムを頼む 本格的リバーシ BearRev www.vector.co.jp/games/soft/dl/win95/game/se098822.html 最強っぽいリバーシプログラムWZebra www.radagast.se/othello/download.html 姉妹スレ おまいら最強の将棋プログラムしてみろよ part5 pc8.2ch.net/test/read.cgi/tech/1109307327/l50
175 名前:初心者 mailto:sage [2007/01/23(火) 22:42:27 ] if (mode[tsu[1]] == 1) { mode[tsu[1]] = 0; mode[tsu[1] + 1] = 1; funcA(); } else if (hash[x].a <= g && g <= hash[x].b) { funcA(); } funcA() { if (kar[tsu[1] + 1] < 1 && kt == 0) hmove();} move(); goto BB//糞; }
176 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 23:29:38 ] 最適化とかは動くものができてからの話なわけで
177 名前:デフォルトの名無しさん [2007/01/23(火) 23:40:35 ] >>176 >>1 は質の高いアルゴリズムによる高速化と、最適化による高速化がごっちゃになっているのかもしれない
178 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 00:04:10 ] ここまで来るとただの馬鹿だな 根拠の無い自信でつっぱねるだろうが
179 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 00:36:33 ] 配列の先頭とそれ以外で用途が違うから読みにくい
180 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:14:36 ] >>1 さん 俺は弱いリバーシしか作ったことないけれど、 実現確率が正確に求まるとは到底思えない。矛盾してないかい。 自分的には確率使うなら囲碁のモンテカルロ法とかのが ずっと良さそうな気がする。 ttp://www.geocities.jp/hideki_katoh/ (加藤さんの翻訳)
181 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:59:10 ] >>前スレ1 お願いだから将棋に帰ってください。 これ以上リバーシを冒涜しないでください。 pc10.2ch.net/test/read.cgi/tech/1109307327/
182 名前:1 [2007/01/24(水) 02:35:27 ] まだ、人の意見を取り入れられるところまで行ってないんです 根本的にまともに動作してないのに、体裁だけ整えてあとは他人に任せるとかは駄目でしょ? まともに動作したらより良くするために意見をどんどん取り入れますよ >>175 if (hash[x].a <= g && g <= hash[x].b) は、ifを分割した方が速度が出るとおもいますよ >>180 実現確率を正確に求めてないんです 評価値順に手を並び替えて一手目50%、二手目25%とか半分づつにしているんです 評価値の高いものを深く読むということに使っているんです
183 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:40:18 ] 速度が出るとおもうじゃなくて 実際出るかどうかだろ?
184 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:43:39 ] >実現確率 >一手目50%、二手目25% 適当にこんな数字決めてないでMPC使えばいいじゃん
185 名前:1 [2007/01/24(水) 02:44:27 ] >>183 if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため 速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
186 名前:1 [2007/01/24(水) 02:47:05 ] MPCとはなんですか?
187 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:49:12 ] >>185 www.st.rim.or.jp/~phinloda/cqa/cqa7.html
188 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:50:07 ] >>186 www.cs.ualberta.ca/~mburo/publications.html
189 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:53:01 ] 前も同じリンク教えたのに読んでなかったのかよ
190 名前:デフォルトの名無しさん [2007/01/24(水) 02:53:35 ] 今の段階でアドバイスしてる多くは、より良い動作を実現させるための助言じゃなくて、 まず動かすための、プログラムを見易くするためのアドバイスが多いと思うんだけど、 まともに動かせるように助言してくれてるのに、あえて無視してるのか?まぁなんてことでしょう!
191 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:55:13 ] >if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため >速いおもいますが 実際にはやっていませんが...どうなんでしょうか? そう思うのは勝手ですが、そんなゴミを垂れ流さないでください。 A && B と書いたとき、Aが偽だとBは評価されません。 つまり、 A && B はif (A) B と概ね等価になります。 >187のリンク先の下の方を参照してください。
192 名前:デフォルトの名無しさん [2007/01/24(水) 02:59:14 ] コンパイラの最適化でもそういうとこってうまいことやってくれるんでしょ?
193 名前:1 [2007/01/24(水) 03:00:51 ] >>188 ありがとう読んでみます ifはわからないのでrand()を使って実験してみる
194 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 03:01:21 ] 取り敢えずのゴールは 「>>1 の考えるアルゴリズム積んだリバーシを動かすこと」 (WZebraを倒すとかは取り敢えず後回し) 「アルゴリズムは完成した」 (前スレ>>190 での、>>1 の発言) 「考えているアルゴリズムに変更の余地はない。その動作を正確に実現するコードを作るだけ」 (前スレ>>806 での、>>1 の発言) 現状として、 >>1 はコーディングが出来ない (または、限りなく下手) そして、このスレには>>1 のアルゴリズムは知らないが、コーディングを出来る人が揃っている。 何故>>1 が 「アルゴリズムの概念だけを公開して、コーディングは他人に任せよう」 と思いつかないのか、そしてそれを指摘されても無視し続けるのか、理解出来ない。 (←以前誰かが指摘してた気がする 「数学やってる」っていってるくせに、三段論法とか知らないのかな? まあ論理学出来てる人にも見えないが……
195 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 03:41:36 ] >>185 てきとーに測定してみた。 a=0, b=0: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks a=0, b=1: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks a=1, b=0: if(a && b): 2.0 clocks, if(a) if(b): 2.0 clocks a=1, b=1: if(a && b): 4.0 clocks, if(a) if(b): 4.0 clocks どっちも同じだね。
196 名前:1 [2007/01/24(水) 03:59:40 ] もしかしたらまとめた方が速いかも.... 実験では同速度だったけど 分岐予測を当てやすくさせるためにはまとめた方がよさそう
197 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:10:28 ] バグ取りを先にやれよ バグを含んだまま機能の追加変更すんな
198 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:13:03 ] やるなと言えばやる やれと言えばやらない どうしようもないな
199 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 07:46:01 ] 一応幾つかの関数はリファクタリングしてすっきりしたのだが、 mtd()がどうにもならなすぎるのでもう飽きた。 せめてループ制御変数を使い回すのを何とかしないとデバッグどころじゃないぞ、と。
200 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 07:50:09 ] 確かに そろそろ飽きてきてるかな…… クマー
201 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:38:10 ] iやjをループ変数意外で使ってる
202 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:39:12 ] ×意外 ○以外
203 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:49:42 ] for(i=0;i<125;i++){ 中略 } if(i==126){ ここは実行されることがあるのか }
204 名前:デフォルトの名無しさん [2007/01/24(水) 09:51:57 ] >>198 韓国人だなww
205 名前:デフォルトの名無しさん [2007/01/24(水) 09:52:50 ] >>203 wwwwwwwwwww
206 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 09:58:56 ] 未だに最適化を理解しない>>1 そんなにスピードが気になるならC++なんぞ使うんじゃない
207 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:07:30 ] >>105 これ動かなくね? 延々と 「実現確率=0.50000 count=1 手数=4 指し手=19 読み深さ=0 予想値=0 a=65 b=65」が繰り返されてる
208 名前:207 mailto:sage [2007/01/24(水) 10:10:33 ] 実現確率の出力のところをコメントアウトすればいいのね
209 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:18:05 ] >>1 はアルゴリズムを人にわかるように説明できないんだろ
210 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:21:11 ] >>116 > うまく動かないのは、mtd()だけであとは正常動作をしていると思われます mtd()だけって…>>1 のソースの大半はmtd()関数だろ。
211 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 10:59:36 ] 言い方がどれもうけるw ヘボさが見え隠れしてるw
212 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:11:30 ] MTDをちゃんと理解してないからmtd()のバグがなくならないんでしょ。 プログラムに知識のダメ出しをされてるんだよ。
213 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:25:46 ] >>180 モンテカルロ法は囲碁には適用できるが、リバーシには適当とは言えないよ
214 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 11:46:54 ] オセロの評価関数はパターン評価を基本にして、 着手可能箇所数とか偶奇性とかその他独自のフィーチャーを加えて 教師あり学習をさせるのがいい。 探索はPVSとかMTD(f)あたりで置換表やMPCを併用する。
215 名前:デフォルトの名無しさん [2007/01/24(水) 12:07:24 ] プログラムの手伝いしたいんだけど、オセロのアルゴリズムとかあんま知らないから >>1 がどんなことやろうとしてるのかまったくわかんないし、そのせいでソースも読めないんだよな。 minmax法とかαβ法くらいなら理解できるんだけど、英語の論文とかまったく知識ないから理解できない。 ちょっとでもかじってればわかるんだろうけど。
216 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:14:52 ] minmax法やαβ法がわかってれば次はNullWindowSearchを理解すればいいね ray.sakura.ne.jp/search_problem/null_window.html その先はそれほど大きな違いは無いよ
217 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:19:45 ] 入力ファイル→出力ファイルというようにバッチ的にC言語のインデント処理ができるUnixコマンドってありますか?
218 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 12:22:41 ] Unixコマンドでは知らないけど自分はArtistic Style使ってる。
219 名前:デフォルトの名無しさん [2007/01/24(水) 12:43:29 ] >>216 d 読んでみるよ
220 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 13:18:24 ] te = new unsigned char[67108914]; 67108914ってなんだろう バイト数でいうなら67108914=64MB+50B
221 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:18:00 ] >>217 indentって標準かな?
222 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 14:45:12 ] teは手を登録してるようだけど・・ ここにもバグがありそう >>前スレ1 変数名・関数名が何の省略かを全て書いてよ
223 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 16:43:37 ] 変数名・関数名まとめ 140 デフォルトの名無しさん sage 2007/01/23(火) 12:45:11 とりあえず分かった範囲だけ書いてみる。 bt[a][b] 意味: a の、下から b ビット目の値 代替記法: ((a >> b) & 1) wb[t][y][c] 意味: ビット詰めされた盤面 c は色で 0:黒 1:白 2:何もおかれていない y は盤面の縦座標(0〜7) t は不明 zw[x+y*8] 意味: 座標で指定された手の優先度。ban の写し。 wz[n] 意味: nで指定された優先度の手の座標。zwの逆引き we[n] 意味: 3のn乗 ch[n] 意味: 0:黒、1:白として、色の入れ替え。もしくは論理反転。 代替記法: (1-n) F 意味: たぶん現在の手番??? zi[p] 意味: 縦座標(y)の値。 代替記法: (p/8) zj[p] 意味: 横座標(x)の値。 代替記法: (p%8) >1 は、最低限これらを全て分かりやすい名前に書き換えるべし 152 1 2007/01/23(火) 14:02:20 >>lp、li、lj、ba +が現在位置としてlが下の番号のときに lp(l) は、z (=8*x+y)での移動位置 li(l)、lj(l)は (x,y)座標での移動位置 567 4+0 321 baはテンポラリでbf()()を生成するときに使用 bf(番号0)(z) zに対して通常の座標を返す bf(番号1)(z) zに対して左右反転の座標を返す bf(番号2)(z) zに対して左に90度回転した座標を返すなど
224 名前:デフォルトの名無しさん [2007/01/24(水) 17:33:45 ] このプログラムはリファクタするより1から作り直したほうが早い。
225 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 17:37:34 ] そうすると最初のスレの>>1 はどーなんの
226 名前:1 [2007/01/24(水) 17:37:56 ] 今、オブジェクト指向で一から作り直してますから待ってて下さい!
227 名前:デフォルトの名無しさん [2007/01/24(水) 17:54:09 ] >>226 おまいはホントに誰の話しも聞いてないんだな
228 名前:1 [2007/01/24(水) 18:14:57 ] >>227 なんでよ?224の話の通りだよ
229 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 18:16:44 ] そろそろ>>1 はトリップつけてくれ、、、、いややっぱいいやw
230 名前:1 [2007/01/24(水) 18:18:57 ] オブジェクト指向といってもC++の機能を使わなくたって出来るんだよ 普通のCでも オブジェクト指向が鈍いっていう事はない 関数の分割単位をわかりやすくする目的がある
231 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 18:23:48 ] ふーん、すごいね
232 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 18:29:49 ] >>230 Cでオブジェクト指向的なコーディングができることぐらい、 ここにいる主要な人達のほとんどが知っていることだよ。 それでも、オブジェクト指向的に書くならC++の方が良いと言っているということは、 やはりCでは強引に書かないとできないという事なんだよ。
233 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 18:45:03 ] 1から作り直したほうが早いのは間違いないが、 >>1 が作り直すのは絶対に止めた方が良い。
234 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 18:59:19 ] >>228 と>>230 は>>1 に見えないな オブジェクト指向とまでいかなくても構造化してくれるならそれで充分
235 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:26:03 ] >>234 同意
236 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:36:00 ] 何故>>1 にそんなにかまってやってるの?
237 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:44:26 ] みんな>>1 のことが好きなのよ
238 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:59:09 ] gotoの使いかた等に現れる >>1 の溢れんばかりの素質が皆を引きつけてるんだよ。
239 名前:デフォルトの名無しさん [2007/01/24(水) 20:00:39 ] ふーん。まぁがんばれ >>224 も>>227 も俺なんだけどな。
240 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 20:02:34 ] >>233 吹いた
241 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 20:11:45 ] 何故>>1 はgotoを使うのだろう そこらへんの本や入門サイトにはgotoなんて載ってないよね? もしgotoの記述があっても、それによってもたらされる害についての説明だと思うのだけど
242 名前:デフォルトの名無しさん [2007/01/24(水) 20:41:13 ] >>241 >>1 はプログラミングで論理的に構造を考える能力が足りない。 まぁ初心者だからな。
243 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:06:31 ] wzebraインストールすらできないw
244 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:11:52 ] 作れるとしたらまず最強といわれるやつに勝てる人でかつプログラム経験豊富な人であれば 自分の思考パターンをそのまま当てはめればいいわけでそんなに難しくないんじゃないか? どんなアルゴリズムでも癖があるから万能ではなくてもただ1つに勝つだけなら単純だ BearRevとやらはやってみたが弱すぎてアルゴリズム考えるのも馬鹿馬鹿しいんだが Wzebraはなんかエラーでて動きませんw
245 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:20:02 ] wzebraは生身の人間ではまず勝てない
246 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:20:30 ] >作れるとしたらまず最強といわれるやつに勝てる人で そんな人間は存在しない
247 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:24:27 ] リバーシって確か、かなり前に世界チャンプが コンピュータに負けたゲームだった記憶がある。
248 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:25:37 ] その世界チャンピオンはベストコンディションではなかったとの話もある。
249 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:25:58 ] >自分の思考パターンをそのまま当てはめればいいわけで これだと弱い。 オセロではそれよりはるかにいい方法が発明されてるから ルールを知っている程度の人でも世界チャンピオン以上のプログラムが作れる
250 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:35:54 ] ベストコンディションでも勝てなかっただろうけどね 彼より前のチャンピオン達はプログラムとの対戦から逃げてると言われてて 彼が対戦した頃には既に大差だったらしい
251 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:46:30 ] パンダ名人なげーw
252 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:57:35 ] まぁ実際逃げてたのかどうかは知らんけど 挑発はされてたかもしれんね
253 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:20:15 ] ブレークポイント設定しても全く引っかからんところがいくつかあるなぁ
254 名前:初心者 mailto:sage [2007/01/24(水) 22:30:39 ] >>1 はこのすれで一番コーディング能力が 低いくせに人の言うことは聞かない。 速度なんか後で気にしたらいいのに。
255 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 01:52:27 ] アルゴリズムを話せない プログラムもろくに書けない なにこいつw
256 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 02:19:16 ] >>255 ヒント:小学生
257 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 06:44:23 ] bitboardのメリットを見事に殺してる・・・ シッタカが使うとこうなるんだなぁ
258 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 07:05:51 ] というか少しもbitboardじゃないよね
259 名前:1 [2007/01/25(木) 07:25:16 ] 主に手を戻すときのコストが0になるという利点がある 24バイトのコピーのみ
260 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 07:48:55 ] 利点しか見えてない方ですか? 1の使い方だとむしろ遅くなる原因では
261 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 08:41:42 ] この知ったかぷりはもはやギャグ
262 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:28:19 ] >256 確かに,普通では考えられない知識の偏り 実経験の無さ,そして思い込みの強さなど 小中学生辺りと考えるのが妥当か
263 名前:デフォルトの名無しさん [2007/01/25(木) 11:43:34 ] 小学生でも人の意見は聞くだろ
264 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:49:04 ] 実力が伴わず、プライドだけ高い。 期限が守れていないということから、自己管理もできていない。 プライドの高さからおそらく大人なのだろう。 それも、子供のような未熟な大人。 ニートか?
265 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 12:39:09 ] 2chでスレ立てて成功した開発系スレは 開発者が凄まじいスキルを持ってるか言われたとおり素直に従ってスキルアップするかのどちらかだ
266 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 12:53:16 ] とりあえず>>1 も含めてお前ら全員馬鹿なのはわかったw
267 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 13:32:47 ] 2chに馬鹿じゃない奴がいると思ってるのか?
268 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 13:44:09 ] 我々の業界では褒め言葉です
269 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 16:56:23 ] このスレは、ム板でもトップクラスのレス数(勢い)だったりする。
270 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 17:36:39 ] ほんとだ。C/C++宿題の次だな
271 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 19:56:36 ] >>1 が帰ってくる前に。 座標だけでも標準の棋譜に変換しとかないとな。
272 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 20:31:15 ] 自分も初めてオセロを作ってみた。 白も黒も乱数でコマを置くようにしたら、白の方が常に数パーセント勝率がいい。
273 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 20:37:03 ] >>272 そうらしいね どこかでそんな話題を目にしたと思って探してみた science5.2ch.net/test/read.cgi/sim/1090548999/383 science5.2ch.net/test/read.cgi/sim/1090548999/385
274 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 20:42:30 ] >>272 多分、白のほうが辺、角を取れる確率が高いからだと思う。 (と、小学生の頃、思ってて、密かに必勝法の一種だと思ってたけど、 本当かどうか知らない)
275 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 20:51:25 ] >>272 モンテカルロ法になるのかな? その方法だと白が有利のような結果がよく出るんだけど、 ゲーム木のDBを構築すると引き分けの確率が高いっていう結果が出る。 この違いはなんなんだろう?