[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/02 10:04 / Filesize : 194 KB / Number-of Response : 920
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

おまいら最強のリバーシプログラムしてみろよ part2



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

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

597 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 03:03:05 ]
>>596
バイアス上等。楽しみに待ってるよ。

598 名前:デフォルトの名無しさん [2007/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 [2007/02/06(火) 13:00:22 ]
>>598は1です

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

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

601 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 15:32:34 ]
何このわけわかんないオペレーターオーバーロード

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

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

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

604 名前:1 [2007/02/06(火) 19:06:09 ]
>>602
わかりました!そうしてみます



605 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 19:29:43 ]
相変わらずゴミを生産してますね。

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

インデント覚えろカス。

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

607 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 20:00:47 ]
スルーしとけ。
お前らスルー憶えろ。

608 名前:1 [2007/02/06(火) 20:41:44 ]
どう直したらいいのか書いてくれ
598だと

609 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 20:46:43 ]
厳しい助言

このスレみてみろ。
pc10.2ch.net/test/read.cgi/tech/1153542424/
誰もお前みたいな書き方してないぞ。
このスレ見て勉強しろ。


610 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 21:09:32 ]
>>496
はかどってますかー?
どんな感じー?

611 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 21:10:27 ]
>>565
強くなったかいー?

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

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

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



615 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 21:57:46 ]
ねーよwww

616 名前:1 [2007/02/06(火) 21:58:58 ]
>>614は偽者です
誰か>>598を直してもらえませんかね?

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

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

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

あと今日の時点のソースでつ。変な部分にはどうか突っ込みお願いします。
ttp://ud.gs/300kc
パスは前回と同じで、鳥です。

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

619 名前:1 [2007/02/06(火) 22:14:53 ]
>>1

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

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


www20.pos.to/~sleipnir/software/bearreversi/index.html

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

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

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

622 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 23:28:41 ]
左辺値と右辺値を知らないのか?

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

624 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:02:14 ]
>>616
ttp://up2moe.moe.hm/img/q599.txt



625 名前:1 [2007/02/07(水) 00:15:13 ]
>>624
ありがとう
でもよくわからないので今までのソースでいく

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

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

628 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 00:28:39 ]
>>625
これはさすがにネタ or 偽者だろ

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

630 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 05:19:59 ]
我流初心者なんてそんなもんだ

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



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

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

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

634 名前:デフォルトの名無しさん mailto:sage バックアップ [2007/02/07(水) 12:14:36 ]
>617 ttp://up2moe.moe.hm/img/q600.zip



635 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 14:22:31 ]
rival = BLACK + WHITE - mover;

637 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 15:01:36 ]
関数にしちゃダメ?

rival = getRival(mover);

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

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


639 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 15:43:51 ]
アホデスカ

640 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 15:50:34 ]
アホデスネ

641 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 17:00:49 ]
どなたかMOUSE(µ)アルゴリズムを試す人は居ませんか?
www.tournavitis.de/herakles/engines.htm

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

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

643 名前:496 ◆8VT5lt6VLs mailto:sage [2007/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 mailto:sage [2007/02/07(水) 22:12:12 ]
>>637>>638
>>643の方法と合わせて、関数っぽいマクロにしときまつ。



645 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 22:17:18 ]
636がよくない?

646 名前:デフォルトの名無しさん mailto:sage [2007/02/07(水) 22:32:45 ]
>>645
同意

647 名前:496 ◆8VT5lt6VLs mailto:sage [2007/02/07(水) 22:37:47 ]
見落としてますたorz
そうします。

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

649 名前:648 mailto:sage [2007/02/07(水) 22:42:43 ]
訂正
ttp://radagast.se/othello/

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

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

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

652 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 19:19:26 ]
レビュー乙
でもなぜ2回・・・

653 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 19:47:29 ]
多分 
>>650が黒番
>>651が白番

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



655 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 21:17:23 ]
>>651>>1なんじゃね?


656 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/08(木) 22:27:25 ]
>>656
パスとか暗号とか言い出さなければ、もふろだでいいんじゃね?
ttp://up2moe.moe.hm/upload.php

C/C++のソースなら、元々ソースコード用の↓でもいいし。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm

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

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

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



660 名前:656 mailto:sage [2007/02/08(木) 23:50:37 ]
>657 thx
まだ単純なαβと寄せ集めの評価関数を実装したレベル(処理量の都合で6手読みまで)
ttp://up2moe.moe.hm/img/q669.zip

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

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

661 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 00:05:47 ]
>>660
落ちてる?DLできないんだが

662 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 00:32:32 ]
>>661
普通に開けたけど。

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

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



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

666 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 01:05:19 ]
二重に圧縮してるのか
解凍できた

668 名前:661 mailto:sage [2007/02/09(金) 01:09:29 ]
+Lhacaには荷が重かったなw
>>666を参考にcygwin経由で無事解凍

669 名前:1 [2007/02/09(金) 11:14:09 ]
ちゃんとうごいていないけどNewバージョン

up2moe.moe.hm/img/q670.txt

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

671 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 12:30:55 ]
うん、一生動かなくて良いよ

672 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 12:44:06 ]
>>660
落とせないです><

673 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 13:34:04 ]
>>672
例の二重圧縮に引っかかってるのでは?

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



675 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 15:41:00 ]
>1は1からと言わず0から書き直した方がいいな。

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

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

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

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

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

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

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

682 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 18:57:14 ]
反面教師ってやっぱり必要なんだね。

683 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 19:19:56 ]
>>660
slideTopLeft() とかって何ですか

684 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 19:21:54 ]
>>677
>>678

>>616
>>624
>>625



685 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 19:27:04 ]
一流の釣師なんだよ
他のやつらにやる気を出させてるだろ

686 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 19:40:14 ]
last move:
O turn
moves: D3 C4 F5 E6

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

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

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

688 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 20:12:10 ]
F5
-1075227799
こんなだった

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

690 名前:660 mailto:sage [2007/02/09(金) 20:30:04 ]
サンクス
普通にバグだったか…orz

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


691 名前:1 [2007/02/10(土) 04:38:53 ]
差し手のサーチがうまくいかない...誰かわかりますか?

up2moe.moe.hm/img/q671.txt

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

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

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



695 名前:1 [2007/02/10(土) 05:11:44 ]
差し手に関数部分だけを抽出しました
どうかよろしくお願いします

up2moe.moe.hm/img/q673.txt

696 名前:1 [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 05:16:36 ]
アルゴリズムの説明はしないの?
説明すれば言ってることと書いてることの違いはわかるけど?

698 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 07:46:18 ]
1にできると思う?

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

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


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

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

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

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

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

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

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


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

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

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

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



705 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 10:11:11 ]
どうでもいいが、変数名とかがローマ字なのは痛々しい

706 名前:701 mailto:sage [2007/02/10(土) 10:15:17 ]
ごめんw<64はあってるっぽい。

707 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 10:26:25 ]
>>705
でも、変な英語よりはずっといいでしょ。

708 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 10:37:38 ]
>>702
ついでに改行を適度に入れることの効用.

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

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

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


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

710 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 11:39:00 ]
無関係な突っ込み
n=z-8*m;

n=z % 8;


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

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

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

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


714 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 12:24:28 ]
デバッガ使いたくないならprintfでもはさんでデバッグやれ。

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




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

716 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 13:11:45 ]
質問
mtのfor(;;)for(;;){
って意味あるの?

718 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 13:31:44 ]
わかった!
continueを知らないだけだ!

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

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

721 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:18:57 ]
読み直してみた。たしかに continue を知らないだけのようだ。

722 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:38:09 ]
#define PASS 64

723 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:46:10 ]
少しは努力しろ

724 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:54:56 ]
#define が多いけど、enum は使わないの?



725 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 14:56:32 ]
単に知らないの

726 名前:1 [2007/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 [2007/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;}

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

up2moe.moe.hm/img/q678.txt

728 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 17:52:41 ]
暗号解析も進んでるようだねw

729 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 17:58:59 ]
みんな優しいなあ

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

731 名前:1 [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 18:32:49 ]
日本語でおk

733 名前:1 [2007/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 [2007/02/10(土) 18:43:51 ]
要約すると、メンバ関数内で、他のメンバ関数を使いたいという事です



735 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 18:45:08 ]
operator() ってなに?

736 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 18:48:01 ]
デバッガで1行ずつ実行すればいいんじゃないの?

737 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 18:49:08 ]
あ、ごめん
そういう内容ではなかったのね

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

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

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

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

741 名前:1 [2007/02/10(土) 18:51:42 ]
>>735
ここです
関数呼び出し演算子
homepage2.nifty.com/well/Operator.html#paren

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

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

743 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 18:55:49 ]
thisを知らなかっただけだろ

744 名前:1 [2007/02/10(土) 18:58:55 ]
>>743
727の10行目で使ってますよ



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

746 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 19:08:02 ]
意味がわからずに使ってるからバグが入ってるんだよ

747 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 19:24:22 ]
1ってアルゴリズム考えるのがへたくそだなぁ

748 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 19:37:53 ]
>>726
lpは各方向のマスへのオフセットだろ。

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

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

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


749 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 19:40:15 ]
どんどんいい感じに普通のプログラムになっていってるね

750 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 19:50:51 ]
どのへんが?

751 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 19:52:41 ]
serch()

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

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

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



755 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 20:01:06 ]
「普通」の基準が問題なんだなw

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

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

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

758 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 21:01:19 ]
なんか盛り上がってるなw

759 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 21:06:46 ]
自分よりレベル低いのが居ると安心してしゃべれるんだろ

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

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


761 名前:デフォルトの名無しさん [2007/02/11(日) 16:23:04 ]
1って人間性がダメだな

762 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 16:26:34 ]
何ですかこの期待はずれなスレは

763 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 16:49:21 ]
おれにとっては期待以上だ

764 名前:デフォルトの名無しさん mailto:sage [2007/02/11(日) 16:57:28 ]
まじめに作ってる人には期待してるよ
まだ結果は出てないし



765 名前:デフォルトの名無しさん [2007/02/13(火) 16:36:15 ]
age

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

767 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 17:36:05 ]
うん、君はそれで作れば?

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

769 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 17:50:18 ]
bitboardとか知らないけど、俺も作ってみよう

770 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 17:52:09 ]
じゃあ俺はDで作っちゃうぞ

771 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 18:30:10 ]
じゃあ僕はバッチファイル!


772 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 21:02:00 ]
2次元配列で作ったけど、1次元が主流なんかな?

773 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 21:03:51 ]
なんでもいいかと

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



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

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

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

778 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 23:06:49 ]
Thellの「強+」って何手読みかな?

779 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 23:30:20 ]
bitboardにするとundoはやらないでコピーするもんなの?

780 名前:デフォルトの名無しさん mailto:sage [2007/02/13(火) 23:47:40 ]
うん、そう。

781 名前:769 mailto:sage [2007/02/14(水) 00:37:59 ]
ひとまず動くものが出来たので晒してみます
555.sytes.net/up/img/414.zip





782 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 00:55:21 ]
GUIキタコレ!

783 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 00:59:04 ]
おお、お疲れ様です。
いい感じですね。

784 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:04:43 ]
>>781
dllの追加について何かヒントきぼん



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

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


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

787 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:28:50 ]
.NETはパスだな
もまいらがんばってくれ

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

789 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:32:20 ]
>>788
C#ていう言語。
monoで使えるかも?

790 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 01:34:12 ]
>>789
C# と mono ですか。調べてみます。d

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

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

793 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:12:42 ]
>>769
初期化エラーになります><

794 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 02:27:52 ]
んなこと言ってる奴は自分でなんとかしろカス



795 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 07:53:42 ]
C#か・・・
dllならC++で作って読ませることもできるかな?

796 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 12:42:22 ]
>>781
これ良いですね。
MinMaxAIに勝てないし、昔自作したオセロプログラムで対戦しても歯が立たないorz

出来れば、のお願いが2つ。
・初期配置を逆にしてほしい。
・直前手を表示してほしい。(印を付けるとか)
オセロルールでは初期配置が逆なので上記のようにソフトを2つ並べて
手動で対戦するときにそのほうが都合が良いので。
勝手言ってすまん。


797 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:10:13 ]
なんか良い感じになってきたな、1以外は。

798 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:19:00 ]
ところで、1ってなんですか?

799 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:27:31 ]
バカは「1」って名前で発言するのがここのルール

800 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 00:51:56 ]
1の人気に嫉妬

801 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 02:50:08 ]
>>800
>>799

802 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 14:35:04 ]
こんな天気の日は、引きこもってコード書きに限りますな

803 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 14:37:25 ]
評価は何を基準にしているの?
置けるコマの数?

804 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 14:55:36 ]
評価はパターンが基本で、これに置ける場所の数などを加える事もある。
全ての評価要素には係数を掛けて和を取る。
この係数は、局面と教師信号を大量に用意して評価値と
教師信号の誤差が最小になるように最小二乗法で求める。



805 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:03:21 ]
>>804
う〜ん、難しそう。

806 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:29:36 ]
>>803
ttp://fujitake.dip.jp/sealsoft/thell/algorithm.html
このページの下のほうに評価関数についての説明があるよ。

>>804
問題は、データの多さなんだよね。
強さを求めるには仕方のないことかもしれないけど、
思考部分のプログラムが(高速化のために展開していたとしても)数百KB程度に対して、
評価用のデータが10MB↑とかになるのがね...

807 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 15:44:12 ]
>>806
サンクス

808 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 16:42:53 ]
>>806
「リバーシプログラムの作り方」に入ってるプログラムは
比較的コンパクトで精度のいい評価関数だと思う。
標準的なパターン(ロジステロとかの)より小さくて最大で8マス分なのと
ゲームの段階によってステージ分けしてないので小さくしてる。

809 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 17:06:10 ]
1のプログラムをdll化して対戦させてみるとどうだろう。
できる人頼む

810 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 17:26:11 ]
まともに動くようになればDLL化してやってもいいけど。

811 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 17:32:19 ]
オレも動くようになったらDLL化しようと思ってるんだが
最後までいかんのがなあ

812 名前:1 [2007/02/15(木) 18:09:40 ]
オブジェクト指向はもうすぐできます 
待っててください

813 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 18:11:32 ]
>>812
もういいよ

814 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 18:14:10 ]
>>812
なんの目的でオブジェクト指向にするのかもう一度聞かせてくれ



815 名前:1 mailto:sage [2007/02/15(木) 18:20:04 ]
C++を使っているから。

816 名前:1 [2007/02/15(木) 18:27:16 ]
オブジェクト指向はプログラムがわかりやすくなるからですよ

817 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 18:38:22 ]
1の主張の対偶をとると、
プログラムがわかりにくいのは、それがオブジェクト指向でないから
となる。
しかし、これは明らかにおかしい
ゆえに1は明らかにおかしい



818 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 18:57:33 ]
1がバカだからプログラムもわかりにくくなるんです

819 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:01:07 ]
C をベルトコンベアに例えると、C++ はピタゴラ装置なんだよね。素人だと特に。

単純なはずのベルトコンベアさえ迷路状態にしてしまう >1 が、あろう事かピタゴラ
装置にまで手を出せば、もっと手の付けられないものが出来上がるのは明らか。

820 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:12:02 ]
ピタゴラ装置なんて初めて聞いた

821 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:15:19 ]
1は自分のやってる事が高度で他人がバカだから
理解してもらえないとでも思ってるんだろ

822 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:39:33 ]
今更わかりきったことを・・・

823 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:40:41 ]
勉強できるヤツが頭が良いって言うわけじゃない事が
よくわかりました

824 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:41:23 ]
まるで小学生のようだ。

そう言えば、昔AppleJapanのコピーで「小学生になろう」ってのがあったな。



825 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:51:34 ]
1は自分で考えるのは下手だけど
どこかで見聞きした事をそのまま言うのはできるんでしょ

826 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:23:42 ]
>>820
ルーブ・ゴールドバーグ・マシン (Rube Goldberg machines)っていったらわかる?
バック・トゥ・ザ・フューチャーの最初のシーンみたいなやつ。

827 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:47:51 ]
それもわかんない
けどググったらわかった
なるほど確かにそんな感じだね

828 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 22:57:31 ]
簡単に言うと、ドミノ倒しの中にスイッチが紛れてるんだな

しかもどれが何のスイッチか一切分からない。

829 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:24:51 ]
>>828
むしろ分からなくなった

830 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:31:36 ]
>>817
対偶を勉強しなおせ

831 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:46:33 ]
>>829
例えば、何らかの誤作動を直したり
一部を拡張しようとした場合

スイッチだけが出ていれば、押す順番なんて簡単に変えられる

だが、スイッチの順番を変える為だけに
ドミノをひたすら並び替え直す必要があったり
スイッチを押す順番によって動作が変わってしまったり
そもそも何のスイッチか分かりにくかったり


832 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:52:24 ]
>>829
つttp://flowmachine.free.fr/wiiflow/wii4/lunchtime.swf


833 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 23:53:45 ]
要するに色んなからくりの連鎖反応で機能するって事でしょ

834 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:05:08 ]
ゲームのインクレディブルマシーンみたいなもんだろ?



835 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:05:26 ]
www.youtube.com/watch?v=Q5nmspVOz_Y

どっかに車の部品でやるやつもあったな

836 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:16:54 ]
www.youtube.com/watch?v=hXV9aYoI0A8&NR
これだった
スレ違いだがな

837 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 00:58:15 ]
あれ・・・
学習量増やしたら弱くなっちゃった。
過学習ってやつ?

838 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 01:33:47 ]
学習させた棋譜によるし、そもそも学習の仕組みにもよるだろ

839 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 08:41:29 ]
結局、評価は演繹ではなく帰納的ってこと?

840 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 15:13:16 ]
うん、そう。

841 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 15:33:52 ]
じゃあ換言すると、強さは評価関数の係数を決める教師データ量の多さと
探索の深さで決まるってこと?

だとすると、1はその中で何をしているの?

842 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 15:43:38 ]
何もしてない

843 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 15:47:01 ]
>>832
面白いんだがw

844 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 15:50:49 ]
1は探索を深くしようとしてるんだけど
評価関数がデタラメだから意味の無い局面だけ深い探索をしてる



845 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 16:14:42 ]
>>844
ヒント:ベンチマーク

846 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 17:43:15 ]
うん、ゼブラにも負けてた。


847 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 17:59:38 ]
筆記用具な

848 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 18:24:44 ]
>>847
ゼブラとはオセロプログラムの事ですよ。
www.radagast.se/othello/download.html

849 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 22:48:51 ]
白黒つけるぜ!ゼブラマン!!
って奴か。
次はゼブラゾーンから取って 横断歩道という名前はなしですか。
なしです。

850 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 12:38:49 ]
IOSの棋譜ってもう手に入らないのか?

851 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 15:18:02 ]
IOSの棋譜はもう見つかりませんでしたけど
後継サーバであるGGSの棋譜はあります。
www.cs.ualberta.ca/~mburo/GGS/game-archive/Othello/
こっちのほうが質も量も優れていると思います。
ただ人間の棋譜や試合中で途切れている棋譜なども含まれているので
一定の条件で抽出したほうがいいと思います。

852 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 15:34:53 ]
ありがとう。
GGSの方にはIOSの棋譜がマージされてるんかな?
とりあえずいろいろいじってみるよ

853 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 16:44:21 ]
GGSの棋譜にIOSの棋譜は入ってないと思います。
あと評価関数作りにはこの棋譜も役立つと思います。
abulmo.club.fr/resources/base.htm

854 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 22:11:35 ]
1はどこいった?



855 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 22:36:44 ]
もう飽きたんじゃ?

856 名前:1偽 mailto:sage [2007/02/17(土) 22:40:01 ]
オセロはマスターしたので将棋に移りました。

857 名前:1 mailto:sage [2007/02/17(土) 23:03:02 ]
ああ

858 名前:デフォルトの名無しさん mailto:sage [2007/02/17(土) 23:11:35 ]
将棋スレ過疎ってるから来いよ>>1

859 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:52:02 ]
そして誰もいなくなった

860 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 16:56:09 ]
じゃあネタ投下してくれ

861 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 17:11:41 ]
1がいなくなったとたんに過疎る。1は偉大だな。

862 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:17:52 ]
有志が1を見限って独自に進めようとするたびに1が現れて気運をぶち壊して行っただけでは。

863 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:39:29 ]
誰か2代目1を呼んで来い

864 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 20:49:44 ]
今1はエージェント指向で書き始めていますので、少々お待ちください。



865 名前:1偽 mailto:sage [2007/02/19(月) 21:00:45 ]
アスペクト思考で書き始めています。

866 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:26:28 ]
やっぱり構造化プログラミングで書き直しています

867 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:42:00 ]
高速化したいのでアセンブラで書くことにしました

868 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 22:59:01 ]
3進数コンピュータ用に3進数で書き直しています。

869 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 23:25:44 ]
高速化のためにtemplate多用して書くことにします

870 名前:デフォルトの名無しさん mailto:sage [2007/02/19(月) 23:58:32 ]
明日論文発表終わって暇になるから本格的に取り組んでみるぜ
とりあえずの目標は781で動くdllの実装

871 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 00:07:28 ]
人間対人間のオセロ作ったし、今度は人間対人間の将棋作るわ

872 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 01:57:36 ]
オセロ対将棋を作ってくれ

873 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 05:10:15 ]
とりあえずマスをかくことにしました

874 名前:デフォルトの名無しさん [2007/02/23(金) 00:16:37 ]
age



875 名前:デフォルトの名無しさん [2007/02/24(土) 01:36:45 ]
第一部終了?

876 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:38:23 ]
結局、ダメだったか
ある意味予想通りだが

877 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:35:24 ]
当初は昨年末にはできる予定だったんだよね。

878 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:38:28 ]
当初は昨年末にはできる予定だったんだよね。

879 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 15:05:29 ]
ここの>>1はこのスレの>>1か?違うよな。

IT業界で入ってはいけない会社の条件を教えて
science6.2ch.net/test/read.cgi/infosys/1172129460/

880 名前:デフォルトの名無しさん [2007/02/27(火) 20:19:49 ]
そういやそろそろ三ヶ月経った?

881 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 02:09:37 ]
今作ってる人居るの?
進捗状況を聞かせて欲しい

882 名前:1 [2007/03/04(日) 06:16:16 ]
みんなすまん
うまく動かなくて顔出せんかった
プログラムとデバックに向いていないとおもう(経験不足)
継続して作ってはいるんだけど......
あと囲碁、将棋も攻略する予定はあるんだ
ネタはあるので、データ構造と処理内容だけを記したら分業制でやってくれる人はいますか?
一人では、一つ完成させるのに半年以上かかりそう

883 名前:デフォルトの名無しさん mailto:sageクマー [2007/03/04(日) 06:36:54 ]
× 分業制でやってくれる人はいますか?
○ これこれこういうアルゴリズムなのですが、興味のある人はぜひコーディングしてみて下さい。
◎ (どこどこのうpろだ) に、データ構造と処理内容を記した仕様書(テキストファイル等)をアップロードしました。興味のある人は(以下略


いったい何ヶ月前から↑の通りにしろと言われていたのか、まさか気づいてないのか?

884 名前:1 [2007/03/04(日) 07:14:35 ]
>>883
わかった
仕様書かくんでちょっと待っててください

オセロはオブジェクト指向で書き直したんだけど動かないよ
up2moe.moe.hm/img/q875.txt

あまりに動かないんで、
オセロは、やめて将棋にしようかと思ってきたんだけど
将棋を一から開発していくっていう方向でもいいですか?



885 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 07:50:04 ]
どんな仕様書が出来るか楽しみだな。

886 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 07:53:27 ]
>>884 >>1
>オブジェクト指向で書き直したんだけど
オブジェクト指向で書き直す以前の問題。
C,C++の仕様すら理解してないんじゃないかな?
プログラムの書き方からデバッグのしかたを一から(ry

>あまりに動かないんで、
>オセロは、やめて将棋にしようかと思ってきたんだけど
>将棋を一から開発していくっていう方向でもいいですか?

無謀。

将棋は駒を取る、打つ、成、不成。オセロよりはるかに
局面の変化が多彩で難しいと思うけど?


887 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:03:04 ]
無謀なんて言わずに、やらせておけばいいじゃん。
1がマトモには何もできないってことはみんな知っているし、
それを知った上でのネタスレとして楽しんでるんじゃないの?

888 名前:1 [2007/03/04(日) 08:05:43 ]
オセロを一から作り出すより、手伝ってもらって将棋を分担で開発した方が
早い and やる気が出る、かと思ったんですが...
デバッグとコーディングをのぞけば、アルゴリズムはかなり前から出来ているんです
オセロより作成期間が長いんです

889 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:17:36 ]
じゃあそのアルゴリズムを聞かせてほしい

890 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:21:16 ]
小学校の頃、1みたいな奴が居てウザかったの思い出した。

891 名前:1 [2007/03/04(日) 08:29:57 ]
仕様書を書いて説明しますから、待っててくださいね
では、将棋をみんなで作るという事でOKですかね?

892 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:32:07 ]
バカ?
リバーシに決まってんだろ

893 名前:1 [2007/03/04(日) 08:37:35 ]
ボナンザを倒し、劇指を倒したら、次に銀製囲碁を倒します!
分業制でやれば実現しますよ!
囲碁はですね、今までに無いやり方だと思いますよ
簡単に説明しますと
まず、19*19盤を、類似した5*5盤とか、7*7盤に縮小するんです
すると置けるマスは25〜50マス程度で、
普通のMTDとかPNSとかが通用しやすくなるんです
あらかた、置く位置を決めたら元に戻して、その周囲で詳しく調べるんです

894 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:40:07 ]
PNSて何だ?
PVSの間違いか?



895 名前:1 [2007/03/04(日) 08:41:15 ]
proof number サーチですよ
証明数探索ですよ

896 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:42:42 ]
ああそれね

897 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:43:27 ]
で?どうしてやらないの?

898 名前:1 [2007/03/04(日) 08:45:03 ]
MTD、PN-searchは、これが詳しいです

Research Re: search & Re-search
PhD thesis; 1996
Aske Plaat
www.cs.vu.nl/~aske/Papers/thesis.zip

899 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:46:40 ]
それ読んだことある

900 名前:1 [2007/03/04(日) 08:48:45 ]
思考ルーチンだけ作ればいいソフトを貼り付けておきますね


CSA将棋
www2.ttcn.ne.jp/~tsuma/download.htm

CgfGoBan(囲碁用)
www32.ocn.ne.jp/~yss/cgfgoban_j.html

BearRev Professional (オセロ用)
www20.pos.to/~sleipnir/software/bearreversi/index.html

901 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 08:51:33 ]
そういうの探すのだけは上手なんだね
もっと色々集めてよ

902 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 09:15:54 ]
いろいろ言いたいことはあるが仕様書を見てから判断しよう

903 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 09:43:46 ]
まともにプログラムを書いた事が無い奴のプログラム
まともに仕様書を書いた事が無い奴の仕様書

904 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 10:24:42 ]
現実のSEにもいるけどね
そういうの



905 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 10:50:50 ]
1の日本語・プログラミングの能力から、出てくる仕様書の程度は知れてる。

906 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 10:58:02 ]
× 出てくる仕様書
○ 仕様書は出てこない

◎ 家から出てこない

907 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:24:45 ]
脳内から(ry

908 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 15:59:16 ]
僕は>>1にひそかに期待している。
分業する気はまったくないが。

たぶん>>1は大器晩成なんだと思う。
いつ頃晩成するのかは予測不能だけど。

>>1の打たれ強さは今まで見た中で5本の指に入る。
この調子でスレを消化していけば、囲碁・将棋・リバーシに
取って代わるテーブルゲームができるかもしれないかもしれないな。

909 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 18:58:44 ]
俺も>>1には期待してるよ

910 名前:デフォルトの名無しさん [2007/03/04(日) 19:05:48 ]
>>1頑張れ!!
新しいゲーム、やってみたいぞ!

911 名前:デフォルトの名無しさん [2007/03/04(日) 19:32:50 ]
>>1がきてスレが久しぶりに活気付いた件

912 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 20:19:20 ]
超初心者の質問なんですが誰か教えてください。
オセロや将棋などのアルゴリズムのプログラミングはC言語で作るのが常識なのでしょうか?
Javaとか他の言語では無理ですか?

913 名前: ◆Z4QrFDzwrY mailto:sage [2007/03/04(日) 21:01:42 ]
可能
アルゴリズム自体は言語に依存するものではない
言語によって実装は異なるが、根底の考え方は違わない
速度、実行する環境、自分達が使える言語、DirectXを使えるか、などで
言語を含めて開発環境はだいたい決まってくる

914 名前:1 [2007/03/04(日) 21:03:19 ]
>>912
Javaでもなんでも出来るけど、速度はcが一番では?ややアセンブラより鈍いかも

分担作業で出来るようにモジュールを分割して
最低2人が一つのモジュールを作成し
2名が同じ出力を出したら正常であるとしましょう



915 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:07:27 ]
初心者が作れば速度が逆転することはざらにある

916 名前:912 mailto:sage [2007/03/05(月) 01:47:49 ]
>>913>>914>>915
ありがとうございます。
速度で差が出るということですね
どうせやるなら上を目指したいのでCでやってみようと思います


917 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:54:36 ]
>>893
分業だの分担だの言ってるが、他人と同じスタイルにしたり、他人の書いた
プログラムをちゃんと理解できるまで自己鍛錬するつもりはあるのか?
>624-625 みたい嘗めた真似するんじゃないのか?

918 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:57:21 ]
プログラムがわからなくたって
結果で判断すればいいんじゃね?
エンドユーザーになったって事だろ

919 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 05:04:30 ]
>>912
現在トップクラスのプログラムで使われている言語はC,C++,Managed C++。
言語はCでいいと思うよ。GUIも作るならC++かな。
GUIははじめベアリバーシでもいいけど続けていればそのうち物足りなくなると思うよ。
アセンブリは全く使わなくていい。
コンパイラに最適化を任せれば3倍以上速くなる事もある。
あと英語は必須。






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

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

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