1 名前:デフォルトの名無しさん mailto:sage [04/06/23 17:34] 素晴らしいものだぞ
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とかいう機能を作りずらい作りになってしまっている予感です ネット上の拾いものからその行程が出来ないか試してみます 参考例ありがとうございました