[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 22:06 / Filesize : 112 KB / Number-of Response : 443
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C言語で素晴らしいオセロを作らないか?



1 名前:デフォルトの名無しさん mailto:sage [04/06/23 17:34]
素晴らしいものだぞ

263 名前:jyo mailto:jyo-kaikoku@hotmail.co.jp [2006/08/21(月) 13:47:30 ]
誰が教えって下さい。お願い致します。
計算トレーニングプログラムを作成したいですが?
計算は、足し算、引き算、掛け算、割り算を選択する。
桁数は1桁、2桁をはじめに選択する。
計算式の数値はランダムで表示する。
計算式及び、答えを配列に保存し、終了後に全て計算式と答えを表示する。
問題は10問とする。
そのときの点数を表示する。
結果表示の時、一緒にかかった時間も表示する


264 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 15:12:00 ]
>>263
日本語でok

265 名前:258 [2006/08/21(月) 15:34:49 ]
で今迷ってるのは 掲示板でIPアドレスをやり取りして戦うのか
サーバーを用意して自動で取得するのかどっちかなんだよな

リバーシみんなオンラインもサーバーを使ってるけど
それじゃp2pの意味がない。

無料サーバー使うわけにもいかないしなw


266 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 02:42:58 ]
daichatとか言う名前のp2pのチャットソフトがあるから見てみたら?
場合によっては、プロトコルをそのまま使えるかもよ。

267 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 10:04:41 ]
>>266
258ではないが検索しても見つからんぞ
URL教えて栗

268 名前:266 mailto:sage [2006/08/22(火) 23:55:19 ]
>>267
ゴメン、確かに見つからない。
漏れのディスクのバックアップ中からも見つからないからどこから入手したか判らないや。
#何度かディスクを飛ばしているから、ロストした可能性が高いと言えば高いのだが。

269 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 03:56:10 ]
使うとよさそうな技法のキーワード
・BitBoard
・MTD(f)
・Mobility
・パターン
・パリティ
・ブック
・Move Odering
・MPC
・WLD Solve

270 名前:デフォルトの名無しさん [2006/11/09(木) 02:43:45 ]
>>269
揚げ足取りじゃないけどMove Orderingね。

読んで参考になるソース
www.radagast.se/othello/zebra.html
othellogateway.com/ntest/Ntest/index.htm

271 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 22:38:02 ]
どなたかこちらで一緒にオセロiアプリを一緒に作りませんか?
pc8.2ch.net/test/read.cgi/tech/1165049332/
興味があれば是非。



272 名前:デフォルトの名無しさん mailto:sage [2006/12/15(金) 23:03:33 ]
一緒にがかぶってた

273 名前:デフォルトの名無しさん mailto:age [2007/02/02(金) 20:59:24 ]
pc10.2ch.net/test/read.cgi/tech/1169413998/

274 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:20:51 ]
オセロ奥深杉wwwwwwwww
Thellの強、強+に勝てねーwwww

275 名前:デフォルトの名無しさん [2007/02/21(水) 22:23:05 ]
C++でつくってみますた。
開発環境はVC6。
ソース綺麗にするつもり無いです。

ここの
kasamatusan.sakura.ne.jp/
1MB
ichi76063.zip
zipパスは「mu」

276 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:33:14 ]
途中で打てなくなる事があるが。

277 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:35:14 ]
>>276
まじすか。打てる場所がなくなったんじゃなくて?

278 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:35:58 ]
ちなみにルールでは初期配置はこれで黒が先手。
○●
●○


279 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:37:05 ]
打てる場所はある。
盤上に打てる場所のマークもある。
しかし入力を受け付けないようだ。

280 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:40:35 ]
半角で x△y(△=半角スペース)の書式で入力しないとバグります。

281 名前:デフォルトの名無しさん mailto:sage [2007/02/21(水) 22:40:59 ]
あれ?同じ進行を打ったら今度はちゃんと石が返った。



282 名前:デフォルトの名無しさん mailto:sage [2007/02/22(木) 06:21:37 ]
自分もオセロプログラム作っててそこそこ強くなったから
ここで公開しようかなと思ったけどC言語じゃなかった。

283 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 12:35:16 ]
作ったプログラムを対戦させたらおもしろいかも(・∀・)

284 名前:デフォルトの名無しさん mailto:sage [2007/03/17(土) 10:04:27 ]
保守

285 名前:デフォルトの名無しさん [2007/04/26(木) 18:26:26 ]
あげあげ

286 名前:デフォルトの名無しさん [2007/06/17(日) 15:10:35 ]
あげ

287 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 16:45:33 ]
素晴らしいをもう一度定義しなおすんだ

288 名前:デフォルトの名無しさん [2007/07/02(月) 00:46:08 ]
あげ

289 名前:デフォルトの名無しさん [2007/07/20(金) 20:24:53 ]
あげ

290 名前:デフォルトの名無しさん mailto:sage [2007/07/25(水) 19:18:26 ]
239さんの再うpしてほしい

291 名前:名無しさん@そうだ選挙に行こう mailto:sage [2007/07/29(日) 18:49:34 ]
239さんの再うpしてほしい



292 名前:デフォルトの名無しさん mailto:sage [2007/08/12(日) 01:11:55 ]
誰かうpしてくれ

293 名前:デフォルトの名無しさん [2007/08/18(土) 15:00:33 ]
/

294 名前:デフォルトの名無しさん [2007/08/18(土) 17:16:41 ]
だれかうp

295 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:18:28 ]
もっと強いのうpしようか?

296 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:20:48 ]
wktk

297 名前:デフォルトの名無しさん mailto:sage [2007/08/18(土) 17:28:16 ]
どぞー
radagast.se/othello/zebra.tar.gz
GCCやMinGWでコンパイルできる
VC++だと少し書き換えが必要
あとzlibが必要
動かすには↓に同梱されてるbook.binとcoeffs2.binが必要
radagast.se/othello/wz424.exe

298 名前:デフォルトの名無しさん [2007/08/19(日) 15:49:08 ]
コンパイル出来んぞー!
gccだけでなく、gmakeも必要じゃん。
しかも「dir.hが無い」って言われた。
ANSIやISO規格にそんなん無いだろ。
もしかしてWin?

ちゃんとしたPOSIX規格の環境でmake
通るようにしる!


299 名前:デフォルトの名無しさん mailto:sage [2007/09/03(月) 09:13:43 ]
>>298
ビルド環境を書いたら?


300 名前:デフォルトの名無しさん [2007/09/17(月) 05:12:20 ]
誰か>>297を使えた人居る?

301 名前:デフォルトの名無しさん mailto:age [2007/09/17(月) 07:20:15 ]
www.freewebs.com/photoradio/?0/880143



302 名前:デフォルトの名無しさん mailto:sage [2007/09/17(月) 20:59:44 ]
>>300
居る


303 名前:デフォルトの名無しさん [2007/09/18(火) 07:55:56 ]
どうだった?
強い?

304 名前:デフォルトの名無しさん mailto:sage [2007/09/18(火) 12:54:09 ]
>>303
≒wzebra

305 名前:デフォルトの名無しさん [2007/09/30(日) 09:43:07 ]
ほっしゅん

306 名前:デフォルトの名無しさん [2007/11/07(水) 19:48:53 ]
最強のプログラムは何?

307 名前:デフォルトの名無しさん [2007/11/18(日) 04:06:30 ]
>>306
総合力ではSaioだな。

上位の面子は2年程前(>>212)とほとんど変わってないな。

308 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 12:46:09 ]
1 すばらしいオセロとは最強のオセロなのか?
最強のオセロプログラムは人間では全く歯が立たないのでNO

309 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 20:12:18 ]
>>26
の改正版の再うpして頂けませんか?どなたか持っていませんかね

310 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 15:49:18 ]
お前らがうpしてくれないからオレが最初から作ってみるから協力するんだぜ

311 名前:デフォルトの名無しさん [2007/11/27(火) 16:38:34 ]
>>310
すまんね 俺も>>26は持ってないんだ
協力するよ



312 名前:デフォルトの名無しさん [2007/11/27(火) 16:58:39 ]
どうせなら64bitCPU最適化版を作らないか
64bit×2のbit boardで

313 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 05:32:01 ]
>>312
64bitのbit boardなら既にMMXで実現されてないか?

314 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:20:45 ]
だとしたらそれが何か?

315 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:16:01 ]
土日になったら作り始めるから、おまいら頼みますよ。
入門書卒業の専門情報処理科だから綺麗な物は作れないけど

316 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:25:00 ]
>>315
最低でも人間の世界チャンピオン以上を目指すなら協力するよ

317 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:57:12 ]
>>315
おー、頑張れ。

318 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 16:08:03 ]
>>315
老若男女誰でも楽しめる、ほのぼのとしたオセロを作り上げてほしい

319 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 19:24:55 ]
>>316
頑張ります。中級者レベルになってみせますので僕に力を
>>317
はい
>>318
最強と最弱のLv設定を出来るようにしてみたいですね
とりあえずは先手は決まってる状態から作ってみて完成出来たら
それぞれ機能を追加して行くというのが理想です。

やってみたら難しくネット上のソース読んでるだけで一日が終わってる・・・
>>26
┏━┯━┯━┯━┯━┯━┯━┯━┓
1┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
2┃  │  │  │  │  │  │  │  ┃
 ┠─┼─┼─┼─┼─┼─┼─┼─┨
3┃  │  │  │  │  │  │  │  ┃

これ表示したかったけれど、盤の操作する関数が難しくなりそうなので
オレにはLvが高すぎる気がしてきた

320 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 09:03:54 ]
>>319
難しくはならないよ
まず長さ91もしくは100のint配列を用意して各マスの状態は空き:0、黒:1、白:2、壁:3で表す
この配列の表す盤面を画面にプリントする関数を作れ

321 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:32:47 ]
>>320
少しづつ出来てきたのでそれをうpするので、応用すれば表示出きるかYES/NOで
暇なときでいいですので答えて頂けませんか。
引き続き勉強行ってきます。

レス有難うございます



322 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:44:39 ]
ほい
がんばれ

323 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 02:59:21 ]
な、、何か・・・何か>>26と違うんだ・・・

すばらしいオセロの表示
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5387.txt

324 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 04:35:27 ]
そりゃ違うだろ

for(x=1; x < 9; x++){
state = getStone(pBoard,x,y);
switch (state) {
case NONE: stone = '.';break;
case BLACK: stone = 'B';break;
case WHITE: stone = 'W';break;
default: stone = 'E';
}
printf("%c",stone);
printf(" │");
}


for(x=1; x < 9; x++){
state = getStone(pBoard,x,y);
switch (state) {
case NONE: printf(" "); break;
case BLACK: printf("●");break;
case WHITE: printf("○");break;
default: printf("変");
}
printf(" │");
}

325 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 08:15:41 ]
>>324
盤の表示だけは完成しました。あとは動きそうかな?程度に完成したあと
AI等実装していってみます。レス有難うございました。

326 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 10:34:47 ]
盤は壁無しでやったのか
壁を省いた理由は何かあるの?

327 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 10:39:01 ]
initBoardとgetStoneもちょっとおかしいな

328 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 12:33:39 ]
>>326
気になって調べたのですが、壁があると着手状態のなんたらがやりやすい
みたいなのがあったので壁作る事にしました。

>>327
確認できた限りでは初期化の仕方間違ってる気がしたので壁ありで直しました
getStoneに関しては日本語の意味の間違いに気づき修正を

一通り出来たので次の工程にもう行くぜ!
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5389.txt

329 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 13:55:13 ]
>>328
5389.txtを見ての感想
Boardの配列[10][10]という宣言では添え字は[0〜9][0〜9]を指定します。
紙に書くと判り易いと思いますが、座標ズレが発生しています。

330 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 14:09:58 ]
>>329
ばーか。

>>328
折角壁のスペースを確保しているのに、壁を無視して配置している希ガス。

331 名前:329 mailto:sage [2007/12/03(月) 14:22:10 ]
>>328
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5390.txt



332 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 14:29:39 ]
>>328
ほらよ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5391.txt

333 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 15:57:19 ]
縦軸も横軸も数字になってるけど、普通は片方を
アルファベットにするもんだよ。

334 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 16:21:13 ]
BOARDSIZEをdefineしてるのに10は決め打ちという不思議

335 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:07:43 ]
>>329-331
こんなにミス、無駄がある現実・・・
配列を全部書くとイメージが凄いしやすいんですね。>>331のtxt頂きました有難うございます。
>>332のstaticとか縁の無い関数でしたが今少し使い道が分かった気がしました。
配列の初期化の方法でこういう方法がありましたかw参考になりました。
指摘コメントまで有難うございました。

>>333
列をアルファベットにするのが一般的っぽいので書き直す事にします
>>334
そこも直した方がいいみたいですね。ですがBOARDSIZEにしたら逆に見た目で
判断しずらくなったので長ったらしくなるまで少しの間数字にしておこうか迷う

336 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 17:55:31 ]
>>335
オセロの派生版を作る野望がホンの微かでもないなら、8の決め打ちでもいいんじゃね?
BOARDSIZEを7にしたらどうせ同じルールじゃできなくなるわけだし。

337 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 14:49:59 ]
>>335
最近は進んでるかい?

338 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:48:51 ]
すいません、PCが壊れてしまい修理してました…。やっと戻ってきて再開できそうです。
派生盤等は現状で自分には考えられませんので決め打ちにしてみます。
PC戻ってきてもOCN規制で2chに書き込めず携帯から2ch発見しましたw
やれなかった分追い込みます。

339 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 03:14:44 ]
プログラム初心者だが俺も作ってみようかな

340 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 03:18:28 ]
がんばれ
協力するよ

341 名前:339 mailto:othello [2007/12/15(土) 08:44:36 ]
332を参考にして交互に打てるのを作ってみました。
www.vipper.org/vip691346.txt.html

かなり時間かかった。
とりあえず寝よう。。。



342 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 09:33:49 ]
お疲れさん

343 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 10:24:16 ]
>>341
勝手にアドバイスさせてもらうと、
isPlaceable() 内のdx, dyを
dx[] = {-1, 0, 1, -1, 1, -1, 0, 1};
dy[] = {-1, -1, -1, 0, 0, 1, 1, 1};
とすると、ループで書ける(x+dx[i]*count の形で表せる)のですっきりするよ。
同様にplace() も簡潔に書けると思う。

344 名前:339 mailto:sage [2007/12/18(火) 00:58:47 ]
>>343
なんとかループに直すことができました。
あと、とりあえずランダムに打つAIをのっけてみました。

www.vipper.org/vip693247.txt.html

次は適当な評価関数を作ってMinMax法を実装してみようと思います。

345 名前:デフォルトの名無しさん mailto:sage [2007/12/18(火) 01:03:45 ]
>>344
盤面はどうやって戻すつもり?

346 名前:339 mailto:sage [2007/12/18(火) 01:48:53 ]
>>345
差分(打った場所、引っくり返した場所)を取っておこうかと思うのですが
はたしてこのままでいけるのかどうか実はよくわかってないです・・・

347 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:21:20 ]
俺も大昔プログラミングの勉強する時にオセロを作ったよ。
作りこんでいくと遊び感覚でプログラミングの基本が勉強できるから良い課題だと思う。
中級を目指すなら、そのうち以下くらいは挑戦してみては? (今は意味不明かもしれんが・・・)

ポインタ→各種関数へのデータの引渡し
構造体→各種状態の保存
共用体→汎用関数からのステータス
ツリー構造→着手進行から高速サーチ可能なBook
再帰呼び出し→MinMax探索(αβ探索)
線形リスト→探索関数内での空マス保持リスト
ハッシュテーブル→探索局面の置換表
ソート→Move Ordering

F/W開発するハードエンジニアには、

ビット操作(含むMMX)→ビットボードによる高速化
同時実行率の高いコードの作成→処理の高速化
CPUキャッシュヒット率の高いコードの作成→処理の高速化

なんかも面白いと思う。

モンテカルロ法とか使って囲碁のプログラム書くのも良いけど、
基本の勉強にはオセロの方が色んな意味でわかり易い。

348 名前:デフォルトの名無しさん [2007/12/23(日) 14:31:25 ]
むりやり勉強とオセロを結びつけなくて良いよ

349 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 14:39:26 ]
ど素人乙

350 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 17:29:24 ]
モンテカルロ法はマルチスレッドの入門にいいかも

351 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 04:18:33 ]
ニューラルネットワーク→葉局面評価関数



352 名前:デフォルトの名無しさん [2008/01/16(水) 03:59:48 ]
オセロ作るのにスタックを用いてるソース等見るのですが
スタックのがいいのですかね?

353 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 04:06:50 ]
すいませんageてしまった

354 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 05:47:39 ]
>>352
スタックを用いるといいのは盤面をintか何かの配列で表現するとき。
bit boardで表現するときは盤面全体をコピーしたほうがいいからスタックは不要。

355 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 06:04:20 ]
>>354
配列で表現してみた方が自分にはイメージしやすいので、スタックを考慮して考えてみる事にします
レスありがとうございました!

356 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 02:47:48 ]
論理的にしらみつぶしで先読みするタイプのものではなく
実際に対戦してみて経験を積むようなプログラムって
どのように書けばよいのでしょうか

357 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:09:44 ]
>>356
強化学習が当てはまるけど
それぞれ独立した手法で通常は併用されるもの

358 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 05:40:58 ]
強化学習はの実装はこれがわかりやすい
www.vector.co.jp/soft/winnt/game/se415793.html

359 名前:デフォルトの名無しさん mailto:sage [2008/01/20(日) 10:03:16 ]
宣伝乙

360 名前:デフォルトの名無しさん [2008/01/21(月) 01:25:32 ]
Cプログラマ必須テキスト!

mori.eco.to/


361 名前:デフォルトの名無しさん [2008/01/23(水) 00:02:55 ]
強化学習面白いな
確かHeraklesも使ってるんだっけ



362 名前:デフォルトの名無しさん [2008/01/27(日) 06:19:42 ]
AIを実装しようと挑戦中なのですが、MiniMax法について質問させて頂きます。

先手、後手ともに最善の手を取った場合を数手先読みし最善の場所を
決めるのがMiniMax法ですよね?
いざ実装してみようと試みたのですが最善手を評価する際のMAXとMIN
を以下のようにしたのですが、このようなやり方はダメな例ですか?

まずBord[10][10]というメインとなるボードと、それとは別に8*8の盤面にあらかじめ
数値を入れた盤面 (この数値の差分から数手先の最善手を決める) を用意しようと
考えています。

363 名前:362 mailto:sage [2008/01/27(日) 06:37:24 ]
すいません何言ってるか分からないですよね。とりあえず>>362の方法で作ってみます
その上でどうか尋ねてみます。

364 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 09:43:00 ]
MinMax法やばす・・・難しすぎるんだけど
とりあえずMiniMax法を作る上でのコツか何かありませんか

365 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:44:34 ]
NegMax の方が実装は楽だが,minmax が作れないんじゃ一緒だろうねぇ.肝の部分は再帰使って数行で書けるんだけど.
プログラム例が載ってる本でも買えば?

366 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 10:45:23 ]
int minmax (int min, int max)
{
for (i = 0; i < n; i++) {
move (i);
v = -minmax (-max, -min);
undo ();
if (v > max)
return v;
if (v > min)
min = v;
}
return min;
}

今30秒くらいで書いたけど基本はこれだけだと思う

367 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 11:30:57 ]
>>365
ネット上の読み物で出来たらいいんですが、買うことを考えるべきですかね・・・
>>366みてみるとundoとかいう機能を作りずらい作りになってしまっている予感です
ネット上の拾いものからその行程が出来ないか試してみます
参考例ありがとうございました

368 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:40:51 ]
書籍購入を躊躇うようなら、その程度ってこった。

369 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:46:51 ]
NegaMax、MinMaxくらいならネットの説明だけでも十分すぎる。
まじで。

370 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:02:14 ]
そんな脳を俺に下さい・・・

#define BOARD_SIZE 8
int Board[10][10];

自作関数1: ・x と y の座標を引数に貰い、Board[x][y] ( A1と打ったならば x = A(1)、y = 1 )
         について8方向を調べたあと置ける場所があるならばその場所を 返し、ひっくり返す。
        ・調べる方向は左上からy行x列方向に。
        ・手を指して次の盤面の状態にする

371 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:03:38 ]
先手黒から見た評価関数の一部の例
>>366での
for (i = 0; i < n; i++) {
move (i);
v = -minmax (-max, -min);
undo ();
の部分だと思います
─────────────────────────────────────────
/* ネット上の拾いものの解説 */
while( 打てる手がある ){

  @手を差して次の盤面を作る;

  Aval = minimax( 盤面, depth - 1 );       一手先を読む再帰。3手まで読んでみるつもり

  B盤面を1手戻す;
─────────────────────────────────────────
/* 上記を例に作ってみた */
blackturn( int **board , depth )           2次元配列のポインタと、3手読みたいので3を貰う
{
  int val;
  if( depth == 0 ) return 評価値(盤面);

  for( y=1; y<=BOARD_SIZE; y++ ) {    盤面全部を検索し置ける場所を8*8全部調べる
    for( x=1; x<=BOARD_SIZE; x++ ) {
@     if( 自作関数1 ) {          board[x][y]に石が置けるならひっくり返してみる
        ターンを次にする;
        色を変える;
A       val = blackturn( &board , depth - 1 );

B問題点  ここの処理がスタックを用いておらず出来ません。通常どのように行って居るのでしょうか?
        長々と見ずらく申し訳ないですが伝わって頂ければ幸いです



372 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 19:56:38 ]
石を返せることが分かってから返す際に石を置いた場所と返した場所の情報スタックに記録しておく
返した場所の代わりに方向とそれぞれの方向で返した数を記録してもいい

373 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:26:17 ]
>>372
ネット上からスタックの例を見て条件満たせるよう作ってみます。
レスどうもありがとうございます!

374 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:26:47 ]
もう世界一のプロが敗北してだいぶ経つんだし強さはもういらないだろ。
あとは人間との対局で統計データを取りながら
自動的にぎりぎりの強さで負けるような
ナチュラルな強さ調整機能をつけてくれ。

375 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 20:28:11 ]
黙れ門外漢

376 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 22:15:23 ]
>>375
お前のことか?

377 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:05:05 ]
>>374>>376だよ(笑)

378 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 23:56:00 ]
と門外漢が申しております

379 名前:デフォルトの名無しさん [2008/01/28(月) 00:25:11 ]
お前らこういう言い合い好きなんか

380 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 04:15:18 ]
見るのも仕掛けるのも受けてたつのも好きだ

381 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 04:33:45 ]
まぁそれくらいしか能が無いしな
がんばれ



382 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 06:23:57 ]
石を返す処理って1方向ずつじゃないとダメっぽいんだな・・・
糞コード全開だぜ・・・

383 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 06:53:01 ]
>>372の続きでスタックの質問なのですが
石を返す”場所”をスタックに書き込む処理というのは

Board[x][y]というBoardがあったとしますよね。
f5という入力の場所の記録を行う場合には
f5という数値を入れるのでしょうか?
スタックには       

             ← スタックポイントがここ
方向
石の数
場所
方向
石の数
場所(F5)       1番最初のデータ

という風に入れればいいのでしょうか?

384 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 10:14:42 ]
>>383
これ無視して下さい。一から作り直すことにします

385 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 22:37:11 ]
>>380
可能です。
以上。
はい、次。

386 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:05:43 ]
誤爆か?

387 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 08:51:01 ]
>>386
最近の流行

388 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 09:00:18 ]
誤爆か?

389 名前:デフォルトの名無しさん [2008/03/23(日) 01:42:36 ]
あげ

390 名前:デフォルトの名無しさん [2008/06/19(木) 01:43:37 ]
再帰使わないで囲碁プログラムできないか?



391 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 01:46:01 ]
できるよ



392 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 10:10:58 ]
つーか,囲碁でも将棋でも再帰は使わない方が普通だと思うが

393 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 10:14:20 ]
スレ違いなんだから話を引き伸ばすなよ



394 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 20:58:30 ]
アルファベータ検索とか再帰だろ

395 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 13:25:00 ]
概念的にはそうだが,実際は自分で管理してループにする方が普通
全データローカルスタックに取るわけにも行かないし

396 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 16:30:33 ]
>>394
×検索
○探索


397 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 03:03:57 ]
評価関数のパラメータに使う盤面の特徴量ってどんなのがありますか?
パターン、パリティ、クアッドパリティ、モビリティ、ポテンシャルモビリティ、他にあれば教えてください。
思いつきでもかまいませんので。


398 名前:デフォルトの名無しさん mailto:sage [2008/08/05(火) 01:00:46 ]
思いつきとしては、安定度みたいなのがあっても良い気がする。

αβ探索で深読みすると浅読みで良手だったのが悪手になったりするでしょ?
これって、その局面を進めていくとそういう局面を発見するからだって考えがちだけど、
単純に考えれば、浅読みの評価値が間違っているとも言える訳で。
評価関数が、局面の善悪を出力するのなら、1手読みで十分な筈でしょ?

俺としては、深読みが有効なのは評価値にはランダムな誤差があって、
何段ものミニマックス探索がその誤差をフィルタリングする結果、
安定度の高い(評価誤差が少ない)局面を選択できるからだと思ってるんだよね。

今はパターンの重みを決める時とかは、結果的にそのパターンが現れた時の
最終的な石差の平均値に収束するように決めてるでしょ?
でも、実際にはそのパターンが現れた時に勝つこともあれば負けることもある。
勝てる局面で下手をして負けるってこともあるけど、
実はそうではなくて、そのパターンを含む局面は本質的に不安定なのかもしれない。
と、考えてみると安定度というパラメータが見えてくる。

パターンAは50%は大負けで50%は大勝だとすると
普通に学習させるとこのパターンは勝ち負けに影響しないと判断されて重みは0になる。
10%は僅差負けで90%は大勝のパターンBと100%僅差勝ちのパターンCでは、
10%は僅差で負けるパターンBの重みの方が大きくなるのが普通だよね?
それで良いんだろうか?ってこと。
これらのパターンが選択可能な時、より確実に勝ちたかったら、パターンCを選びたいよね?

安定度っていうのはそういうこと。
今の評価関数にはこういうのが入っていないと思う。


399 名前:デフォルトの名無しさん mailto:sage [2008/08/07(木) 02:53:31 ]
>>398
評価関数が正確なら1手読みで十分だけれど、

逆に、
局面が最後まで読めるのなら
評価関数は石数を数えるだけで良いと考えると

読みの深さを増やすほど強くなりそうなことがわかる

だから、評価関数を正確にすることだけではなく
計算速度が速い評価関数が使われてるんだ。

>今はパターンの重みを決める時とかは、結果的にそのパターンが現れた時の
>最終的な石差の平均値に収束するように決めてるでしょ?

評価にMinimaxが使われているのだから、
評価関数のスコアも平均値ではなくて、
自分、相手が共に評価関数の決める最善手を指したときのスコアに
近づくようになってると思う。

だから

>パターンAは50%は大負けで50%は大勝だとすると
>普通に学習させるとこのパターンは勝ち負けに影響しないと判断されて重みは0になる。
>10%は僅差負けで90%は大勝のパターンBと100%僅差勝ちのパターンCでは、
>10%は僅差で負けるパターンBの重みの方が大きくなるのが普通だよね?

こんな風に勝率で評価関数を決めていないと思うんだが。

もし、そのやり方に沿って決めるなら
Minimax法が使えなさそう。

400 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 02:15:55 ]
>>399
評価関数が局面から一定の値を導出するのであれば(極端な話、ハッシュ関数でも)
AIとしての強弱はともかくMinimax法は使える。


401 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 20:50:29 ]
>Minimax法は使える
はぁ?



402 名前:デフォルトの名無しさん mailto:sage [2008/08/08(金) 23:45:00 ]
ひぃ?

403 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 00:13:50 ]
ふぅ。

404 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 01:26:46 ]
へぇ・・・

405 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 02:06:45 ]
hint : static evaluation function, heuristic evaluation function


406 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 09:09:26 ]
Minimaxを使う目的を分かってない人が混ざってるようだ

407 名前:デフォルトの名無しさん mailto:sage [2008/08/09(土) 13:31:15 ]
雑魚が混ざってきたか

408 名前:デフォルトの名無しさん [2008/08/11(月) 02:16:50 ]
slashdot.jp/article.pl?sid=08/08/09/2221200

409 名前:デフォルトの名無しさん mailto:sage [2008/08/11(月) 09:37:27 ]
>勝つ可能性が一番高い動きを取り続けた。まるで機械のようだった

ワロタ

410 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 12:20:09 ]
ミニマックスとアルファベータの違いがわからん
>>366に枝狩りの処理を入れたらアルファベータ?

どうでもいいけど評価値得てないよ・・・ minとmaxをアホみたいに
引っくり返してるアホ関数だなそれはw

411 名前:デフォルトの名無しさん [2008/10/20(月) 02:17:59 ]
age



412 名前:デフォルトの名無しさん [2008/12/04(木) 20:42:21 ]
ほす

413 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 12:29:18 ]
読む->引き分けか勝ちが出る
優先順位に置く
完成

414 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 16:57:36 ]
>>374
>もう世界一のプロが敗北してだいぶ経つんだし強さはもういらないだろ。
勝ち切る手のDB出来ちゃったからな

>あとは人間との対局で統計データを取りながら
>自動的にぎりぎりの強さで負けるような
>ナチュラルな強さ調整機能をつけてくれ。
序盤20手:大負けしない手を打つ
中盤20手:引き分けか2手差で負けるくらいの手を打つ
終盤20手:全力で勝ちに行く

このくらいでナチュラルに強い打ち手になると思うけど

415 名前:デフォルトの名無しさん mailto:sage [2008/12/06(土) 16:58:56 ]
2手差->2石差
すまんこ


416 名前:名無し mailto:(^_-) [2008/12/25(木) 01:19:00 ]
オセロ懐かしい
父親が森田オセロ(8bitパソコン)より強いヤツをめざして、ORや多次元尺度など色んな手法を試していたな。

417 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 15:13:51 ]
プログラム作成者の能力以上の強さにはならない件

418 名前:デフォルトの名無しさん [2008/12/26(金) 22:34:13 ]
関係ない書き込みばっかで本題が全く進行してねぇw

419 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 23:36:12 ]
down11.ddo.jp/uploader/download/1230647574.zip/attatch

420 名前:デフォルトの名無しさん [2008/12/31(水) 01:16:31 ]
>>419
NetBSD/MIPSだが、動かないぞ。

421 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 01:35:47 ]
ソースは無し?



422 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 08:00:33 ]
思考ルーチン以外のところは終わっているテンプレートオセロプログラムってあるの?
ないにしても、どういうテンプレートにしておけば組み込みやすいのだろうか?
データ構造とか、必要な関数とか、それらの関係性とか。
前に(学部でC++習ったときのプロジェクト)オセロ作ったことあるんだけど、
今見ると、この構成じゃ、思考ルーチンいれにくいなぁと思ったのであります。

423 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 12:13:57 ]
www.vector.co.jp/vpack/browse/pickup/pw4/pw004827.html

424 名前:デフォルトの名無しさん [2008/12/31(水) 12:42:09 ]
>>417
技術的にはそうだけど実際の強さは自分より強い物が作れるだろ
第一技術的に高度な物が強くなるとは限らないし

425 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 12:44:05 ]
チェスのチャンピオンに勝ったプログラムだって
プログラマがチャンピオンより強かったわけじゃないしな。

426 名前:424 [2008/12/31(水) 12:45:25 ]
例え話をすると素数を出すプログラムを作った人がその素数をそこまで数え上げられるわけじゃないだろ?
そういうこと

427 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 19:22:26 ]
神の一手に一番近いのはプログラムかもしれないな

428 名前:デフォルトの名無しさん mailto:sage [2008/12/31(水) 22:56:49 ]
何を今更

429 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 00:34:42 ]
Googleの社員の個人情報がググれるみたいなもんか


430 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 20:27:48 ]
>>422
あらかじめ独立化することを考えておかないと、修正は難しいだろうね
どうせなら思考部分を別プロセスにすると、プログラム同士で対戦とか
簡単に出来て面白そう
Windowsだとoverhead大きいかな

431 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 21:08:14 ]
最後の行関係ない



432 名前:デフォルトの名無しさん [2009/01/06(火) 15:41:18 ]
>>422
チェスのChess Engine Communication Protocolみたいに規格を決めればいいんじゃねえの。
参照:www.tim-mann.org/xboard/engine-intf.html

433 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 16:19:31 ]
オセロで他のプログラムと対局するのは
GGSっていうサーバを介するのが一般的


434 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 16:57:04 ]
「神の一手は誰でも打てる。2手目以降の全てが平凡なのだ」 ――俺俺

435 名前:デフォルトの名無しさん [2009/01/14(水) 20:53:49 ]
第二法だが、コマンドを打つ。
光学的なコマンドを打つ。
光学的なコマンドを打つ。
物理段差という肉体計算の処理です。
この手の光線にきづかないように。
1+x+x+1+a+x+x+a+x+x+a+a+a+a+a+a+1+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a+a
+a+a+a+a+a+a+a+a+a+a+a+a+a a 1

436 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:54:56 ]
>>453はこのスレッドのオセロの作者です。

437 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:56:06 ]
上記更新
>>453>>423のオセロの作者です。

438 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:57:09 ]
上記更新
>>453>>423のオセロの作者によるものです。

439 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:00:29 ]
上記更新
>>453>>422のオセロの作者によるのです。

440 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:01:47 ]
>>453>>422のオセロの作者によるものです。
上記更新

441 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:02:37 ]
脳が無くなった。



442 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:15:20 ]
>>453
おいおい、まじかよ。冗談じゃないぜ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<112KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef