おまいら最強のリバーシプログラムしてみろよ part2at TECH
おまいら最強のリバーシプログラムしてみろよ part2 - 暇つぶし2ch293:デフォルトの名無しさん
07/01/26 15:12:47
必勝法は、最初のじゃんけんで勝って白をとることだ!

294:デフォルトの名無しさん
07/01/26 15:35:09
乱数ってC標準のやつだよね?

295:デフォルトの名無しさん
07/01/26 15:44:36
メルセンヌツイスタはC標準じゃないよ

296:デフォルトの名無しさん
07/01/26 16:04:01
>>293
必勝じゃないじゃん

297:デフォルトの名無しさん
07/01/26 16:08:03
リバーシなんぞ1Tバイトとあれば十分

298:デフォルトの名無しさん
07/01/26 16:10:28
>>295
>>292以外のことさ

299:デフォルトの名無しさん
07/01/26 16:28:59
287です
stdlib.h に入ってる rand() 使いました。

何度か10,000回試行やってみた。
黒  白  引分
4476 5141 383
4534 5013 453
4467 5093 440
やっぱり傾向としては間違ってないようですね。
レスくれた人㌧クス

× 白が圧倒的に強い
○ AIがランダムなら、後手有利
という所ですかね。。。

300:デフォルトの名無しさん
07/01/26 16:59:33
>>292
>>299
10万回してみた。
自分はRubyプログラミングの練習で作った。

乱数は、Ruby標準を使用。
10万回にすると、>>292さんの数字にかなり近くなった。

100,000回の試行の結果
 黒の勝ち数:45513・・・45.513%
 白の勝ち数:50354・・・50.354%
 引き分け.. : 4133・・・ 4.133%

301:デフォルトの名無しさん
07/01/26 17:38:40
>292 を仮の基準として、
>287
σ(概算) 0.7%、 基準との差 黒 -0.8% 白 +0.8%

>291
σ(概算) 0.5%、 基準との差 黒 -0.47% 白 +0.51%

>299 (三回合計)
σ(概算) 0.29%、 基準との差 黒 -0.53% 白 +0.45%

>300
σ(概算) 0.158%、 基準との差 黒 +0.054% 白 -0.024%

差はいずれも標準偏差から大きく離れていないので、
どの結果にも矛盾は無いと考えてよさそうだね。

302:デフォルトの名無しさん
07/01/26 17:46:30
そういえば、どっかのホームページに書いてあったけど、
白の一手目で黒と駒が並行になるように取ると白の不利になるらしい。

 ●●●   ←このパターンは白不利らしい
 ○○○

このパターンを意識的にはじいたら
確率はどうなるんだろ?

303:デフォルトの名無しさん
07/01/26 17:48:31
だからぁ、アルファベータ狩りすれば現代のパソコンで必勝は出来る

304:デフォルトの名無しさん
07/01/26 17:56:43
お前らこういう小学生の自由研究みたいなのは得意なんだな

305:デフォルトの名無しさん
07/01/26 18:01:38
だってニートなんだもん。><

306:デフォルトの名無しさん
07/01/26 18:02:04
アルゴリズムの開発をしたいということならまず環境を作ろうよ
アルゴリズム部分はVBScriptかJavaScriptのエンジンを乗っけて外部ファイルの記述できるようにする
でそれらをサーバー上で管理してスクリプトを自由にアップダウン出来るようにしとくのだ
自分の作ったスクリプトもソフト上からボタン一発で登録できるようなのがいい
サーバ上にあるスクリプトから自由に対戦相手をダウンロードして自分のスクリプトを戦わせることで
スクリプトの有効性を検証する
定期的に誰かがサーバー上にあるスクリプトから優秀なものをピックアップして対戦させて
トップ10を集計表示する
そんな子供の集計やってる暇があったらこれくらい作れるだろw

307:デフォルトの名無しさん
07/01/26 18:09:24
BearRev

308:デフォルトの名無しさん
07/01/26 18:12:22
>アルゴリズム部分はVBScriptかJavaScriptのエンジンを乗っけて外部ファイルの記述できるようにする
遅杉却下。

309:デフォルトの名無しさん
07/01/26 18:14:27
お前の頭よりは早いから大丈夫

310:デフォルトの名無しさん
07/01/26 18:23:27
つーか、そんなんで書きたくないだろ

311:デフォルトの名無しさん
07/01/26 18:29:09
VBSとかJSとか釣りとしか思えないな
Windows専用ならDLL、>>213
他のOSも考えるならプロトコル作ってネットワーク対戦

312:デフォルトの名無しさん
07/01/26 18:30:28
>>302
各10万回試行(MT)

手: 黒勝/白勝/引分
d3 c3: 44531/51376/4093
d3 c5: 45592/50180/4228
d3 e3: 45622/50182/4196

313:デフォルトの名無しさん
07/01/26 18:32:40
マジデリバーシには最適解はある、オレは知らんけど

314:デフォルトの名無しさん
07/01/26 18:53:48
>>311
お前のほうが釣りにしか見えないんだがw
わざわざ対戦させるためにGUIから実装を始めてプロトコルのお勉強までするのか?
誰がそんな暇なことするんだ?
JSとかVBSなら基礎的なプログラム知識のある人ならほとんどの人が使えるし
新たに環境を構築する必要がない
メモ帳でも作れる


315:デフォルトの名無しさん
07/01/26 18:54:03
>>306
正直、俺はそんな環境より
子供の集計のほうに興味がある。

316:デフォルトの名無しさん
07/01/26 19:01:44
>>314
>JSとかVBSなら基礎的なプログラム知識のある人ならほとんどの人が使えるし
JSはまあわからんでもないがVBSはなあ・・・

DLLって言ってるのになんでGUIの話が出てくるのかもわからんし
プロトコルのお勉強って・・・?

317:デフォルトの名無しさん
07/01/26 19:10:04
>>314
お前だけ釣りだろ?www

318:デフォルトの名無しさん
07/01/26 19:12:41
とりあえずBearRev最強設定ですべてに勝てないやつは発言するなw

319:デフォルトの名無しさん
07/01/26 19:19:56
最近、前スレ一が来ないせいか
ふいんき(ry が変わってきたね。

テンプレ再考の余地が……って思ったけど、
そもそも次スレが不要なのかな。

320:デフォルトの名無しさん
07/01/26 19:29:41
>>319
お前は不要

321:デフォルトの名無しさん
07/01/26 19:36:38
>>302
>>312
Ruby だから遅い。
各1万回試行。

(1)のパターンが一番、勝率が悪いみたい。
d3 c3 とかの記号の意味がわからん。。。

手: 黒勝 / 白勝 / 引分
(1) 45.78% / 50.21% / 4.01%
(2) 44.37% / 51.26% / 4.37%
(3) 44.82% / 50.98% / 4.20%

(1)
○●
○●●


(2)
○●
●○●
__○

(3)
○○○
●●●

322:デフォルトの名無しさん
07/01/26 19:50:24
とりあえずベアの強いってやつには今勝てた

323:デフォルトの名無しさん
07/01/26 20:12:33
/a b c d e f g h
1・・・・・・・・
2・・・・・・・・
3・・・・・・・・
4・・・○●・・・
5・・・●○・・・
6・・・・・・・・
7・・・・・・・・
8・・・・・・・・
↑notepadなんかにコピペすると見易いです


d3 c3 → (2)
d3 c5 → (1)
d3 e3 → (3)
だよね?

324:デフォルトの名無しさん
07/01/26 20:23:48
>>323
合ってる。

325:デフォルトの名無しさん
07/01/26 20:43:14
>>323
あー、なるほど、そういう座標形式なのか。
サンクス。

326:1
07/01/26 20:48:38
すみません
開発は進行してますが、別のことに興味が出てきてしまい
ソースのうpが遅れています
手書きのものでは、今まで指摘してもらった箇所は修正でき
関数の分割も出来ています
序盤からproof number search(の改良版)で思考できたら最強っぽいのですが

327:デフォルトの名無しさん
07/01/26 20:57:13
別のことだとぉー

328:デフォルトの名無しさん
07/01/26 20:58:30
乱数によるシミュレートの意味を明確にしないと先に進めない希ガス

329:デフォルトの名無しさん
07/01/26 20:59:07
ソースの整理してるんじゃなかったのか?
また新機能つけようとした挙句、別なことに興味って…

330:デフォルトの名無しさん
07/01/26 20:59:46
オセロでproof number searchって意味ないんじゃないの
オセロの場合、どの手選んでも基本的に一律に60手目で終了するから

331:1
07/01/26 21:06:31
>>330
手数が決まっているほどproof number searchは意味を持ちますよ
例えば、あと40手以内に玉を詰められると予測できたなら全力で
proof number searchをすればいいんです
詰まない場合は、意味がなくなって思考時間を消費するだけになります

332:1
07/01/26 21:07:31
明日中には、MTD(f,r)をうpしますから待ってて下さい!

333:デフォルトの名無しさん
07/01/26 21:12:13
>>332
待ってる。頑張れ

334:デフォルトの名無しさん
07/01/26 21:12:14
>>331
>例えば、あと40手以内に玉を詰められると予測できたなら全力で
予測ってどうやるんだい?

335:デフォルトの名無しさん
07/01/26 21:54:19
>>325
こういう座標形式がオセロでは一般的みたいだね

>>334
埋まってないマスが40個の時だろ?



336:デフォルトの名無しさん
07/01/26 22:03:25
40手以内という例えが適切でないなw

で何手ってどうやって出すの?

337:デフォルトの名無しさん
07/01/26 22:53:26
>>331
またどっかで聞いてきた事をそのまま言う

338:デフォルトの名無しさん
07/01/27 00:11:11
>>332
お前の宣言は破られるものだと構えてる

339:デフォルトの名無しさん
07/01/27 00:17:01
MTDとかの探索アルゴリズムは終盤解析でバグを取るといいよ。
末端ノードが試合結果じゃなくて評価関数だと正しく動いてるか分からないでしょ。

340:デフォルトの名無しさん
07/01/27 00:41:32
>>283 中身読んだが,これ純粋モンテカルロ法だね
これだと物凄く収束が遅くて使いものにならないことが分かってる
少なくともUCT↓使わないと
URLリンク(zaphod.aml.sztaki.hu)(UCTの論文,英語)
MoGoではさらに読む手を絞り込んで強くしてる
URLリンク(www.geocities.jp)(MoGoのレポートの和訳)

341:デフォルトの名無しさん
07/01/27 00:47:57
>>340
おもしろそうだと言って作った奴に対して、なぜ「それは遅い」っていうレスになるんだ?

342:デフォルトの名無しさん
07/01/27 00:50:11
いまどき、パソコンでも全部の探索木やっってもすぐ終わるんじゃないのか

343:デフォルトの名無しさん
07/01/27 00:55:12
>>1
MTD(f,r)とかいうアルゴリズムか。
rって簡易な前向き枝刈りだからMTD(f)とPCやMPCなどの併用に相当する。
まずr無しのMTD(f)を終盤で動かしてごらん。
>>342
終わりません

344:デフォルトの名無しさん
07/01/27 01:01:02
パソコンの能力が1000倍になってもすぐには終わりません。

345:デフォルトの名無しさん
07/01/27 01:04:49
>>341
別に貶したいわけじゃないだろうし
ああいう除法にも興味持つかもしれないからいいじゃん。
関係ありそうな情報はどんどん出して欲しいと思うよ。

346:デフォルトの名無しさん
07/01/27 01:11:31
>>345
なんか>>340みたいなやつは、本意を読み取らずに無意識に自分より知識がないと
思った奴に対して、上から見てバカにしているように思えたんだよな。

レスを読まずにソースだけ読んだんだろうけどさ。
すっごくくだらない人間に見えた。

347:デフォルトの名無しさん
07/01/27 01:22:02
何をいきり立ってるのか知らんが、一応フォロー?として情報出してくるだけマシなんじゃねーの?

348:デフォルトの名無しさん
07/01/27 01:40:25
前スレ見て、少し自信がわいてきた。

349:デフォルトの名無しさん
07/01/27 04:08:05
下を見るな。
上を見るんだ。

350:340
07/01/27 13:39:43
>>341 レスも読んでるよ
「収束が遅い」から「弱い」と書いたつもりなんだが,誤解されたか
確率的じゃないゲームでモンテカルロ法が使い物になったのはUCTのお陰と言っても過言じゃないので
その辺りを(他の人にも)きちんと知って貰いたかったのがあのレスを付けた一番の理由
書き方がぶっきら棒だったとは思うがあのソースは俺にも参考になったし
暇ができたら俺もMC/UCTでオセロのプログラムを書いてみようと思ってるし
>283を貶める意図は毛頭ない
今読み直すと,最初にTHX位入れておくべきだったと思う.長文スマソ

351:1
07/01/27 14:14:26
既存の探索ルーチンに属さない新アルゴリズムに到達した!
囲碁、将棋の中盤以降がかなり強くなる
そして世界の頂点に立つ

352:1
07/01/27 14:15:50
論文はどこへ持っていったらいいですかね?強かった場合
タコスの人のところへ持っていったらいいですかね?

353:デフォルトの名無しさん
07/01/27 14:18:25
しね。

354:デフォルトの名無しさん
07/01/27 14:25:26
強いソフトが出た場合、学会から論文を出さないかと打診が来る。

論文出すときは数字で実績出さないといけないよ。
妄想だけじゃダメ。

355:1
07/01/27 14:33:29
わかりましたー今年のコンピュータ将棋の大会で優勝します!

356:デフォルトの名無しさん
07/01/27 14:34:52
まて、先にオセロだオセロ。

357:デフォルトの名無しさん
07/01/27 15:16:32
オセロは諦めたのか?
将棋に行くふりして逃げるのか?

358:デフォルトの名無しさん
07/01/27 15:21:07
332 名前:1[] 投稿日:2007/01/26(金) 21:07:31
明日中には、MTD(f,r)をうpしますから待ってて下さい!

359:デフォルトの名無しさん
07/01/27 15:22:40
>>1はようやくのぼりはじめたばかりだからな
このはてしなく遠いオセロ坂をよ…

360:デフォルトの名無しさん
07/01/27 15:24:39
FFで言えばタイトルが出たレベル。

しばらくたってからやっぱり定石DBは必要ですねとか言い出しそう。

361:デフォルトの名無しさん
07/01/27 15:29:23
逃げたら逃げたで別にいいけどね。予想してたから。
最近はもうソースも読んでなかったし。

362:デフォルトの名無しさん
07/01/27 15:36:12
>>1にはさいしょから期待してなかったけど、もうどうでも良くなってきた

363:デフォルトの名無しさん
07/01/27 15:41:53
結局>>1はまだ何一つまともなものを作ってない。

364:デフォルトの名無しさん
07/01/27 15:42:25
1なんかよりまじめに作る人が現れないかなぁ
って何人かソースうpした人居たよね
その後はどうなってるんだろ?
改良続けてるのかな?

365:デフォルトの名無しさん
07/01/27 15:45:22
>>352 なんとなくニセモノの匂いがするが,マジレスしておく
URLリンク(sig-gi.c.u-tokyo.ac.jp)
情報処理学会のゲーム情報学研究会が一番敷居が低い

366:デフォルトの名無しさん
07/01/27 15:47:06
必ず儲かるという詐欺みたいなものだな。

何故強い、最強との言い切れるのか説明してないし、する気もないみたい。
疑似科学と変わらん。
想像だと波動アルゴリズム理論か?

367:デフォルトの名無しさん
07/01/27 16:12:15
URLリンク(ja.wikipedia.org)

368:デフォルトの名無しさん
07/01/27 16:19:16
疑似科学者の傾向
アメリカ合衆国の懐疑論者マーティン・ガードナーは
その著書『奇妙な論理〈1〉』ISBN 4150502722
(原題 Fads and Fallacies in the Name of Science)において、
疑似科学者の傾向として以下の5項目が上げられるとしている。

1.自分を天才だと考えている。
2.仲間たちを例外なく無知な大馬鹿者と考えている。
3.自分は不当にも迫害され差別されていると考えている。
4.もっとも偉大な科学者や、もっとも確立されている理論に
攻撃の的を絞りたいという強迫観念がある。
5.複雑な専門用語を使って書く傾向がよく見られ、多くの場合、
自分が勝手に創った用語や表現を駆使している。

今のところ1のみ?

369:デフォルトの名無しさん
07/01/27 18:44:57
>>1よ。この状況をなんとかひっくり返してみろ!

370:デフォルトの名無しさん
07/01/27 18:50:15
>>369
うまいこと言った?

うまいこと言ったつもりなんだね?

371:デフォルトの名無しさん
07/01/27 18:52:54
>>369
誰がうまいことを言えと


とか言われたいのか?そうなのか?

372:1
07/01/27 18:53:38
いいんです。凡人に理解してもらえなくても。

373:デフォルトの名無しさん
07/01/27 18:55:42
自分は天才だとでも?
凡人は所詮凡人にしか相手にしてもらえないだろ。
何考えてるんだ?

374:デフォルトの名無しさん
07/01/27 18:59:19
>>372
>>368

375:デフォルトの名無しさん
07/01/27 19:05:32
>>372
確かに。
今の状態で理解できる奴がいたら天才かもしれんな。

376:デフォルトの名無しさん
07/01/27 19:05:39
1,2,3該当と考えても差し支えないですか?

377:1
07/01/27 19:19:03
>>351>>352は本物ですよ
>>372は偽物です
判別は容易でしょう
もうちょっと待ってて下さいね

378:デフォルトの名無しさん
07/01/27 19:22:01
いや 難しい

>>372>>1だと思ってた…

379:デフォルトの名無しさん
07/01/27 19:27:01
>>372は簡単
句点があるから

380:デフォルトの名無しさん
07/01/27 19:28:51
>>1鑑定士スレに変更!

381:1
07/01/27 20:34:46
>>376
4も該当だろ。「最強の」と言ってるんだから。

382:デフォルトの名無しさん
07/01/27 21:59:59
俺鑑定
本物:>>25-26,28-29,96,98,100,105,108,116,152,155-156,158-159,161-162,182,185-186,193,196,326,331-332,352,377
本物?:>>90,139
偽物?:>>61,64,226,259,355
偽物:>>103,228,230,351,372,381

383:デフォルトの名無しさん
07/01/27 22:07:01
>>1
何で鳥付けないの?

384:デフォルトの名無しさん
07/01/27 22:11:31
そのほうが面白いからいんじゃない?

385:デフォルトの名無しさん
07/01/28 00:04:03
実は>>1って全てなりすましじゃね?

386:デフォルトの名無しさん
07/01/28 00:17:24
ソース出してきたのは本物だろ。

387:1
07/01/28 00:46:04
すまん
眠くなって一休憩したら0時45分になってた
今から頑張る まっててくれ

388:デフォルトの名無しさん
07/01/28 01:58:10
1は鳥付けろハゲ

389:デフォルトの名無しさん
07/01/28 04:08:21
酉付けたら偽者のせいにできなくなるからでしょ

390:デフォルトの名無しさん
07/01/28 05:11:30
5もじゃね?
自分の考えの表現であるソースコードはめちゃくちゃだし
MTD(f)+MPCの改悪でしかないのにMTD(f,r)なんて言葉作ってるし

391:デフォルトの名無しさん
07/01/28 05:47:17
このスレ
比較的流れだけは速いのに
成果物は全然あがってこないんですね


392:デフォルトの名無しさん
07/01/28 06:12:38
>>391
君が出してもいいんだよ?

393:デフォルトの名無しさん
07/01/28 09:15:57
>>391
出すときは名前欄に「1」と書いておくことがこのスレの唯一のルール。

394:デフォルトの名無しさん
07/01/28 09:20:27
但しネタを出すときね

395:1
07/01/28 11:05:37
こうですか?
わかりません><

396:デフォルトの名無しさん
07/01/28 11:26:07
>>395
>>104

397:1
07/01/28 12:03:04
一睡もしないでやってたからもう少しでうpできます。
アルゴリズムもちゃんと完成しましたし、オブジェクト指向で書き直しました。
バグがなくなれば最強なリバーシをお見せすることが出来るのですが、どうもうまくいきません。














こうですか?
わかりません><

398:デフォルトの名無しさん
07/01/28 12:06:36
なかなかだった

399:デフォルトの名無しさん
07/01/28 12:07:37
ちょっと丁寧すぎない?

400:デフォルトの名無しさん
07/01/28 12:13:51
>>365
そこは学部生・院生の練習場・・・

401:1
07/01/28 13:04:22
>>397
惜しいな、句点は書かないんだ

402:デフォルトの名無しさん
07/01/28 13:38:32
>>1は、とっくにいない気がする

403:デフォルトの名無しさん
07/01/28 19:30:23
だって人間やめたはず…

404:デフォルトの名無しさん
07/01/28 20:26:36
なるほど、だからあんなに、壊れてるんだな。

405:デフォルトの名無しさん
07/01/28 20:35:58
>>1は俺の肉便器にしてやったぜ

406:1
07/01/28 20:46:41
とりあえず改良版の打ち込みが終わりコンパイルエラーは出なくなった
だが動かしてはいない
URLリンク(up2moe.moe.hm)

407:デフォルトの名無しさん
07/01/28 20:49:31
お疲れ。
しかし読む気は無い。



408:デフォルトの名無しさん
07/01/28 20:54:40
相変わらず横テトリス型ソースだな
まったく読む気起きない

IDE使ってるのに何故インデントしない?
アホか

409:デフォルトの名無しさん
07/01/28 20:58:40
後ろのほうのコメント内部を関数にしろよ。
そして関数呼び出し部をコメントアウトしろ。


410:デフォルトの名無しさん
07/01/28 21:14:25
マクロがきもい

411:デフォルトの名無しさん
07/01/28 21:23:26
>>406
問題点1. 変数名が意味不明。kd とか cn とかじゃ意味分からん。
      意味の分かる変数名に変更汁。指摘したのに全然改善されてない。

問題点2. インデントもせず、詰め込みまくった団子のようなスタイル。
      一行に命令(式)一つを厳守した上でインデント汁。

問題点3. コメントが無い。
      必ずコメントを入れる事。それも命令自体の説明ではなく、動作の意図を判りやすく書く。

問題点4. 凶悪マクロ。
      そのまま関数に書き換えられないようなマクロは論外。

412:デフォルトの名無しさん
07/01/28 21:26:16
問題点 c++を使ってる。Java、C#を使えw

413:デフォルトの名無しさん
07/01/28 21:34:36
>>412
C++ と言ってもほとんど C だからまだいい。
むしろJavaだろうがC#だろうが、積極的にOOP使われるとえらい事になりそうだ。

414:デフォルトの名無しさん
07/01/28 21:53:51
>>406
コンパイルして実行してもすぐ終了するのですが…?
main()内のコメントをはずしたらコンパイルエラー…???

415:デフォルトの名無しさん
07/01/28 21:55:38
単体テストは…?

416:1
07/01/28 22:01:38
各部品(関数)のコンパイルエラーは出なくなったよ
っていううpですから...まだ動作確認していません

417:デフォルトの名無しさん
07/01/28 22:08:22
文法間違ってないだけでプログラムとしては価値ないだろ

418:デフォルトの名無しさん
07/01/28 22:20:56
インデントもコメントも付けて書いてるが、うpの前に手作業で消しているに2ペンス
変数名は恥ずかしい名前しか付けられないに7ペンス

419:デフォルトの名無しさん
07/01/28 23:24:41
なんでこういう汚い書き方するわけ?

420:デフォルトの名無しさん
07/01/28 23:58:26
これでも最初に比べれば大分ましになったよ。

421:デフォルトの名無しさん
07/01/29 02:04:42
問題点を改める気が無いなら俺はもう何もしないよ
改善されたソースが出されてたのにそれらを破棄して
自分のオリジナルに変更を加えて行ってるんでしょ

422:デフォルトの名無しさん
07/01/29 02:40:01
>>406
小学生が冬休みの宿題として作ってもここまでひどいソースは書かないと思うんだが。

1が何者なのかが気になって眠れない。

423:デフォルトの名無しさん
07/01/29 02:42:47
1画面分だけ見たけど
#define aa 256
#define bb 1024
#define cc 1500
これとか

424:デフォルトの名無しさん
07/01/29 02:55:01
>>1
MPCの論文読んだ?

425:1
07/01/29 06:03:15
まだ読んでません
英語を勉強してから読みます
日本語の論文は無いですかね?

426:1
07/01/29 10:13:56
あと、数式とかよくわからないんですが
どこか数式の見方とか載ってるサイト教えてください

427:デフォルトの名無しさん
07/01/29 11:31:24
英語も数式も読めない奴が論文出したいとか、どういうお花畑よ?

428:デフォルトの名無しさん
07/01/29 12:07:29
さすがに偽者だろwww数学科でてるとかいう話が本当ならなww

429:デフォルトの名無しさん
07/01/29 12:41:16
僕は はかせ~ ってロリキャラに言われたいがために博士号取りましたよ

430:デフォルトの名無しさん
07/01/29 13:12:41
博士号持ってる人に はかせ~ って声掛ける人はめったにいない件

431:デフォルトの名無しさん
07/01/29 15:08:55
院卒(数学)が数式読めないなんて、だめだこりゃ&舞台総崩れもんだ

432:デフォルトの名無しさん
07/01/29 18:36:37
>>425
日本語のもあるけどオリジナルを読むほうがいいんじゃない?

433:1
07/01/29 19:31:24
浅く読んで深く読む(MPC)っていうのは初めから使わないっていってるだろ?
四手浅く読むのに使う手間を、無くせば四倍の局面が読める

434:デフォルトの名無しさん
07/01/29 19:38:48
自分がどんな変な事を言ってるのかも
わからんのか

435:デフォルトの名無しさん
07/01/29 19:41:53
>>433
偽者だろ?

436:デフォルトの名無しさん
07/01/29 19:50:00
偽物は最後に「こうですか?わかりません><」って書いてくれ

437:1
07/01/29 19:58:39
そんな事を偽者に期待するなよ




こうですか?わかりません><

438:1
07/01/29 19:58:55
425と426は偽で初めからMPCは使わないのが本物

439:デフォルトの名無しさん
07/01/29 20:01:39
英語も読めないのか
もっと勉強しろよ

440:デフォルトの名無しさん
07/01/29 20:04:29
>>433
MPCを理解してない証拠

441:1
07/01/29 20:09:57
選択的探索(前向き枝刈り)

今日における最強のオセロプログラムはすべて、何らかの形で選択的探索を行っている。
ほとんどの局面で、明らかな悪手が多数存在し、それらは悪手であることが確認できるだけ読めば十分である。
深さ12の探索(12手読み)を行うとき、プログラムは深さ4まではすべての可能な手を評価した上で、
本当に悪いと思われる手を排除する。残った手を深さ12まで探索する。
この手続きは Multi Prob-Cut (Michael Buro の考案)と呼ばれ、
上記の例は「カットペア 4/12」になる。もちろん他のカットペアを使うこともでき、
多くのプログラムは複数のカットペアを使っている。

URLリンク(www.amy.hi-ho.ne.jp)

442:デフォルトの名無しさん
07/01/29 20:12:21
ほら、四倍の局面が読めるなんて書いてないし導かれもしないでしょ。

443:1
07/01/29 20:25:43
>>442
一手進むごとに、毎回、浅い読みをしなければ深く読めるんだよ

444:デフォルトの名無しさん
07/01/29 20:27:54
その文章は概要を知るにはいいかもしらんけど
端折りすぎてて実装するには情報が全く不十分なんだよね
勝手に脳内補完して勘違いしてる人も実際いるし

445:デフォルトの名無しさん
07/01/29 20:29:11
深さ4なだけで4倍じゃないだろ。
もっと80倍ぐらいじゃないか?

446:1
07/01/29 20:29:37
>>444
だから実装はしないんだってば

447:デフォルトの名無しさん
07/01/29 20:31:10
実装できるくらいの知識が無いから勘違いしてるんだってば

448:デフォルトの名無しさん
07/01/29 20:44:21
>>446
しないじゃなくてできないと言う方が正確だな.

449:デフォルトの名無しさん
07/01/29 21:00:58
Buroの論文読んでいないor読めないんでしょ?

450:デフォルトの名無しさん
07/01/29 23:18:07
概念とか、考えがわかれば高校生でも英語の論文読めるよね。

451:デフォルトの名無しさん
07/01/30 13:15:23
>>1
読むのにかかる時間をきちんと(定量的に)計算すればどっちが得か分かるはず

452:デフォルトの名無しさん
07/01/30 16:24:05
もっとも確立されている理論に
攻撃の的を絞りたいという強迫観念があるらしい

453:1
07/01/30 16:51:09
同一局面のハッシュ値が変わってしまうんだけどわかりますか?
未だに読みにくくてすみません
開発だけはしてますよっていううpのため、デバックや改良してもらう事をのぞんで
いる(いた)わけではかったんです
しかし、わからないのでうpします

454:1
07/01/30 16:51:44
肝心のアドレス書き忘れた
ここです
URLリンク(up2moe.moe.hm)

455:デフォルトの名無しさん
07/01/30 17:01:11
そんなもの誰も読まないよ

456:1
07/01/30 17:01:37
221行目からの部分です(不要な部分は省略しました)
なぜでしょうか?

z=te[5*x+3+cn]; //指し手34番が入力される

situ(); //取れるコマを出す

hmove(); //次局面のハッシュ値を計算する

adress(); //次局面のアドレスをpにセットする

if(z==34){fn(s);printf("ハッシュ値=%d 指し手=%d 深さ=%d %f\n",p,z,u,kar[u+1]);} 
//ここで毎回アドレスが変わってしまいます

457:デフォルトの名無しさん
07/01/30 17:04:39
正しいつづりはaddressね
恥ずかしい間違い多いね

458:デフォルトの名無しさん
07/01/30 17:06:36
助けてほしいならそれなりのお願いの仕方あるんじゃないの?
相変わらずコメントは入ってないし、変数名も意味不明。
お前が何を考えているかみんなわかっているような聞き方だけど、
そのソースを読んでやりたいことを理解して、その上で丁寧なアドバイスをしてくれるような
物好きはいないと思うよ。

とりあえずadress();消してみればいいんじゃね?

459:デフォルトの名無しさん
07/01/30 17:09:07
>>456みたくソースにもコメントつけてくれ

460:デフォルトの名無しさん
07/01/30 17:12:39
みんなに自分の考えを伝える気が無いなら延々と一人でデバッグしとけば?

461:デフォルトの名無しさん
07/01/30 17:15:46
とりあえずaddress();消してみてるに100ペソ

462:1
07/01/30 17:19:59
自己解決するしかないか...
コメントつけたとしても、それで伝わるとは限らないんですよ
全体をまんべんなく伝えきらなければ伝わらないと思うんです

463:デフォルトの名無しさん
07/01/30 17:21:35
試しもしないで何適当な事言ってんだか
人に伝えるのがそんなに面倒か?

464:1
07/01/30 17:22:32
mt()ルーチンにだけコメントつけてみますね
ちょっとまってて下さい

465:デフォルトの名無しさん
07/01/30 17:23:13
伝わるとは限らないが、コメントはつけろ
まずはそれからだ

466:デフォルトの名無しさん
07/01/30 17:29:40
コメントをつけると伝わる可能性がちょっとは増えると思うけどな。
と言っても3%くらいだけど。

まずはハッシュの計算以外の関数をコメントアウトしろ。
それでハッシュ値が正しかったら、コメントアウトしたとこに原因がある。
徐々にコメントアウトを解除していって、絞り込んでいけ。

467:1
07/01/30 17:31:02
void mt(){
BB:  //ラベル
s=t+u; // s = 現在の指し手 + 読みの深さ
x=ad[s]; // 読み位置のアドレス
if(te[5*x]<=128){z=64;te_add();} //手が壊れいたら新規に登録
tu=te[5*x+3]; //指し手の記録総数

if(tu==0){  指し手が0ならば
if(td==1){ ・・・ }  2度指し手が0なら勝敗を記録
else{ ・・・ } 1度指し手が0ならパスで指し進める
}

cn=te[5*x]&63; //現在の手の読み位置
z=te[5*x+3+cn]; //現在の手
situ(); //取れるコマを出す

if(sit[0]==masu[s][ch(F)]){ ・・・ } //すべてのコマが取れるなら勝敗を記録

if((masu[s][0]+masu[s][1])>=63){ ・・・ } //残りのマスが1つだけなら勝敗を記録

if(ha[u]==1){ ・・・ } //手を戻してやってきたとき
hmove();adress(); //手を進めてやってきたとき

FF:;
if(te_deteru)w=tu-1; else w=tu+3; //現局面の手がすべて出ているとき
kar[u+1]=kar[u]+rt[w][cn-1]; //確率の計算(対数を使う)
if((kar[u+1]<0) && (kar[u+1]<lg*(hash[p].k-1))){ //確率が残っていて、まだ指し進めていないとき
hash[p].k=1+(int)(kar[u+1]/lg);move();goto BB;}

468:デフォルトの名無しさん
07/01/30 17:35:09
( ゚д゚)ポカーン

469:1
07/01/30 17:38:13
続き

LL:; //ラベル
if(hash[p].b==N){gote_hyoka();hash_bset(p,y);y=N+1-y;} //後手の評価が未登録ならば評価関数を使って値を記録
else{y=N+1-hash[p].b; //後手の評価が計算済みならばそれを使う
if(y==N+1){・・・} yがN+1ならば先手の勝ち、勝敗を記録する
}

if(y>te_max(x))te_change(); yが記録されている最大値より大きいならば手を交換して値を記録する

if(cn>=tu){ //手のカウントが、手の総数以上のとき
te_add(); //手を追加する
if(z==97){y=te_max(x);hash_bset(x,y);te[5*x]=129;remove();}} //手が追加出来ないときは最大値を、上のルートに記録して手を戻す(βカットというもの?)

if(y>g){if(y>hash[x].a)hash_aset(x,y);te[5*x]++;remove();} //yが予想評価値を超えたなら、それを上のルートに記録して手を戻す(αカットというもの?)

cn++;te[5*x]=128+cn;z=te[5*x+3+cn];situ();hmove();adress();goto FF; //αカット、βカットもおこらないならば次の手を調べる
}

470:デフォルトの名無しさん
07/01/30 17:41:26
ダメだこりゃ。。。

471:デフォルトの名無しさん
07/01/30 17:42:02
ごめんなさい。期待した俺が悪かったです。もうスパゲティーはたくさんです。

472:1
07/01/30 17:42:05
>>461>>466
わかりました
やってみます

473:デフォルトの名無しさん
07/01/30 17:42:42
フローチャート書いてくれね?200倍わかりやすいと思う。

474:1
07/01/30 17:47:53
わかりました
フローチャート書いてみます

475:デフォルトの名無しさん
07/01/30 17:52:47
お前ら釣られ過ぎ。
小学生の相手してても仕方ねーべ。

476:1
07/01/30 18:28:06
フローチャート自動作成ツールはありませんかね?

477:デフォルトの名無しさん
07/01/30 18:38:47
>>BB:  //ラベル

こんな馬鹿なコメントは無いぞw
盤面の初期化とかもっとブロックを表すにふさわしいコメントつけろよw

478:デフォルトの名無しさん
07/01/30 18:39:27
>>467-469
1.ラベルのコメントは、そこからどんな処理をするルーチンが始まるのかを示せ。「//ラベル」は無意味。
2.概要として「αカット、βカットも…」の様な書き方は構わないが、変数名や定数が何を意味しているか分からないのでその詳細が不明。
3.何度もいわれていることではあるが、文ごと(ザックリ言うと;ごと)に改行すべし。
4.変数の使い回しみたいにコメント中の「差し手」も複数の意味で使い回してる?

479:デフォルトの名無しさん
07/01/30 18:41:26
フローチャートは廃れた。

箇条書きの日本語に流れを書け!
いまはこちらが主流。

480:デフォルトの名無しさん
07/01/30 18:42:39
初心者って絶対やるよな。

var = 1 + 1;//計算したものをvarに代入

とか意味の無いコメントw
まぁ、必ず通る道だと思うけどな

481:デフォルトの名無しさん
07/01/30 18:44:38
>>476
べつにそこまでちゃんと書かなくていい。
コメント書かないならどういう流れで処理をしたいのか、それがわかればいいんだから、
手書きで紙に書いてうpでもいいくらい。

とりあえず処理を順番に箇条書きで

482:デフォルトの名無しさん
07/01/30 18:57:18
//αカット、βカットもおこらないならば次の手を調べる
とあるので、上のif文見たけど分岐してない?
よく見るとremove()内で分岐している…

このような書き方は避けるべきだ。
制御構造が分かりづらい。

483:デフォルトの名無しさん
07/01/30 18:59:05
というよりもGOTO&ラベル使うな!

484:デフォルトの名無しさん
07/01/30 19:42:30
そうじゃない、コメントとソースはもういい

まずはアルゴリズムとか処理の流れを日本語で説明するんだ。

485:1
07/01/30 19:53:21
186行目あたりが間違えてました

if((hash[x].h==y) && (k==w)){ad[s+1]=p;break;}
ではなくて


if((hash[p].h==y) && (k==w)){ad[s+1]=p;break;}
でした

486:デフォルトの名無しさん
07/01/30 19:53:56
コンパイルして逆アセンブルしてからのが読みやすいかもしれん

487:デフォルトの名無しさん
07/01/30 20:01:04
スパゲッティをコンパイルしてもスパゲッティしか吐いてくれんよ

488:デフォルトの名無しさん
07/01/30 20:04:16
最適化できないような絡み方してそう

489:デフォルトの名無しさん
07/01/30 20:07:13
ところで、part2になっても期間は三ヶ月以内なのか?
いつまでたっても〆切が来ないぞ

490:デフォルトの名無しさん
07/01/30 22:03:21
いい勝負しそうじゃね?
URLリンク(www0.us.ioccc.org)


491:デフォルトの名無しさん
07/01/31 00:17:32
いきなりプログラム書かずに、日本語で書いてアルゴリズムを整理するべきだろ

492:デフォルトの名無しさん
07/01/31 00:50:37
>>491
1はそれで失敗してるんじゃなかったっけ?

493:デフォルトの名無しさん
07/01/31 00:58:29
お前ら、難読可ツール通したソースに何マジレスしてるんだ?





494:デフォルトの名無しさん
07/01/31 01:11:08
>>491
イメージをつかむため、
ダイアグラムなどを使ってマインドストーミングして、
仕様を日本語で書き、
仕様記述言語で書き、
プログラムを書き、
検証ソフトを使って検証するんだよ

495:デフォルトの名無しさん
07/01/31 02:18:32
面白い・・・

496:デフォルトの名無しさん
07/01/31 04:57:48
C言語初心者のもれも参戦。途中でやめるかも知れないが、生暖かく見守ってくれ。

497:デフォルトの名無しさん
07/01/31 05:16:12
さらに混乱の要素を増やすというのかw
がんばってかき回してくれ

498:デフォルトの名無しさん
07/01/31 06:55:03
>>496
君のような人が現れるのを待ってた
応援するよ

499:デフォルトの名無しさん
07/01/31 11:31:49
みんな、違うぞ

日本語で書いたアルゴリズムを、このスレで後悔しろと言っているんだよ

500:デフォルトの名無しさん
07/01/31 12:10:06
既に紙の上にはまとめてあるって言ってたよね?

501:デフォルトの名無しさん
07/01/31 12:14:13
バグが出ました



アルゴリズムとかかけ



バグ直りました


この流れから、アルゴリズムとか書けって言われたのは、バグ直すためだとおもってるんじゃね?
だから書かないんじゃね

502:デフォルトの名無しさん
07/01/31 12:27:12
能力が無いのに努力しないで言い訳ばかり
人とコミュニケーションが全くできない
自分の間違いを指摘されても正さない
人を見下している
平気で嘘をつく
1を見てるとイライラするね

503:デフォルトの名無しさん
07/01/31 12:29:21
1は小学生か幼稚園児だろ
大目に見てやれよ

504:デフォルトの名無しさん
07/01/31 12:35:18
まあ、>>1が小学生であろうと幼稚園児であろうと一向に構わないが、
とりあえず公の場でやると宣言したからには必ずやり遂げてもらわないと。
公の場で発言することの重要性を身をもって知ってもらわないとね。

とりあえず、>>1は毎日進行状況を全員に解るように報告しなさい。

505:デフォルトの名無しさん
07/01/31 12:44:58
>>496
本気ならトリ付きで。

506:デフォルトの名無しさん
07/01/31 13:00:19
>>496
1と同じ事されるのはごめんだけどやめても別に責めないよ
ところでC言語はどれくらい勉強したの?

507:デフォルトの名無しさん
07/01/31 13:00:41
誰か、1 に見本として見せられるような、日本語の良コメントのついたソース知らない?

508:デフォルトの名無しさん
07/01/31 13:02:52
どうせ見ないんじゃない?
論文教えても見なかった前科があるし

509:デフォルトの名無しさん
07/01/31 13:13:08
URLリンク(homepage1.nifty.com)
URLリンク(ja.wikipedia.org)(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
URLリンク(homepage2.nifty.com)
コメントの書き方でとりあえずこの辺りは参考になると思う

510:デフォルトの名無しさん
07/01/31 17:12:44
何この1www
プログラムも人間性もカスじゃんww

511:デフォルトの名無しさん
07/01/31 17:21:59
>>510
アルゴリズム・理論もね

512:デフォルトの名無しさん
07/01/31 22:51:46
>>1どこいった

513:デフォルトの名無しさん
07/01/31 23:44:34
今北産業

514:デフォルトの名無しさん
07/02/01 01:22:37
>>1最強のアルゴリズムできた→
goto多用、変数不明、コメントなしのスパゲッティ→
>>502>>1を温かく見守るスレ

515:デフォルトの名無しさん
07/02/01 05:18:41
プログラムよりプログラマがおもしろい

516:デフォルトの名無しさん
07/02/01 09:09:46
無能な1とそれに翻弄される住人達

517:デフォルトの名無しさん
07/02/01 14:46:59
>>1は準アニータ

518:デフォルトの名無しさん
07/02/01 16:21:14
ここ落ちてた?

519:デフォルトの名無しさん
07/02/01 16:22:04
2ch全部ね

520:デフォルトの名無しさん
07/02/01 17:01:42
電源工事だよ

521:496 ◆8VT5lt6VLs
07/02/01 22:27:06
>>498
ありがとう。期待に沿えるかわからないが。

>>505
いまのところ本気。

>>506
どう答えればいいのかな・・・。1のソースが理解できないぐらい。

522:デフォルトの名無しさん
07/02/01 22:33:15
>>521
1のソースは読まないほうがいいよ。
あれは悪い例だから決して真似しちゃだめだよ。

523:デフォルトの名無しさん
07/02/01 22:35:23
>>521
何か読んでる本とかサイトはある?
変数宣言とか条件分岐やループはわかる?
キーボードやファイルの入出力は?

524:496 ◆8VT5lt6VLs
07/02/01 22:57:41
>>522
了解しますた。

>>523
制御文、ポインタ、関数、構造体あたりは理解できます。
逆にキーボードやファイルの入出力が怪しい・・・。
よく見るサイトは
URLリンク(wisdom.sakura.ne.jp)

525:デフォルトの名無しさん
07/02/01 23:07:20
なるほど。
そこのC言語入門は一通り読み終えたのかな?
じゃあまず8x8マス分の黒・白・空の情報を持つ盤と
座標を引数として渡せば盤の石を返す関数を作ってみて。
まずは正しく動くように気をつけて書く

526:デフォルトの名無しさん
07/02/02 01:35:55
なんか面白そうだな
がんがれ>>496

527:デフォルトの名無しさん
07/02/02 03:34:50
期待age

528:496 ◆8VT5lt6VLs
07/02/02 12:03:56
できますた。突っ込み待ってまつ。
URLリンク(ud.gs)
パスは鳥

529:デフォルトの名無しさん
07/02/02 12:07:50
>>528
おつ。
言われた以上の事をやってるな。
けっこうできるんじゃん。

530:デフォルトの名無しさん
07/02/02 13:01:22
既存のオセロプログラムのソースとか>>7のリンク先とかは読んだ事ある?
なんだか読んだ事がありそうっていうか多少知識がありそうな書き方だね。

531:デフォルトの名無しさん
07/02/02 13:11:21
>>528
パス付きはやめれ
URLリンク(up2moe.moe.hm)

532:デフォルトの名無しさん
07/02/02 13:19:26
>>531
なぜパス付きはだめ?
このスレ見てればわかるのに

533:デフォルトの名無しさん
07/02/02 13:26:32
専ブラで右クリック即保存が出来ない。
逆になんでパス無しではだめ?

534:デフォルトの名無しさん
07/02/02 13:44:42
そんなのアップする人の自由

535:デフォルトの名無しさん
07/02/02 13:54:04
じゃあ聞き方を変えよう。なぜパス付きにしたいの?
特に理由が無いなら >533 とかの事情もあるし、配慮してくれればうれしいのだけど。

536:1
07/02/02 13:58:59
思考ルーチン以外のバグが特定できないため一から作り直します

537:デフォルトの名無しさん
07/02/02 14:03:59
>>535
本人に聞けよ

538:デフォルトの名無しさん
07/02/02 14:08:59
>>535
いずれにしても直リン禁止のアップローダが多いと思うのだけど。

それはさておき、このまま>1が「最強の嗜好ルーチン」とやらを完成させるのと、
>496がみんなの支援を受けつつ充分強いプログラムを完成させるのと、
どっちが見込みある……かは>536が本人かどうかに関わらず明らかだね。

539:デフォルトの名無しさん
07/02/02 14:33:03
>>536
お前もうイラネ

540:デフォルトの名無しさん
07/02/02 16:02:21
>>528
なかなかいいね
この調子で頑張って

541:デフォルトの名無しさん
07/02/02 16:10:42
>>528
探索をするためには盤面を戻す操作も必要だから次はまずこれを実装してね。
ここでコピー方式と差分方式がある。差分がいいと思うけど。
既にやってたりもっと行けそうだと思ったりしたら進みたいとこまで進んでいいよ。

542:デフォルトの名無しさん
07/02/02 16:14:13
ここで衝撃の事実、>>1=>>496、が明かされる

543:デフォルトの名無しさん
07/02/02 16:18:27
それは俺もちょっと思ったけど。
別人でしょ。

544:1
07/02/02 17:45:16
なかなかうまくいかないので、関数の入出力と、それを確認するプログラムを
始めに作ることにする

545:デフォルトの名無しさん
07/02/02 17:47:01
お前誰?
誤爆?

546:デフォルトの名無しさん
07/02/02 18:13:12
>>544
一つ一つの関数を検査する時には仕様どおりに動いても、グローバル変数を使い回す限り、
他の関数と組み合わさった時に認識困難で追跡困難、修正困難なバグがいくつも出てくるよ。

547:デフォルトの名無しさん
07/02/02 18:33:42
1が作る限り確認プログラムにも必ずバグが入る

548:デフォルトの名無しさん
07/02/02 18:47:57
test


549:496 ◆8VT5lt6VLs
07/02/02 19:02:09
>>529,540
ありがとう。そう言ってもらえるとうれしい。

>>530
>>1,7の日本語のページはどれも読んだことあります。英文はどんどん後回しに・・・。
ソースは Thell と Zebra をちらっと見た程度でつ。

>>531
このスレ見てない人に見られるのはちょっと抵抗が・・・。

>>538
そのためにはまだ知識不足なもよう(´・ω・`)

>>541
いま作ってる方法だと、1回分の着手場所と差分を記録するだけで10ワードにもなるんだ。
このどんぶり勘定が後々響いてきそうな悪寒。もっかい検討してみます。

>>542,543
スレへの出現の仕方とか似てますね。いや、別人ですが。


550:デフォルトの名無しさん
07/02/02 19:35:02
>>549
着手場所と、それぞれの方向への反転個数だけ記録すればでいいのでは。
どの方向も0~6までの値しかとらないので、構造体にしてビットフィールド指定すれば
3bit*(8+2)=30bit = 1dword で済む気がする。

551:デフォルトの名無しさん
07/02/02 21:07:15
ダウンロードができないよ。

552:デフォルトの名無しさん
07/02/02 21:32:51
俺も>>528が落ちない
うpろだ死んでる?

553:デフォルトの名無しさん
07/02/02 21:34:44
>>1のソースと比べると雲泥の差だな

554:デフォルトの名無しさん
07/02/02 21:39:30
>>551-552
>>531 にコピーがある

555:デフォルトの名無しさん
07/02/02 22:24:38
>>554
サンクス。
落とせた。

556:デフォルトの名無しさん
07/02/02 23:58:45
レジスタ使わないほうが速いな。

Core2は同時に使用するレジスタ数が少ないと非常に高いパフォーマンスを発揮する。
しかしレジスタ数が増えるとパフォーマンスは劇的に低下する。
整数レジスタが3個+メモリ参照が1個+条件分岐命令が1個の場合、5命令同時に
1クロックで実行を完了する。しかし整数レジスタへのアクセスが1つ増えると処理に
かかるクロックが1クロック増加する(すなわち性能が半分になる)。

557:デフォルトの名無しさん
07/02/03 00:04:26
>>556
その手の話題はこちらへどうぞ

x86命令の所要クロック計測スレPart3
スレリンク(tech板)

558:1
07/02/03 00:53:47
オセロだけではなく、将棋、囲碁プログラム再生用のチェックプログラムを
作ってやるぜ!これでみなさん作成がらくになりますよ

559:1
07/02/03 00:55:41
作成でした

560:デフォルトの名無しさん
07/02/03 01:39:07
>>556
最適化の前に、まずは動くものを作るべきだろ

561:デフォルトの名無しさん
07/02/03 09:46:07
>>496
Minimax法とNegamax法の違いは理解してる?
αβ法をそれぞれの方式で書ける?

562:デフォルトの名無しさん
07/02/03 21:36:57
ぐぐってみたが、なかなか面白そうだな
俺も作ってみるか

563:デフォルトの名無しさん
07/02/03 22:28:55
>>562
作る人はトリ付けてね
がんばれ

564:496 ◆8VT5lt6VLs
07/02/04 03:39:38
>>550
良い案ありがとう。
色々考えたけど、縦型探索時に記録するのはそれまでの枝の評価値の最大値と、その枝
への経路(差分)のみであって、全ての枝への経路を記録するは必要ないという結論に。
したがってある1経路の記憶容量が多少多くても全体への影響はないと思われます。
横型探索だとそうもいかない気がしますが、当面はこの方向で行こうかと。
もしかしてアホなこと言ってたら訂正願います・・・。

>>556
ガリガリチューンは一番面白そうなとこですが、プログラムがもう少し形になってからで・・・。

>>560
ごもっともです(´・ω・`)

>>561
わかります。ただ書けるかどうかとは別問題だと思うんで、考えながら書いてみまつ。

>>562
作る人が何人か出てきて、対戦させたりすると面白そう。おれが言うのもなんだが、がんばれ。

565:デフォルトの名無しさん
07/02/04 04:16:17
俺も少し作ってみたんだが、なんか弱い
探索部分にバグがあるのかなぁ

566:565
07/02/04 04:19:11
「リバーシのアルゴリズム」って本を読んでます
難しいことはまだ取り入れてませんが・・・

567:デフォルトの名無しさん
07/02/04 05:48:50
対戦用にGUIで盤面作ろうかな、
と思ったんだけど需要はあるのかな?
各オセロプログラムはdllで作ってもらって、
コンボボックスか何かで選択可能みたいな形で…。

568:デフォルトの名無しさん
07/02/04 06:51:14
BearRev Professional でdll自作可能って書いてあるみたい
使ったことないからわからんけど

もしGUI作ってくれるならオープンソースがいいな

569:デフォルトの名無しさん
07/02/04 08:48:22
>>1は?

570:1
07/02/04 10:17:29
ほっといてください

571:デフォルトの名無しさん
07/02/04 14:15:26
>>570
ちゃんと人間やめとけよ

572:デフォルトの名無しさん
07/02/04 18:50:37
動物にエサを与えないでください
かわいそうと思ってもみんなが迷惑します

573:デフォルトの名無しさん
07/02/04 18:54:51
>>566
僕もそれ読んだことがあります。
次は「リバーシプログラムの作り方」っていうシェアウェアを読もうと思ってます。
まだ序盤のサンプルしか読んでませんけど、パターン評価やMPCについては
こっちのほうが詳しそうなので送金して全部読むつもりです。
一応紹介。
URLリンク(hp.vector.co.jp)


574:デフォルトの名無しさん
07/02/04 22:59:34
誰かPart1のログ持ってる?
持ってたらうpして欲しいんだけど

575:デフォルトの名無しさん
07/02/04 23:09:24
たいして面白くないよ。

576:デフォルトの名無しさん
07/02/04 23:10:04
>>574
URLリンク(makimo.to)

577:デフォルトの名無しさん
07/02/04 23:13:53
ソースなんて説明とともにたくさん落ちてるだろ

578:デフォルトの名無しさん
07/02/04 23:16:55
おーありがとう
今から読む

579:デフォルトの名無しさん
07/02/04 23:27:54
pdfとかより本のほうが読みやすいお

580:デフォルトの名無しさん
07/02/04 23:50:03
「リバーシのアルゴリズム」の本は入門用にはいいんだけどね
トップレベルのプログラムを作るには情報が足りないんだよな
壁を越えるにはBuroの論文は必読

581:デフォルトの名無しさん
07/02/05 05:11:55
このスレには馬鹿どもが、しかももったいぶった馬鹿どもがうようよしている。
同じ馬鹿でも偉ぶった馬鹿ほど鼻持ちならないものはない。
普通の馬鹿なら話もできるし、助けてやることもできよう。
しかし自分の馬鹿さ加減を隠すため、
偉そうなでたらめを並べ立てて人を恐れ入らせようとするようなもったいぶった馬鹿だけは、
僕は絶対に我慢できない!
普通の馬鹿はいかさま師ではない。
正直な馬鹿は結構だ。
だが不正直な馬鹿となると始末におえない。
このスレで見たのは、この種の威張り腐った馬鹿どもの群れなのだから僕はすっかり頭にきてしまった。
だからもう決してこのスレを見ないつもりだ。

582:デフォルトの名無しさん
07/02/05 05:37:07
おつかれさん

583:デフォルトの名無しさん
07/02/05 08:00:57
>>581=>>1
逃げたの?


584:デフォルトの名無しさん
07/02/05 08:26:48
やっぱり1は最低だな

585:デフォルトの名無しさん
07/02/05 12:28:13
>>573
読んだらレビューよろ

586:デフォルトの名無しさん
07/02/05 18:47:46
>>581は、
URLリンク(boss.noppo.org)
に乗ってる本?の改変。つまり誰かのねた。

587:デフォルトの名無しさん
07/02/05 19:05:06
ファインマンもこんなことを言うんだね。
子供っぽいw

588:デフォルトの名無しさん
07/02/05 19:25:57
いや、ファインマンほど子供っぽいノーベル賞受賞者はいないんじゃまいか

589:デフォルトの名無しさん
07/02/05 19:48:55
アインシュタインも結構子供っぽいと思うぞー
URLリンク(www.spacepark.city.koriyama.fukushima.jp)

590:デフォルトの名無しさん
07/02/05 19:49:46
つまり、お前らが普段大人っぽいと思っているスタイルは、ただの馬鹿だったりするわけだ

591:デフォルトの名無しさん
07/02/05 20:06:14
逆じゃないか?
才能があったら大人っぽくしなくてもいいんだよ。
凡人が子供っぽくしてたら…

592:デフォルトの名無しさん
07/02/05 20:07:28
そうではありません。
バカと天才は紙一重と言われる所以はスタイルが似ているからです。
大人っぽいスタイルは凡庸な人です。

593:デフォルトの名無しさん
07/02/05 20:13:41
つまり裸の大将のスタイルがベストだと…

594:デフォルトの名無しさん
07/02/05 20:25:28
アインシュタインはアスペルガー症候群だから、子供っぽいところは仕方がない。

595:デフォルトの名無しさん
07/02/05 20:33:16
1が来ないから雑談が続く

596:デフォルトの名無しさん
07/02/05 21:10:11
>>585
今日送金しました。ライセンスキーが来てないのでまだ読んでませんけど。
レビューですか・・そういうの苦手なんですけど・・。
作者は日本のコンピュータオセロ界で3本の指には入る
実力の持ち主なので間違いなく良いだろうと思います。
僕は彼がトップだと思ってるんですけどね。
でもこんな風に考えてる僕ですから
レビューもバイアスが掛かったものになるかもしれません。

597:デフォルトの名無しさん
07/02/06 03:03:05
>>596
バイアス上等。楽しみに待ってるよ。

598:デフォルトの名無しさん
07/02/06 12:59:32
c++の機能を使って作り直しているんだけど
下から2行目を実現するにはどうしたらいいですか?


class board {
unsigned char bd[2][8];
public:
board(){for(int i=0;i<2;i++)for(int j=0;j<8;j++)bd[i][j]=0;bd[0][3]=16;bd[0][4]=8;bd[1][3]=8;bd[1][4]=16;}
board& operator=(board& x){for(int i=0;i<2;i++)for(int j=0;j<8;j++)bd[i][j]=x.bd[i][j];return *this;}
int operator()(int z){int m,n;m=z/8;n=z-8*m;return (((bd[0][m]>>n)&1)+2*((bd[1][m]>>n)&1));}
};


main(){
board bord;
printf("%d\n",bord(27));

//  bord(27)=1; 0は空 1は黒 2は白
}

599:1
07/02/06 13:00:22
>>598は1です

600:1
07/02/06 13:05:49
bord=1だったら、board& operator=(int n)で出来ますよね

これに括弧を付けるにはどうしたら?

601:デフォルトの名無しさん
07/02/06 15:32:34
何このわけわかんないオペレーターオーバーロード

602:デフォルトの名無しさん
07/02/06 15:32:35
>>598-600
boardクラスにset()関数でも作ってみては?
board& set(int index, char color) { bd[…]=color; }
こんなの。

あと、変数名が訳分からんのが昔のままだからそこも直しておくれ。

603:デフォルトの名無しさん
07/02/06 15:37:51
動物にエサを与えないでください
かわいそうと思ってもみんなが迷惑します

604:1
07/02/06 19:06:09
>>602
わかりました!そうしてみます

605:デフォルトの名無しさん
07/02/06 19:29:43
相変わらずゴミを生産してますね。

誰も読む気がしないだろ。

インデント覚えろカス。

606:デフォルトの名無しさん
07/02/06 19:58:50
1 は幼稚園児なのか小学生なのかは知らないが釣りとしか思えない。

607:デフォルトの名無しさん
07/02/06 20:00:47
スルーしとけ。
お前らスルー憶えろ。

608:1
07/02/06 20:41:44
どう直したらいいのか書いてくれ
598だと

609:デフォルトの名無しさん
07/02/06 20:46:43
厳しい助言

このスレみてみろ。
スレリンク(tech板)
誰もお前みたいな書き方してないぞ。
このスレ見て勉強しろ。


610:デフォルトの名無しさん
07/02/06 21:09:32
>>496
はかどってますかー?
どんな感じー?

611:デフォルトの名無しさん
07/02/06 21:10:27
>>565
強くなったかいー?

612:デフォルトの名無しさん
07/02/06 21:43:19
「リバーシのアルゴリズム」を注文した
まずはこれ読んでみようと思う

613:デフォルトの名無しさん
07/02/06 21:45:44
>>598
なんで二重ループとか単純でないメンバ関数を一行で書くかなこの人は。

614:1
07/02/06 21:50:49
>>613
どこまでがひとつの関数(処理)なのかが一目瞭然だよ?

615:デフォルトの名無しさん
07/02/06 21:57:46
ねーよwww

616:1
07/02/06 21:58:58
>>614は偽者です
誰か>>598を直してもらえませんかね?

617:496 ◆8VT5lt6VLs
07/02/06 22:09:58
>>565
作成の話題が出たと思ったら、すでに漏れの斜め上を進んでおられるようでつね・・・(´・ω・`)

>>567
面白そう。DLLをみんなで何パターンか作れれば良いと思うがどうだろう。

>>610
あんましはかどってないです。とりあえずαβ法を実装したところです。
いまは序中盤の評価関数のことで頭がいっぱい・・・。問題の解がないぶん、終盤よりはるかに難しいです。

あと今日の時点のソースでつ。変な部分にはどうか突っ込みお願いします。
URLリンク(ud.gs)
パスは前回と同じで、鳥です。

618:デフォルトの名無しさん
07/02/06 22:13:22
将棋だとGUIにCSA将棋とか何とか言うのがあるんだが
あれを規範に、リバーシもGUIだけ誰かつくらないものか。

619:1
07/02/06 22:14:53
>>1

BearRev Professional は高機能リバーシです。
以下の特徴があります

対局者は DLL として自作可能
デザインや音はカスタマイズ可能


URLリンク(www20.pos.to)

620:デフォルトの名無しさん
07/02/06 22:27:55
>>619
ああ、すごくいいじゃないか。
1に書いてあったな。それはすまなかった。

1は意外なところで役に立ったな。

621:デフォルトの名無しさん
07/02/06 22:30:53
>>617
おつ。
ざっと見たけどいい感じ。
素直な実装だね。
次は中盤評価関数か終盤解析?

622:デフォルトの名無しさん
07/02/06 23:28:41
左辺値と右辺値を知らないのか?

623:496 ◆8VT5lt6VLs
07/02/06 23:37:25
>>621
ありがとう。
とりあえず間に合わせで序中盤の評価関数を書いておき、一定の水準で思考できるようになったあたりで
いろいろと手を広げてみようかなと。
終盤は今の状態に、さらに序中盤の評価関数で使うネタを加味しようと思っています。
ネタ? これから考えますorz

624:デフォルトの名無しさん
07/02/07 00:02:14
>>616
URLリンク(up2moe.moe.hm)

625:1
07/02/07 00:15:13
>>624
ありがとう
でもよくわからないので今までのソースでいく

626:デフォルトの名無しさん
07/02/07 00:17:51
>>625
\(^o^)/モウダメポ

627:デフォルトの名無しさん
07/02/07 00:18:12
>>625
(・д・)ポカーン

628:デフォルトの名無しさん
07/02/07 00:28:39
>>625
これはさすがにネタ or 偽者だろ

629:デフォルトの名無しさん
07/02/07 00:30:48
>>1
お前はまだC++に手出すのは早い
Cでどんなコードが出るのか,C++だとどうなのか,
自分の眼で確かめられるだけのハードの知識を付けてからに汁

630:デフォルトの名無しさん
07/02/07 05:19:59
我流初心者なんてそんなもんだ

631:デフォルトの名無しさん
07/02/07 05:40:02
1はわざと阿呆のふりをして、「これくらいだったら俺のほうが良いものができそうだ」と
思わせるのに徹しているのかも知れない。だとしたら1は天才!!



本当はただの天然なんだろうけどよ('A`)

632:デフォルトの名無しさん
07/02/07 05:55:20
大学院いってても、基本的な部分で馬鹿だとこうなるって
見本のようなヤツだ

633:デフォルトの名無しさん
07/02/07 06:10:29
俺はこのスレで紹介されてるもののどれかの作者が、宣伝のために
馬鹿な1を演じているんじゃないかとか勘ぐってしまった。

634:デフォルトの名無しさん
07/02/07 12:14:36
>617 URLリンク(up2moe.moe.hm)

635:デフォルトの名無しさん
07/02/07 13:58:34
>>617
DLできなかったので>>634からDL

int Search( ---, int mover, int rival, --- ) としておいて、
相手番を探索する時は
tmp = Search( ---, rival, mover, --- ); で呼ぶのはどうだろう?

あるいは、
#define EDGE (3)
rival = mover ^ EDGE;

出来るだけ「色を意識しない」つくりのほうがいいと思う。

>>634
.zipの中に.zipがあるみたいで、同フォルダで解凍すると上書きして壊してしまうみたい。


636:デフォルトの名無しさん
07/02/07 14:22:31
rival = BLACK + WHITE - mover;

637:デフォルトの名無しさん
07/02/07 15:01:36
関数にしちゃダメ?

rival = getRival(mover);

int getRival(int mover){
if(mover == BLACK) rival = WHITE;
else rival = BLACK;
}

638:デフォルトの名無しさん
07/02/07 15:39:49
int getRival(int mover){
if(mover == BLACK)
return WHITE;
return BLACK;
}


639:デフォルトの名無しさん
07/02/07 15:43:51
アホデスカ

640:デフォルトの名無しさん
07/02/07 15:50:34
アホデスネ

641:デフォルトの名無しさん
07/02/07 17:00:49
どなたかMOUSE(µ)アルゴリズムを試す人は居ませんか?
URLリンク(www.tournavitis.de)

642:デフォルトの名無しさん
07/02/07 18:59:38
>>617
今は問題ないけどSearch関数内のtmp=-1ってのが気になった

それとNegaMaxにした方が場合分けが無くなっていいかなと

643:496 ◆8VT5lt6VLs
07/02/07 22:02:58
>>634
うpろだドットネットはたまに落ちてるときありますね・・・。
短縮URLを使ってるので、そのときに(たぶん)発生するリダイレクトが原因で見れないのかも。
もふもふろだはパス付きzipが不可な点が気になりまつ。zipの中にパス付きzip入れときゃ良い気もしますが。

>>635
EDGE などの定数の実際の値は、まだ考慮の余地がある気がするので、とりあえず
rival = mover ^ (BLACK ^ WHITE) としとけば良いでしょうか?

>>642
NegaMax法良いでつね。移行してみます。
tmp = -1; だと、もしやまずい点が?
mover のパスの処理について良い案が浮かばず、このようになってしまいますた・・・。

644:496 ◆8VT5lt6VLs
07/02/07 22:12:12
>>637>>638
>>643の方法と合わせて、関数っぽいマクロにしときまつ。

645:デフォルトの名無しさん
07/02/07 22:17:18
636がよくない?

646:デフォルトの名無しさん
07/02/07 22:32:45
>>645
同意

647:496 ◆8VT5lt6VLs
07/02/07 22:37:47
見落としてますたorz
そうします。

648:デフォルトの名無しさん
07/02/07 22:39:28
>>643
Zebra(URLリンク(radagast.se))の
Writing an Othello program ページの下のほうに
Some source code の Basic endgame solver欄があって、
終盤解析のソースが2つDLできるよ(endgame.c と、リンク先にsolver.1-4.zip)。
すでにDL済みなら、ゴメン。

649:648
07/02/07 22:42:43
訂正
URLリンク(radagast.se)

リンクに括弧がくっついちゃった。

650:デフォルトの名無しさん
07/02/08 00:51:28
「リバーシプログラムの作り方」をざっと読んでみました。
これに同梱されてるプログラムは強化学習を使っていて
自動対局・学習でどんどん強くなるんですね。
文章はこのプログラムのソースコードの解説が基本ですが
最初はシンプルな実装で動くものを作る所から始めて
後から機能を追加したり書き換えたりする構成で
よく系統立てられていると思います。
内容的にも必要な基本技術が一通りそろっていますが、
個人的には置換表を導入するところも解説してほしかったですね。
評価関数の作成で強化学習を適用しているところと各所での高速化の手法や
MPCの部分がとても勉強になりました。
MPCについてはここまで詳しく解説している日本語文献は無いと思います。
さらに改善可能な箇所も挙げられていて各人で工夫する余地が示されています。
皆さんもこれを読む事をお勧めします。
これからまたじっくり読みます。

651:デフォルトの名無しさん
07/02/08 15:19:59
「リバーシプログラムの作り方」を読みました。ソースコードの解説が主ですが
シンプルな実装から始めていき、機能を追加する構成になっています。
基本技術が一通り説明されていますが置換表の解説はありません。
強化学習により評価関数を作成する部分と各所の高速化の手法、MPCの部分が勉強になりました。

652:デフォルトの名無しさん
07/02/08 19:19:26
レビュー乙
でもなぜ2回・・・

653:デフォルトの名無しさん
07/02/08 19:47:29
多分 
>>650が黒番
>>651が白番

654:デフォルトの名無しさん
07/02/08 20:06:20
>>651はバイアスが掛かってると思った部分を除いたり何かして
誰かが書き直したものでしょう

655:デフォルトの名無しさん
07/02/08 21:17:23
>>651>>1なんじゃね?


656:デフォルトの名無しさん
07/02/08 22:01:57
実際に有効かは分からないが,使えそうな配列を見つけたので貼っとく.

int base[] =
{0,14,5,1,19,8,16,24,32,54,37,33,67,48,64,80,
96,110,101,97,131,104,128,136,160,198,165,161,227,192,224,2464,
256,270,261,257,275,264,272,280,320,342,325,321,387,336,384,400,
448,462,453,449,515,456,512,520,576,646,581,577,707,640,704,7744,
768,782,773,769,787,776,784,792,800,822,805,801,899,816,896,912,
928,942,933,929,1027,936,1024,1032,1056,1158,1061,1057,1187,1152,1184,2432,
1280,1294,1285,1281,1299,1288,1296,1304,1408,1430,1413,1409,1539,1424,1536,1552,
1664,1678,1669,1665,1795,1672,1792,1800,1920,2054,1925,1921,2179,2048,2176,2304,
2560,2574,2565,2561,2579,2568,2576,2584,2592,2614,2597,2593,2627,2608,2624,2640,
2656,2670,2661,2657,2819,2664,2816,2824,2848,2886,2853,2849,2915,2880,2912,7456,
3072,3086,3077,3073,3091,3080,3088,3096,3136,3158,3141,3137,3331,3152,3328,3344,
3392,3406,3397,3393,3587,3400,3584,3592,3648,3846,3653,3649,3907,3840,3904,7680,
4096,4110,4101,4097,4115,4104,4112,4120,4128,4150,4133,4129,4355,4144,4352,4368,
4384,4398,4389,4385,4611,4392,4608,4616,4640,4870,4645,4641,4899,4864,4896,7424,
5120,5134,5125,5121,5139,5128,5136,5144,5376,5398,5381,5377,5635,5392,5632,5648,
5888,5902,5893,5889,6147,5896,6144,6152,6400,6662,6405,6401,6915,6656,6912,7168};

この配列は2つの1バイトのビットパターン b,w (b&w == 0) に対して
(int) r = base[b|w]+b (or base[b|w]+w)
を重複なく定める.
可能なパターン数3^8=6561に対して,rのとりうる値は[0, 7872)なので
濃度は83%強.もっと圧縮する方法があるのかもしれないが,俺にはもうムリポ

あと,単純なリバーシを作ってみたんだけど,zip貼るのに適したロダってある?


657:デフォルトの名無しさん
07/02/08 22:27:25
>>656
パスとか暗号とか言い出さなければ、もふろだでいいんじゃね?
URLリンク(up2moe.moe.hm)

C/C++のソースなら、元々ソースコード用の↓でもいいし。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

どちらも直リンが通り、過負荷でDL出来なかった経験がない所がありがたい。

658:デフォルトの名無しさん
07/02/08 22:37:45
>>656
よくわからんのだが、これはbitboardにして辺の評価に使うんか?

659:デフォルトの名無しさん
07/02/08 22:53:49
>>656
どこでもいんじゃね?見る側がとやかく言うこともないだろ。好きなとこでいいよ
>>658
ハッシュじゃないか?違うかもしれんが



660:656
07/02/08 23:50:37
>657 thx
まだ単純なαβと寄せ集めの評価関数を実装したレベル(処理量の都合で6手読みまで)
URLリンク(up2moe.moe.hm)

LinuxでGNU makeがあればmakeでいけるはずだけど,色々怪しい動きをしてるから
問題があるかもしれない.
最悪全てのソース(.cc),ヘッダ(.hh)を一ヶ所に集めてまとめてC++コンパイラに
かければ大丈夫だと思う.拡張子がマイナーなのは申し訳ない.

>658,659
一応ハッシュの一種.
単射性を損ねずにどこまで処理量と空間量を削れるかに挑戦してた.
(まだ試してないけど)

661:デフォルトの名無しさん
07/02/09 00:05:47
>>660
落ちてる?DLできないんだが

662:デフォルトの名無しさん
07/02/09 00:32:32
>>661
普通に開けたけど。

663:デフォルトの名無しさん
07/02/09 00:45:06
俺の場合はDLしてもファイルが壊れてて解凍できないって出る

664:661
07/02/09 00:50:58
>>662
サンクス!今試したらDLできた
しかし解凍してもファイルが出てこんぞ。。。当方+Lhaca1.20使用
ちなみにエラーは出てない

665:デフォルトの名無しさん
07/02/09 00:53:38
普通に解凍すると、「q669」ファイルが出てくる
.zipにリネームしたら更に解凍出来た。
Lhaplus1.52使用

666:デフォルトの名無しさん
07/02/09 00:55:48
ちょ、ナニコレw 

% file q669.zip
q669.zip: gzip compressed data, from Unix

% mv q669.zip q669.gz
% gzip -d q669.gz
% file q669
q669: Zip archive data, at least v1.0 to extract

%

667:デフォルトの名無しさん
07/02/09 01:05:19
二重に圧縮してるのか
解凍できた

668:661
07/02/09 01:09:29
+Lhacaには荷が重かったなw
>>666を参考にcygwin経由で無事解凍

669:1
07/02/09 11:14:09
ちゃんとうごいていないけどNewバージョン

URLリンク(up2moe.moe.hm)

670:1
07/02/09 11:16:12
なるべくグローバル変数を減らして、共有変数を減らしました
関数はほとんど値渡しにしました
でもまだ、動かない 

671:デフォルトの名無しさん
07/02/09 12:30:55
うん、一生動かなくて良いよ

672:デフォルトの名無しさん
07/02/09 12:44:06
>>660
落とせないです><

673:デフォルトの名無しさん
07/02/09 13:34:04
>>672
例の二重圧縮に引っかかってるのでは?

674:デフォルトの名無しさん
07/02/09 14:31:04
落とせた
ざっとしか見てないけど読みやすい
1にも読んで欲しい

675:デフォルトの名無しさん
07/02/09 15:41:00
>1は1からと言わず0から書き直した方がいいな。

676:デフォルトの名無しさん
07/02/09 17:32:17
一旦今までのコードを破棄するのは賛成だが、
すぐにまた書き始めても同じようなものができるだけ。
その前にもっと勉強すべき。
目的だけでなく手段も。
努力が足りなすぎる。

677:デフォルトの名無しさん
07/02/09 17:53:38
批判するだけじゃなくて代案を持ってくるぐらいの気概がある人間はいないものかね

678:デフォルトの名無しさん
07/02/09 18:15:01
いやぁ、応援したいのはヤマヤマだけど、コードの意味が分からん以上何も手伝えない。
その上で書き直すよう助言しても殆どの場合が無視。これじゃ手伝えないがな。

せめて1の考えてるアルゴリズムが理解できればコーディングはやってみるのだが。

679:デフォルトの名無しさん
07/02/09 18:16:20
まぁ>>1のおかげでリバーシプログラム書く人が出てきたし>>1は役割を全うした
今後このスレで大会とかしたら面白いかもね

680:デフォルトの名無しさん
07/02/09 18:18:55
代案なら以前にちょくちょく出てる
おまえログ見てないor理解してないだろ

681:デフォルトの名無しさん
07/02/09 18:45:18
>>660
ところでこれどうやって遊ぶの?
メイクはできたんだけど

682:デフォルトの名無しさん
07/02/09 18:57:14
反面教師ってやっぱり必要なんだね。

683:デフォルトの名無しさん
07/02/09 19:19:56
>>660
slideTopLeft() とかって何ですか

684:デフォルトの名無しさん
07/02/09 19:21:54
>>677
>>678

>>616
>>624
>>625

685:デフォルトの名無しさん
07/02/09 19:27:04
一流の釣師なんだよ
他のやつらにやる気を出させてるだろ

686:デフォルトの名無しさん
07/02/09 19:40:14
last move:
O turn
moves: D3 C4 F5 E6

ここでF5とかf5とか56とか打っても何もならないんだけど

687:660
07/02/09 20:01:24
>>686
すまないがちょっと理由が思い付かない.文字関連かも
とりあえず,HumanPlayer.ccの87行目の strToIndex(...) 内の
return r;
の直前に
cout << r << endl;
を挿入してコンパイルした後,F5と入力したときの出力を教えてほしい.

>>683
盤面の斜めラインを縦に並べるための操作.
verticalScan()で全8列の縦方向の着手可能点を一気に求めているので,
それに合わせるために使います.
Boardクラスは遊び半分でやってみた部分が多いので近々書き直すかも

688:デフォルトの名無しさん
07/02/09 20:12:10
F5
-1075227799
こんなだった

689:デフォルトの名無しさん
07/02/09 20:14:49
というかソース読んだらすぐ分かった
int r; を int r = 0; とするか
r += 8*(str[1]-'1'); を r = 8*(str[1]-'1');
とすればいいんだ
これで打てた

690:660
07/02/09 20:30:04
サンクス
普通にバグだったか…orz

ただこの辺はワイド文字とかに対応してないから書き直した方がいいな


691:1
07/02/10 04:38:53
差し手のサーチがうまくいかない...誰かわかりますか?

URLリンク(up2moe.moe.hm)

692:デフォルトの名無しさん
07/02/10 04:44:49
1の考えてるアルゴリズムに問題がある。
期待通りに動かないのは正常。

693:デフォルトの名無しさん
07/02/10 05:00:40
1はプログラミングという手段をずいぶんと軽視しているが
その手段を手段として使えておらずにむしろ足元をすくわれている

694:デフォルトの名無しさん
07/02/10 05:04:01
アルゴリズムを説明してごらん。
問題点を指摘してあげるよ。

695:1
07/02/10 05:11:44
差し手に関数部分だけを抽出しました
どうかよろしくお願いします

URLリンク(up2moe.moe.hm)

696:1
07/02/10 05:15:39
serch(bord ,-1, F) だと新規に
Fの手番で検索します

0番目から順に8方向探索して、
torerusuが1以上ならばそこにおけると判定します




int serch(board bord ,int z, int F){
int w,l;
for(w=z+1;w<64;w++){
fore(l,8)if(torerusu(bord,w,F,l)>0)break;
if(l<8)return w;}return 64;}

697:デフォルトの名無しさん
07/02/10 05:16:36
アルゴリズムの説明はしないの?
説明すれば言ってることと書いてることの違いはわかるけど?

698:デフォルトの名無しさん
07/02/10 07:46:18
1にできると思う?

699:デフォルトの名無しさん
07/02/10 07:52:08
lp[] を作るためのiの初期化に失敗しているような気がする.
(lp[] を作る意図が不明なので「気がする」という表現にしておく.)

考えていることもろくに説明もせずに「誰かわかりますか?」って(ry


700:デフォルトの名無しさん
07/02/10 09:35:43
5 名前:デフォルトの名無しさん[sage] 投稿日:2007/02/06(火) 20:41:01
11 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/18(木) 19:19:37
質問するときに
~したいのですが、上手くいきません。
~したときにエラーが出ます。

という書き方はイクナイ。
何も書いてないのと同じ☆

~したいのですが、~で~が失敗します。
~したときに~エラーが出ます。

隠さずくわしくかきましょう

701:デフォルトの名無しさん
07/02/10 09:42:33
上手くいかない、じゃなくて何がどう上手くいかないか書けよ。
出し惜しみしてんじゃないよ。

コード見たりコンパイルするきないけど、
症状からだけでも判断できる場合がある。

702:デフォルトの名無しさん
07/02/10 09:49:49
インデントの効用
制御構造が一目(言いすぎか?)で分かる。


703:デフォルトの名無しさん
07/02/10 09:59:57
>>702
ちゃんと書かれたソースに関しては、言い過ぎではない。

但し、制御構造さえも置き換えるようなマクロを多用した糞コードでは殆ど無意味。

704:701
07/02/10 10:03:50
w<64って変じゃないか?
あと関係ないけど、
if(torerusu(bord,w,F,l)>0)break;は
if(torerusu(bord,w,F,l))break;でいいんじゃないのか?

serchって取れるかどうかの判断結果だけ返すんだね。
なんか無駄っぽい。

705:デフォルトの名無しさん
07/02/10 10:11:11
どうでもいいが、変数名とかがローマ字なのは痛々しい

706:701
07/02/10 10:15:17
ごめんw<64はあってるっぽい。

707:デフォルトの名無しさん
07/02/10 10:26:25
>>705
でも、変な英語よりはずっといいでしょ。

708:デフォルトの名無しさん
07/02/10 10:37:38
>>702
ついでに改行を適度に入れることの効用.

 デバッガで1行毎に動きを追いかけて動作確認できる.

動作確認しているようなことは伝わってはくるが,
デバッガを使い出したら,あの書き方ではろくに動作確認できんと気が付くはず.

また,下手なマクロを書くとせっかくデバッガがあっても無駄になる.
かえって解りにくく,追いかけにくなるようなマクロを書いてどうするんだと
散々指摘されてるんだけどねぇ.


709:デフォルトの名無しさん
07/02/10 11:10:28
>>1のはindentなどのソース整形ツールで機械的に変えたくなった。

710:デフォルトの名無しさん
07/02/10 11:39:00
無関係な突っ込み
n=z-8*m;

n=z % 8;


711:デフォルトの名無しさん
07/02/10 12:05:30
誰かが言ったようにlp[]の初期化に失敗している。
7行オセロのソースを見ろよ。

712:デフォルトの名無しさん
07/02/10 12:10:32
lp[] ={9,9,9,9,1,7,8,9}
これで大丈夫なのか?

713:デフォルトの名無しさん
07/02/10 12:19:47
int lp[]={-9,-8,-7,-1,1,7,8,9};
で正常に1手目は出た。
llp[]の意味するところがわからんから後はどうなるかわからん。

ごみを生産するんじゃない。


714:デフォルトの名無しさん
07/02/10 12:24:28
デバッガ使いたくないならprintfでもはさんでデバッグやれ。

if(z<64)printf("\n着手可能 %d %d",z/8+1,z%8+1);


715:デフォルトの名無しさん
07/02/10 12:37:18
なぜintにしたか?
それはcharだとデバッガで文字として出てくるから。

716:デフォルトの名無しさん
07/02/10 12:43:38
めんどくさいからそのまま春。
int serch(board bord ,int z, int F)
{
int w,l;
for(w=z+1;w<64;w++)
{

fore(l,8)
{
if(torerusu(bord,w,F,l)>0)return w;//break;なんなの?
}

//if(l<8)return w;これなんだ?
}
return 64;
}


717:デフォルトの名無しさん
07/02/10 13:11:45
質問
mtのfor(;;)for(;;){
って意味あるの?

718:デフォルトの名無しさん
07/02/10 13:31:44
わかった!
continueを知らないだけだ!

719:デフォルトの名無しさん
07/02/10 13:44:10
>>717
break など使うものか!意地でも goto を使うんだ!
という意志の表れと見た。

720:デフォルトの名無しさん
07/02/10 13:48:05
いや、breakで抜けた後もループしたいからforforしてるんだよ。
continueしらないだけ。

721:デフォルトの名無しさん
07/02/10 14:18:57
読み直してみた。たしかに continue を知らないだけのようだ。

722:デフォルトの名無しさん
07/02/10 14:38:09
#define PASS 64

723:デフォルトの名無しさん
07/02/10 14:46:10
少しは努力しろ

724:デフォルトの名無しさん
07/02/10 14:54:56
#define が多いけど、enum は使わないの?

725:デフォルトの名無しさん
07/02/10 14:56:32
単に知らないの

726:1
07/02/10 17:40:47
よりオブジェクト指向で書き直すことにしました ちょっと待っててくださいね

>>699>>713
lpは、周囲のマスを表すんです -9,-8,-7,-1,1,7,8,9となっていればOKなんですが
ここが、間違っていますかね?

>>704
if()は中身が正だったら真なんですか 1だけだと思ってました

>>708
マクロ使う理由は、関数に出来ないからなんですよ
breakとかreturnを使うと呼び出した関数側でリターンしてしまいます(remove()とか)

>>710
%を使うとやたらに鈍くなる可能性があります そこはz&7にした方がいいですね


>>716
すぐにリターンした方がいいですね

>>722
わかりました PASSにします

727:1
07/02/10 17:49:16
みなさんありがとうございました
差し手の生成上手くいきました


fore(l,8){ if(l>3)i=l+1;m=i/3-1;n=i%3-1;lp[l]=8*m+n;}の部分を

fore(l,8){ if(l>3)i=l+1; else i=l;m=i/3-1;n=i%3-1;lp[l]=8*m+n;}

に変更したら上手くいきました

URLリンク(up2moe.moe.hm)

728:デフォルトの名無しさん
07/02/10 17:52:41
暗号解析も進んでるようだねw

729:デフォルトの名無しさん
07/02/10 17:58:59
みんな優しいなあ

730:デフォルトの名無しさん
07/02/10 18:03:07
>>727
問題外のソースの断片を貼らないでください。

731:1
07/02/10 18:30:51
すみません 初歩なんですけど質問です

下のfnc内で他のメンバ関数(ここでは (z,F)ですが) を使いたいんですけど
(z,F)と書けば、呼び出せますか?またAAA()の場合もそのままかけるんでしょうか?


class board {
unsigned int bd[3][2];
public:
int operator()(int z, int F){int m;m=z>>5;z=z&31;return (bd[F][b]>>z)&1;}
int AAA(){}
void fnc() { ・・・}
};

732:デフォルトの名無しさん
07/02/10 18:32:49
日本語でおk

733:1
07/02/10 18:42:33
コンパイルは通るんですが、動作が変です
なぜでしょうか?
24を表示してほしいのですが、4となります


#include <stdio.h>
class board {
int a;
public:
int operator()(int x, int y, int z){return x*y*z;}
int fnc(){return (3,2,4);}

};

main(){
board x;
printf("%d\n",x.fnc());
}

734:1
07/02/10 18:43:51
要約すると、メンバ関数内で、他のメンバ関数を使いたいという事です

735:デフォルトの名無しさん
07/02/10 18:45:08
operator() ってなに?

736:デフォルトの名無しさん
07/02/10 18:48:01
デバッガで1行ずつ実行すればいいんじゃないの?

737:デフォルトの名無しさん
07/02/10 18:49:08
あ、ごめん
そういう内容ではなかったのね

738:デフォルトの名無しさん
07/02/10 18:49:51
デバッガの使い方なんか知らないだろ
だから一行にまとめてしまってるんだし

739:デフォルトの名無しさん
07/02/10 18:50:19
int fnc(){return operator()(3,2,4);}
int fnc(){return (*this)(3,2,4);}

740:デフォルトの名無しさん
07/02/10 18:50:57
エスパーするなら、[]演算子のオーバーロードを勘違いしてるんじゃないかと

>>1は、いったいいつになったら日本語でアルゴリズムを書けるようになるんだろうな。

741:1
07/02/10 18:51:42
>>735
ここです
関数呼び出し演算子
URLリンク(homepage2.nifty.com)

>>736
他のメンバ関数の呼び出し方を知りたいんですが

742:1
07/02/10 18:53:57
>>739
わかりました!ありがとうございます
*thisは省略できるものだと思っていたのですがつけないと駄目みたいですね

743:デフォルトの名無しさん
07/02/10 18:55:49
thisを知らなかっただけだろ

744:1
07/02/10 18:58:55
>>743
727の10行目で使ってますよ

745:デフォルトの名無しさん
07/02/10 19:01:37
>>741
C++ってこんなクソ仕様があるんだ・・・
こんなの使ったら、ホントに作ったやつじゃねーと解読できない
プログラムになっちゃうよ・・・・
とくに、>>1みたいな初心者が、無意味に多用したがるからな

746:デフォルトの名無しさん
07/02/10 19:08:02
意味がわからずに使ってるからバグが入ってるんだよ

747:デフォルトの名無しさん
07/02/10 19:24:22
1ってアルゴリズム考えるのがへたくそだなぁ

748:デフォルトの名無しさん
07/02/10 19:37:53
>>726
lpは各方向のマスへのオフセットだろ。

ifでの真偽は、0で偽それ以外で真。

removeにbreakを入れないほうがイイ。
場合によってcontinueとbreakの使いわけができるようになる。
わけの分からんforを省ける。それとfor(;;cnt++)。

あとremoveの2つ目のreturnの判定は不要じゃないか?
よく分からんけど


749:デフォルトの名無しさん
07/02/10 19:40:15
どんどんいい感じに普通のプログラムになっていってるね

750:デフォルトの名無しさん
07/02/10 19:50:51
どのへんが?

751:デフォルトの名無しさん
07/02/10 19:52:41
serch()

752:デフォルトの名無しさん
07/02/10 19:55:32
aが抜けてるといいたいんだろ。最初から気付いていたよ。
あと board bordとかも。

753:デフォルトの名無しさん
07/02/10 19:55:46
どの角度から見ても普通のプログラムには程遠いけどw

754:デフォルトの名無しさん
07/02/10 19:58:12
うちで直したのは普通に近いよ。
gameクラスにグローバル変数ぶちこんで、susumu、removeも関数に直した。
gotoは直してないけどな…
printfがあちこちにぶち込んであるからぼろぼろだけどな。

755:デフォルトの名無しさん
07/02/10 20:01:06
「普通」の基準が問題なんだなw

756:デフォルトの名無しさん
07/02/10 20:05:46
bord()って使い方もまずいよな。

これって関数風に使う場合だしな。
[ ]のほうがあってると思うけどな。

757:デフォルトの名無しさん
07/02/10 20:48:10
いや、みんなのデバッグが加わったことで
serch()が普通に近づいたってことだろ

758:デフォルトの名無しさん
07/02/10 21:01:19
なんか盛り上がってるなw

759:デフォルトの名無しさん
07/02/10 21:06:46
自分よりレベル低いのが居ると安心してしゃべれるんだろ

760:デフォルトの名無しさん
07/02/10 21:07:48
>726 名前: 1 投稿日: 2007/02/10(土) 17:40:47
>よりオブジェクト指向で書き直すことにしました ちょっと待っててくださいね

それよりも SourceForge あたりにプロジェクト作ってみ?
と言ってみるテスト.


761:デフォルトの名無しさん
07/02/11 16:23:04
1って人間性がダメだな

762:デフォルトの名無しさん
07/02/11 16:26:34
何ですかこの期待はずれなスレは

763:デフォルトの名無しさん
07/02/11 16:49:21
おれにとっては期待以上だ

764:デフォルトの名無しさん
07/02/11 16:57:28
まじめに作ってる人には期待してるよ
まだ結果は出てないし

765:デフォルトの名無しさん
07/02/13 16:36:15
age

766:デフォルトの名無しさん
07/02/13 17:05:19
もう面倒だから打てる場所にランダムに打つルーチンで手を打とうぜ
文字をランダムに出力してシェイクスピアのオセロが完成する確率よりは遥かに大きい確率で勝てるものが作れる

767:デフォルトの名無しさん
07/02/13 17:36:05
うん、君はそれで作れば?

768:デフォルトの名無しさん
07/02/13 17:47:43
俺がポケコンで作ったときは、処理速度が遅いから
打てる中で一番多くひっくり返せる手を選ぶようにした。
思考に数秒かかる。
こんなんでも、それなりに面白い。

769:デフォルトの名無しさん
07/02/13 17:50:18
bitboardとか知らないけど、俺も作ってみよう

770:デフォルトの名無しさん
07/02/13 17:52:09
じゃあ俺はDで作っちゃうぞ

771:デフォルトの名無しさん
07/02/13 18:30:10
じゃあ僕はバッチファイル!


772:デフォルトの名無しさん
07/02/13 21:02:00
2次元配列で作ったけど、1次元が主流なんかな?

773:デフォルトの名無しさん
07/02/13 21:03:51
なんでもいいかと

774:デフォルトの名無しさん
07/02/13 21:18:42
1次元の利点は,
アドレス計算が高速,
関数の値として返せる,
引数の個数が減る,
位かな.絶対有利と言っていいと思う

775:デフォルトの名無しさん
07/02/13 22:00:54
>>774
なるほど。
初めて作ったんだけど、>>496さんのを見て、1次元配列だったからちょっとびっくりした。

776:デフォルトの名無しさん
07/02/13 22:23:17
>>774
8x8なら絶対有利と言うほどはないんじゃないかなぁ。
まあ10x10とかの手法使ってるなら絶対有利かもしれんが。

777:デフォルトの名無しさん
07/02/13 22:54:54
2次元配列はどうも好みじゃない
関数にポインタ渡すときの宣言が嫌い

778:デフォルトの名無しさん
07/02/13 23:06:49
Thellの「強+」って何手読みかな?

779:デフォルトの名無しさん
07/02/13 23:30:20
bitboardにするとundoはやらないでコピーするもんなの?

780:デフォルトの名無しさん
07/02/13 23:47:40
うん、そう。

781:769
07/02/14 00:37:59
ひとまず動くものが出来たので晒してみます
URLリンク(555.sytes.net)





782:デフォルトの名無しさん
07/02/14 00:55:21
GUIキタコレ!

783:デフォルトの名無しさん
07/02/14 00:59:04
おお、お疲れ様です。
いい感じですね。

784:デフォルトの名無しさん
07/02/14 01:04:43
>>781
dllの追加について何かヒントきぼん

785:デフォルトの名無しさん
07/02/14 01:26:02
>>784
.net系の言語でプロジェクトの参照にRevPlugin.dllを追加、
RevPlugin.dll内にあるRev.IPlayerを実装したクラスを一つ以上作る、
それdllにしてPluginフォルダにぶちこむ、
でOKです。

SampleAIプロジェクトのRandomAI.csとかを参考にしてください。


786:デフォルトの名無しさん
07/02/14 01:26:46
>>784
Interfaces.csにインターフェースが定義されてるから
これ実装すればいいんじゃない?
てかソース見てみよう。

787:デフォルトの名無しさん
07/02/14 01:28:50
.NETはパスだな
もまいらがんばってくれ

788:デフォルトの名無しさん
07/02/14 01:30:55
と言うか何語ですかこれ? GUI 部分は別に要らないですが、
思考部分を Unix でコンパイルするにはどうすれば?

789:デフォルトの名無しさん
07/02/14 01:32:20
>>788
C#ていう言語。
monoで使えるかも?

790:デフォルトの名無しさん
07/02/14 01:34:12
>>789
C# と mono ですか。調べてみます。㌧

791:デフォルトの名無しさん
07/02/14 01:40:13
僕もC#でプログラムを作ってたのでちょうどいいですね。
独自のGUIも既にありますけど、
これに対応すれば他の人が作ったのと対戦しやすそうですね。

792:デフォルトの名無しさん
07/02/14 01:46:41
>>788
AIは適当に作った物なのでコンパイルする価値無いかも・・・


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch