おまいら最強のリバーシプログラムしてみろよ part2at TECH
おまいら最強のリバーシプログラムしてみろよ part2 - 暇つぶし2ch100:1
07/01/23 08:15:28
当初から、再帰は一度も使っておらず(これは初めから一貫していました)
手数と、読みの深さごとに必要な領域を確保しています
パスも含めて128手分とってあります

101:デフォルトの名無しさん
07/01/23 08:17:29
そんなのソース見たから知ってる
だからどうした?
何が言いたい?

102:デフォルトの名無しさん
07/01/23 08:17:41
インライン展開できてるかどうかくらいは確認してるんだよな

103:1
07/01/23 08:42:19
それはしてません
でもとにかくループがいいんです
わかってください

104:デフォルトの名無しさん
07/01/23 08:50:58
残念
sageちゃ駄目なんだ

105:1
07/01/23 09:27:14
同じ事繰り返すんだけど、どうやったら直るかわかる?
今日はしばらくパソコン触れないのでうpしてみる
まだ変数名とかプログラムはわかりにくいままですが

URLリンク(up2moe.moe.hm)

106:デフォルトの名無しさん
07/01/23 09:34:04
わかりやすいプログラムになったら皆見てくれるよ

107:デフォルトの名無しさん
07/01/23 09:34:15
「直る」って何?
どうなればいいのかも言わずに何言ってんの。

108:1
07/01/23 09:37:21
直る=深く探索するです

今の時点では、強いかどうかではなく同じ探索を繰り返さないようにしたいんです

109:デフォルトの名無しさん
07/01/23 09:48:20
128とか255とか、境界値のあたりがあいまいだからだよ
そんなんでよく再帰がどうのとかいえるな

110:デフォルトの名無しさん
07/01/23 10:00:43
>>1は知った知識をむやみに口に出したがるんだな。
それがたった一部の悪い所にもかかわらず、よい部分を知ることもなく
検討もしない。

すべて自分の思い込みで、自分がいいと感じた(たまたま最初にいいと思った)
方法しか使わない。

再帰が遅いとかいって使わないし、読みにくくなるだけなのにグローバル変数乱用したがるし。
プログラムの王道はわかってないようだな。

そもそもそんな馬鹿みたいにメモリ使うプログラムが速いとは思えないが。
スラッシングで遅くなるぞ

111:デフォルトの名無しさん
07/01/23 10:04:09
URLリンク(up2moe.moe.hm)
直ったよー

112:デフォルトの名無しさん
07/01/23 10:20:59
>>111
仕事はえぇぇええええw
俺もやってたが、foreの展開までしかいけんかったww

113:デフォルトの名無しさん
07/01/23 10:23:53
>>111
remove()とcupu()は関数にするだけじゃだめだ。ビルドしてないだろおまい

114:デフォルトの名無しさん
07/01/23 10:30:20
リファクタしようと思ったら発狂しそうになった

115:デフォルトの名無しさん
07/01/23 10:30:23
マクロを展開するだけならプリプロセッサでできるね

116:1
07/01/23 10:35:34
うまく動かないのは、mtd()だけであとは正常動作をしていると思われます

117:デフォルトの名無しさん
07/01/23 10:36:09
>>111
プリプロセッサ通してコードフォーマットかけた
>>113
はい、やってません。

118:デフォルトの名無しさん
07/01/23 10:43:21
>>117
アンカー>>112だった。
>>113
コンパイル通した。
remove()とcupu()はとりあえずマクロに戻した。
URLリンク(up2moe.moe.hm)


119:デフォルトの名無しさん
07/01/23 11:05:40
>>103
「でも」「とにかく」
これダメプログラマの言い訳の典型だな
大昔のFORTRANじゃあるまいし,再帰の利点が理解できないんじゃ
アルゴリズムの良し悪しが云々できるレベルじゃない
きちんとしたプログラミングの教育を受けてないみたいだが
取り敢えずプログラミング作法とプログラミング書法辺りは読んどけ
後,雑誌の記事とか友人から得た知識は捨てろ

120:デフォルトの名無しさん
07/01/23 11:08:20
>>119
いや・・>>103は偽者だから・・
でも言ってることは正しい

121:デフォルトの名無しさん
07/01/23 11:10:42
も一個
プログラムの最適化に関しても勘違いがある
プログラムの実行時間の90%以上はコードの極一部に集中する
だからそこだけ頑張って他は読み易さ/改良のし易さを優先する
全体をインライン展開しようなんてのはアホのやること 1%も変わらん
兎に角,お前が考え出したアルゴリズムの正しさの確認が最優先だろ?
そのためにプログラムにして実際に動かすんだから
正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ

122:デフォルトの名無しさん
07/01/23 11:13:22
>>120 そうなの?<偽者
まぁどっちでもいいや

123:デフォルトの名無しさん
07/01/23 11:14:22
だめだこいつ new して delete してない
はやく何とかしないと

>>121
>正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ
俺もそう思う


124:デフォルトの名無しさん
07/01/23 11:18:12
>>1 にはこれを読むことをすすめておく
URLリンク(www.pro.or.jp)

125:デフォルトの名無しさん
07/01/23 11:21:04
あとさぁ、最適化にこだわるんだったら何でC++使ってるわけ?

126:デフォルトの名無しさん
07/01/23 11:22:26
>>124
俺もそれ見たことある
それに出てくる悪い例でも1のに比べたらはるかにいいと思う

127:デフォルトの名無しさん
07/01/23 11:24:18
確かに、再帰は末尾再帰にしない限りこういう用途では使うべきではないと思う。

128:デフォルトの名無しさん
07/01/23 11:25:55
>>125
hashtable の初期化が面倒なだけじゃね?あれはC++と言ってもほとんどCだ。

129:デフォルトの名無しさん
07/01/23 11:26:57
>>127
今は(未だ)そういうレベルじゃないよ。

処で、>1の使っている糞コンパイラは配列のインデックスにcharを使っても警告出さないの?
アセンブル出力見れば判るが凄く無駄なコードを出力する原因になっているんだけど。

130:デフォルトの名無しさん
07/01/23 11:30:53
遅くても良いから動くコード書いてください
動くコードができたら、アルゴリズムを考え直しましょう
アルゴリズムを考え直したら、書き直しましょう
その連続です。
最適化はコンテストの直前にするものです。

131:デフォルトの名無しさん
07/01/23 11:44:27
>>前スレ1
MTDって亜流がいっぱいあるんだけど、どれを参考にしたの?

132:デフォルトの名無しさん
07/01/23 11:48:39
msu()、charの参照なんて無意味なものを引き数にしている。
serch()、何このtypo。
mtd()、ddが未使用。
adress()、xhは未初期化でアクセスされることない?

133:デフォルトの名無しさん
07/01/23 11:49:07
void fn(char t){
  char i,bnn[64];
  for(i=0;i<64;i++){
    if(bt[wb[t][i/8][0]][i%8]==1)printf("●");
    if(bt[wb[t][i/8][1]][i%8]==1)printf("○");
    else printf(" ");
    if(i%8==7)puts("");
    //初期化しておく
    bnn[i]=0;
    if(bt[wb[t][i/8][2]][i%8]==1)bnn[wz[i]]=1;
  }
  puts("");
  for(i=0;i<64;i++){
    if(bnn[i]==0)printf(" ");
    else printf("*");
    if(i%8==7)puts("");
  }
  puts("");
}

グローバル変数が何の目的で使われてるのかわからんのが多すぎ。

134:デフォルトの名無しさん
07/01/23 12:02:06
よーし、俺も俺も。

inline void serch(char w)
{
  if (w == 97)
  {
    z = 97;
    goto EE;
  }

中略...

  z = 97;
  EE:
  ;
}

return; 使えよw

135:デフォルトの名無しさん
07/01/23 12:08:56
if (mode[tsu[1]] == 1) {
mode[tsu[1]] = 0;
mode[tsu[1] + 1] = 1;
goto GG;
}
if (hash[x].a <= g) {
if (g <= hash[x].b) {
GG:
;
if (kar[tsu[1] + 1] < 1) {
if (kt == 0) {
hmove();
}
move();
goto BB;
}
}
}
すげぇ、ifブロックに飛び込んでる。

136:デフォルトの名無しさん
07/01/23 12:18:41
ちょっとロジックを追おうと思って、cupuマクロで使っているremove()マクロを見たら、
gotoしている先が別のforループの中だと知って諦めた。

137:デフォルトの名無しさん
07/01/23 12:20:40
これは、もう
2重以上のループからでるとき以外go toは使うなと
指導すべきタイプの人やね。

138:デフォルトの名無しさん
07/01/23 12:24:33
違うよ


リアルだと絶対に関わりたくないタイプの人だよ。

139:1
07/01/23 12:30:40
わかりやすくするために頑張ってオブジェクト指向プログラムに書き換えますよ
待ってて下さい!

140:デフォルトの名無しさん
07/01/23 12:45:11
とりあえず分かった範囲だけ書いてみる。

bt[a][b]
    意味:        a の、下から b ビット目の値
    代替記法:    ((a >> b) & 1)
wb[t][y][c]
    意味:        ビット詰めされた盤面
                  c は色で 0:黒 1:白 2:何もおかれていない
                  y は盤面の縦座標(0~7)
                  t は不明
zw[x+y*8]
    意味:        座標で指定された手の優先度。ban の写し。

wz[n]
    意味:        nで指定された優先度の手の座標。zwの逆引き
we[n]
    意味:        3のn乗
ch[n]
    意味:        0:黒、1:白として、色の入れ替え。もしくは論理反転。
    代替記法:    (1-n)
F
    意味:        たぶん現在の手番???
zi[p]
    意味:        縦座標(y)の値。
    代替記法:    (p/8)
zj[p]
    意味:        横座標(x)の値。
    代替記法:    (p%8)

>1 は、最低限これらを全て分かりやすい名前に書き換えるべし。

141:デフォルトの名無しさん
07/01/23 12:49:23
>>139
待て。
俺たちが手直しするまで何もするな。
手直しが終わってからそれを元に書け。

142:デフォルトの名無しさん
07/01/23 12:51:27
どうしてこんなに面白いの?

143:デフォルトの名無しさん
07/01/23 13:00:43
>kar[0] *= (0.9 + (double)(cr / (10 * (1001))));
これ、10010で割るのは整数でいいの?

144:デフォルトの名無しさん
07/01/23 13:04:13
これは、ネタの傾向からみて、
引退した爺さんプログラマーがネタで
ドキュソを演じてるんじゃないかなぁ

145:デフォルトの名無しさん
07/01/23 13:05:43
>>139
余計なことすんな。
書き換えとかしなくていい。今のおまいのレベルじゃ読みやすくなる保証は皆無

どういうものを作りたいのか俺たちに教えてくれればいいんだぜ

146:デフォルトの名無しさん
07/01/23 13:26:05
たしかに{}の入れ具合とか、初めてにしちゃできすぎ

147:デフォルトの名無しさん
07/01/23 13:43:09
一文字変数の所為もあって、ループ制御変数と一時変数の名前がぶつかっていたり、
酷いのはグローバル変数とも名前がぶつかっていたり。
取り敢えず、レガシースタイルは諦めて「使う場所での宣言」にしないとどうしようもない。
最低限、グローバル変数は一文字名前禁止だな。

148:デフォルトの名無しさん
07/01/23 13:49:12
>>139
lp、li、lj、ba の意味が分からないので解説頼む。

149:デフォルトの名無しさん
07/01/23 13:55:55
>>148
//周囲のマスとのインデックス差
char lp[8] = {1, 9, 8, 7, -1, -9, -8, -7};
//周囲のマスとの縦座標の差
char li[8] = {0, 1, 1, 1, 0, -1, -1, -1};
//周囲のマスとの横座標の差
char lj[8] = {1, 1, 0, -1, -1, -1, 0, 1};
だと思う
ba ってあったっけ?banの事なら
//コマのおいてあるところは1
unsigned char ban[64]=
{
0, 48, 12, 4, 5, 13, 49, 1,
55, 56, 40, 32, 33, 41, 57, 50,
19, 47, 28, 20, 21, 29, 42, 14,
11, 39, 27, 64, 64, 22, 34, 6,
10, 38, 26, 64, 64, 23, 35, 7,
18, 46, 31, 25, 24, 30, 43, 15,
54, 59, 45, 37, 36, 44, 58, 51,
3, 53, 17, 9, 8, 16, 52, 2
};
この順番で着手を試すらしい。


150:デフォルトの名無しさん
07/01/23 13:57:48
lp[n] = li[n] * 8 + lj[n]
この関係式が成り立つっぽ

151:デフォルトの名無しさん
07/01/23 13:59:54
あ、main()の中にbaってあったね。
よくわからん。

152:1
07/01/23 14:02:20
>>lp、li、lj、ba

+が現在位置としてlが下の番号のときに
lp(l) は、z (=8*x+y)での移動位置
li(l)、lj(l)は (x,y)座標での移動位置

567
4+0
321

baはテンポラリでbf()()を生成するときに使用

bf(番号0)(z) zに対して通常の座標を返す
bf(番号1)(z) zに対して左右反転の座標を返す
bf(番号2)(z) zに対して左に90度回転した座標を返すなど

153:デフォルトの名無しさん
07/01/23 14:03:41
>>149-150,152
㌧クス

154:デフォルトの名無しさん
07/01/23 14:10:56
>>1前スレ1
MTDの解説サイト教えて。
お前が見たところ。

155:1
07/01/23 14:14:24
>>154
Research Re: search & Re-search
URLリンク(www.cs.vu.nl)

156:1
07/01/23 14:16:03
>>154
MTD(f), a minimax algorithm faster than alpha-beta
alpha-beta法の改良の1つであるMTD(f)についてのページ。
MTD(f)の他、置換表付alpha-betaの実装についても書かれています。
また、彼のPh.D ThesisであるResearch Re: search & Re-searchは
様々なゲーム木探索の手法について詳しく述べたもので、一読の価値があります。
URLリンク(fujitake.dip.jp)

157:デフォルトの名無しさん
07/01/23 14:24:54
あぁこれか。
前にざっと読んだ事ある。

158:1
07/01/23 14:30:13
でも、使っているのはMTDサーチではないですよ

>>135の部分ですが、

a <= 予測値 <= bならば確率が残っている範囲で指し進めるモードと、
確率が残っていたら指し進めてあとでa <= 予測値 <= bのチェックを行う
2つのモードがあります 深さでは探索を終わりにはしません

159:1
07/01/23 14:34:25
名付けるとMTD(f , r)サーチですかね

160:デフォルトの名無しさん
07/01/23 14:38:46
>名付けるとMTD(f , r)サーチですかね
rは何の意味?

161:1
07/01/23 14:40:25
>>160

r = 局面の予測された実現確率
f = 局面の予測された評価値

162:1
07/01/23 14:43:36
将棋では、大駒や金銀を取る手の実現確率の予測はしやすいという点があります

163:デフォルトの名無しさん
07/01/23 14:48:52
r=realizability?
なるほど。
やりたいことは大体わかった。

164:デフォルトの名無しさん
07/01/23 15:53:50
BASICで書いた方がいいよ>>1

165:デフォルトの名無しさん
07/01/23 15:54:22
>>1次からコメント入れるようにしてね

166:デフォルトの名無しさん
07/01/23 16:17:21
>>164>>165
1にそういうことを言っても無駄だと思う。
なぜそうした方がいいのかを何とかして理解させる必要がある。
自分が間違っていると思わない限り、1はいつまでも我が道を行くだろう。

167:デフォルトの名無しさん
07/01/23 16:17:40
>>163に期待

168:デフォルトの名無しさん
07/01/23 16:22:49
そもそも2chでスキルもない癖に自分専用スレを平気で立てる時点でもうアウト

169:デフォルトの名無しさん
07/01/23 19:12:34
優れた人は何も言わずにモノだけ出すからな
スレ立てて騒ぐ奴に限ってろくなものを出さない

170:デフォルトの名無しさん
07/01/23 22:25:03
1は人の意見を真摯に聞くべき。
煽りじゃないよ。
会社でも1人で突っ張ってんの?
これが正しいんですとか言ってたらだめだよ。

171:デフォルトの名無しさん
07/01/23 22:25:59
>>139
わかりやすくするんなら、オブジェクト指向じゃなくて構わないので
関数の分割と、変数名の変更と、利用すべきところでの再帰の利用
をして欲しい。

172:デフォルトの名無しさん
07/01/23 22:28:14
ヒント:オブジェクト指向だと遅いw

173:デフォルトの名無しさん
07/01/23 22:33:41
>>170
ヒント 小学生

174:デフォルトの名無しさん
07/01/23 22:36:12
>>172
ヒント:覚えたての知識をひけらかしたい

175:初心者
07/01/23 22:42:27
if (mode[tsu[1]] == 1) {
mode[tsu[1]] = 0;
mode[tsu[1] + 1] = 1;
funcA();
}
else if (hash[x].a <= g && g <= hash[x].b) {
funcA();
}


funcA()
{
if (kar[tsu[1] + 1] < 1 && kt == 0) hmove();}
move();
goto BB//糞;
}


176:デフォルトの名無しさん
07/01/23 23:29:38
最適化とかは動くものができてからの話なわけで

177:デフォルトの名無しさん
07/01/23 23:40:35
>>176
>>1は質の高いアルゴリズムによる高速化と、最適化による高速化がごっちゃになっているのかもしれない

178:デフォルトの名無しさん
07/01/24 00:04:10
ここまで来るとただの馬鹿だな
根拠の無い自信でつっぱねるだろうが

179:デフォルトの名無しさん
07/01/24 00:36:33
配列の先頭とそれ以外で用途が違うから読みにくい

180:デフォルトの名無しさん
07/01/24 01:14:36
>>1さん 俺は弱いリバーシしか作ったことないけれど、
実現確率が正確に求まるとは到底思えない。矛盾してないかい。
自分的には確率使うなら囲碁のモンテカルロ法とかのが
ずっと良さそうな気がする。
URLリンク(www.geocities.jp) (加藤さんの翻訳)

181:デフォルトの名無しさん
07/01/24 01:59:10
>>前スレ1
お願いだから将棋に帰ってください。
これ以上リバーシを冒涜しないでください。
スレリンク(tech板)

182:1
07/01/24 02:35:27
まだ、人の意見を取り入れられるところまで行ってないんです
根本的にまともに動作してないのに、体裁だけ整えてあとは他人に任せるとかは駄目でしょ?
まともに動作したらより良くするために意見をどんどん取り入れますよ

>>175
if (hash[x].a <= g && g <= hash[x].b) は、ifを分割した方が速度が出るとおもいますよ

>>180
実現確率を正確に求めてないんです
評価値順に手を並び替えて一手目50%、二手目25%とか半分づつにしているんです
評価値の高いものを深く読むということに使っているんです

183:デフォルトの名無しさん
07/01/24 02:40:18
速度が出るとおもうじゃなくて
実際出るかどうかだろ?

184:デフォルトの名無しさん
07/01/24 02:43:39
>実現確率
>一手目50%、二手目25%
適当にこんな数字決めてないでMPC使えばいいじゃん

185:1
07/01/24 02:44:27
>>183

if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため
速いおもいますが 実際にはやっていませんが...どうなんでしょうか?

186:1
07/01/24 02:47:05
MPCとはなんですか?

187:デフォルトの名無しさん
07/01/24 02:49:12
>>185
URLリンク(www.st.rim.or.jp)

188:デフォルトの名無しさん
07/01/24 02:50:07
>>186
URLリンク(www.cs.ualberta.ca)

189:デフォルトの名無しさん
07/01/24 02:53:01
前も同じリンク教えたのに読んでなかったのかよ

190:デフォルトの名無しさん
07/01/24 02:53:35
今の段階でアドバイスしてる多くは、より良い動作を実現させるための助言じゃなくて、
まず動かすための、プログラムを見易くするためのアドバイスが多いと思うんだけど、
まともに動かせるように助言してくれてるのに、あえて無視してるのか?まぁなんてことでしょう!

191:デフォルトの名無しさん
07/01/24 02:55:13
>if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため
>速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
そう思うのは勝手ですが、そんなゴミを垂れ流さないでください。
A && B と書いたとき、Aが偽だとBは評価されません。
つまり、 A && B はif (A) B と概ね等価になります。
>187のリンク先の下の方を参照してください。

192:デフォルトの名無しさん
07/01/24 02:59:14
コンパイラの最適化でもそういうとこってうまいことやってくれるんでしょ?

193:1
07/01/24 03:00:51
>>188
ありがとう読んでみます

ifはわからないのでrand()を使って実験してみる

194:デフォルトの名無しさん
07/01/24 03:01:21
取り敢えずのゴールは
>>1の考えるアルゴリズム積んだリバーシを動かすこと」
(WZebraを倒すとかは取り敢えず後回し)

「アルゴリズムは完成した」 (前スレ>>190での、>>1の発言)
「考えているアルゴリズムに変更の余地はない。その動作を正確に実現するコードを作るだけ」 (前スレ>>806での、>>1の発言)

現状として、
>>1はコーディングが出来ない (または、限りなく下手)
そして、このスレには>>1のアルゴリズムは知らないが、コーディングを出来る人が揃っている。



何故>>1が 「アルゴリズムの概念だけを公開して、コーディングは他人に任せよう」
と思いつかないのか、そしてそれを指摘されても無視し続けるのか、理解出来ない。 (←以前誰かが指摘してた気がする
「数学やってる」っていってるくせに、三段論法とか知らないのかな?
まあ論理学出来てる人にも見えないが……

195:デフォルトの名無しさん
07/01/24 03:41:36
>>185
てきとーに測定してみた。

a=0, b=0: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks
a=0, b=1: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks
a=1, b=0: if(a && b): 2.0 clocks, if(a) if(b): 2.0 clocks
a=1, b=1: if(a && b): 4.0 clocks, if(a) if(b): 4.0 clocks

どっちも同じだね。

196:1
07/01/24 03:59:40
もしかしたらまとめた方が速いかも....
実験では同速度だったけど
分岐予測を当てやすくさせるためにはまとめた方がよさそう

197:デフォルトの名無しさん
07/01/24 04:10:28
バグ取りを先にやれよ
バグを含んだまま機能の追加変更すんな

198:デフォルトの名無しさん
07/01/24 04:13:03
やるなと言えばやる
やれと言えばやらない
どうしようもないな

199:デフォルトの名無しさん
07/01/24 07:46:01
一応幾つかの関数はリファクタリングしてすっきりしたのだが、
mtd()がどうにもならなすぎるのでもう飽きた。
せめてループ制御変数を使い回すのを何とかしないとデバッグどころじゃないぞ、と。

200:デフォルトの名無しさん
07/01/24 07:50:09
確かに
そろそろ飽きてきてるかな……


クマー

201:デフォルトの名無しさん
07/01/24 09:38:10
iやjをループ変数意外で使ってる

202:デフォルトの名無しさん
07/01/24 09:39:12
×意外
○以外

203:デフォルトの名無しさん
07/01/24 09:49:42
for(i=0;i<125;i++){
中略
}
if(i==126){
ここは実行されることがあるのか
}

204:デフォルトの名無しさん
07/01/24 09:51:57
>>198
韓国人だなww

205:デフォルトの名無しさん
07/01/24 09:52:50
>>203
wwwwwwwwwww

206:デフォルトの名無しさん
07/01/24 09:58:56
未だに最適化を理解しない>>1
そんなにスピードが気になるならC++なんぞ使うんじゃない

207:デフォルトの名無しさん
07/01/24 10:07:30
>>105
これ動かなくね?
延々と
「実現確率=0.50000 count=1 手数=4 指し手=19 読み深さ=0 予想値=0 a=65 b=65」が繰り返されてる

208:207
07/01/24 10:10:33
実現確率の出力のところをコメントアウトすればいいのね

209:デフォルトの名無しさん
07/01/24 10:18:05
>>1はアルゴリズムを人にわかるように説明できないんだろ

210:デフォルトの名無しさん
07/01/24 10:21:11
>>116
> うまく動かないのは、mtd()だけであとは正常動作をしていると思われます

mtd()だけって…>>1のソースの大半はmtd()関数だろ。

211:デフォルトの名無しさん
07/01/24 10:59:36
言い方がどれもうけるw
ヘボさが見え隠れしてるw

212:デフォルトの名無しさん
07/01/24 11:11:30
MTDをちゃんと理解してないからmtd()のバグがなくならないんでしょ。
プログラムに知識のダメ出しをされてるんだよ。

213:デフォルトの名無しさん
07/01/24 11:25:46
>>180
モンテカルロ法は囲碁には適用できるが、リバーシには適当とは言えないよ

214:デフォルトの名無しさん
07/01/24 11:46:54
オセロの評価関数はパターン評価を基本にして、
着手可能箇所数とか偶奇性とかその他独自のフィーチャーを加えて
教師あり学習をさせるのがいい。
探索はPVSとかMTD(f)あたりで置換表やMPCを併用する。

215:デフォルトの名無しさん
07/01/24 12:07:24
プログラムの手伝いしたいんだけど、オセロのアルゴリズムとかあんま知らないから
>>1がどんなことやろうとしてるのかまったくわかんないし、そのせいでソースも読めないんだよな。

minmax法とかαβ法くらいなら理解できるんだけど、英語の論文とかまったく知識ないから理解できない。
ちょっとでもかじってればわかるんだろうけど。

216:デフォルトの名無しさん
07/01/24 12:14:52
minmax法やαβ法がわかってれば次はNullWindowSearchを理解すればいいね
URLリンク(ray.sakura.ne.jp)
その先はそれほど大きな違いは無いよ

217:デフォルトの名無しさん
07/01/24 12:19:45
入力ファイル→出力ファイルというようにバッチ的にC言語のインデント処理ができるUnixコマンドってありますか?

218:デフォルトの名無しさん
07/01/24 12:22:41
Unixコマンドでは知らないけど自分はArtistic Style使ってる。

219:デフォルトの名無しさん
07/01/24 12:43:29
>>216

読んでみるよ

220:デフォルトの名無しさん
07/01/24 13:18:24
te = new unsigned char[67108914];

67108914ってなんだろう
バイト数でいうなら67108914=64MB+50B

221:デフォルトの名無しさん
07/01/24 14:18:00
>>217
indentって標準かな?

222:デフォルトの名無しさん
07/01/24 14:45:12
teは手を登録してるようだけど・・
ここにもバグがありそう
>>前スレ1
変数名・関数名が何の省略かを全て書いてよ

223:デフォルトの名無しさん
07/01/24 16:43:37
変数名・関数名まとめ
140 デフォルトの名無しさん sage 2007/01/23(火) 12:45:11
とりあえず分かった範囲だけ書いてみる。
bt[a][b] 意味: a の、下から b ビット目の値 代替記法: ((a >> b) & 1)
wb[t][y][c] 意味: ビット詰めされた盤面
c は色で 0:黒 1:白 2:何もおかれていない
y は盤面の縦座標(0~7)
t は不明
zw[x+y*8] 意味: 座標で指定された手の優先度。ban の写し。
wz[n] 意味: nで指定された優先度の手の座標。zwの逆引き
we[n] 意味: 3のn乗
ch[n] 意味: 0:黒、1:白として、色の入れ替え。もしくは論理反転。 代替記法: (1-n)
F 意味: たぶん現在の手番???
zi[p] 意味: 縦座標(y)の値。 代替記法: (p/8)
zj[p] 意味: 横座標(x)の値。 代替記法: (p%8)

>1 は、最低限これらを全て分かりやすい名前に書き換えるべし
152 1 2007/01/23(火) 14:02:20
>>lp、li、lj、ba
+が現在位置としてlが下の番号のときに
lp(l) は、z (=8*x+y)での移動位置
li(l)、lj(l)は (x,y)座標での移動位置
567
4+0
321

baはテンポラリでbf()()を生成するときに使用

bf(番号0)(z) zに対して通常の座標を返す
bf(番号1)(z) zに対して左右反転の座標を返す
bf(番号2)(z) zに対して左に90度回転した座標を返すなど

224:デフォルトの名無しさん
07/01/24 17:33:45
このプログラムはリファクタするより1から作り直したほうが早い。

225:デフォルトの名無しさん
07/01/24 17:37:34
そうすると最初のスレの>>1はどーなんの

226:1
07/01/24 17:37:56
今、オブジェクト指向で一から作り直してますから待ってて下さい!

227:デフォルトの名無しさん
07/01/24 17:54:09
>>226
おまいはホントに誰の話しも聞いてないんだな

228:1
07/01/24 18:14:57
>>227
なんでよ?224の話の通りだよ

229:デフォルトの名無しさん
07/01/24 18:16:44
そろそろ>>1はトリップつけてくれ、、、、いややっぱいいやw

230:1
07/01/24 18:18:57
オブジェクト指向といってもC++の機能を使わなくたって出来るんだよ
普通のCでも
オブジェクト指向が鈍いっていう事はない
関数の分割単位をわかりやすくする目的がある

231:デフォルトの名無しさん
07/01/24 18:23:48
ふーん、すごいね

232:デフォルトの名無しさん
07/01/24 18:29:49
>>230
Cでオブジェクト指向的なコーディングができることぐらい、
ここにいる主要な人達のほとんどが知っていることだよ。
それでも、オブジェクト指向的に書くならC++の方が良いと言っているということは、
やはりCでは強引に書かないとできないという事なんだよ。

233:デフォルトの名無しさん
07/01/24 18:45:03
1から作り直したほうが早いのは間違いないが、

>>1が作り直すのは絶対に止めた方が良い。

234:デフォルトの名無しさん
07/01/24 18:59:19
>>228>>230>>1に見えないな

オブジェクト指向とまでいかなくても構造化してくれるならそれで充分

235:デフォルトの名無しさん
07/01/24 19:26:03
>>234 同意

236:デフォルトの名無しさん
07/01/24 19:36:00
何故>>1にそんなにかまってやってるの?

237:デフォルトの名無しさん
07/01/24 19:44:26
みんな>>1のことが好きなのよ

238:デフォルトの名無しさん
07/01/24 19:59:09
gotoの使いかた等に現れる
>>1の溢れんばかりの素質が皆を引きつけてるんだよ。

239:デフォルトの名無しさん
07/01/24 20:00:39
ふーん。まぁがんばれ
>>224>>227も俺なんだけどな。

240:デフォルトの名無しさん
07/01/24 20:02:34
>>233
吹いた

241:デフォルトの名無しさん
07/01/24 20:11:45
何故>>1はgotoを使うのだろう
そこらへんの本や入門サイトにはgotoなんて載ってないよね?
もしgotoの記述があっても、それによってもたらされる害についての説明だと思うのだけど

242:デフォルトの名無しさん
07/01/24 20:41:13
>>241
>>1はプログラミングで論理的に構造を考える能力が足りない。
まぁ初心者だからな。

243:デフォルトの名無しさん
07/01/24 21:06:31
wzebraインストールすらできないw

244:デフォルトの名無しさん
07/01/24 21:11:52
作れるとしたらまず最強といわれるやつに勝てる人でかつプログラム経験豊富な人であれば
自分の思考パターンをそのまま当てはめればいいわけでそんなに難しくないんじゃないか?
どんなアルゴリズムでも癖があるから万能ではなくてもただ1つに勝つだけなら単純だ
BearRevとやらはやってみたが弱すぎてアルゴリズム考えるのも馬鹿馬鹿しいんだが
Wzebraはなんかエラーでて動きませんw

245:デフォルトの名無しさん
07/01/24 21:20:02
wzebraは生身の人間ではまず勝てない

246:デフォルトの名無しさん
07/01/24 21:20:30
>作れるとしたらまず最強といわれるやつに勝てる人で
そんな人間は存在しない

247:デフォルトの名無しさん
07/01/24 21:24:27
リバーシって確か、かなり前に世界チャンプが
コンピュータに負けたゲームだった記憶がある。


248:デフォルトの名無しさん
07/01/24 21:25:37
その世界チャンピオンはベストコンディションではなかったとの話もある。

249:デフォルトの名無しさん
07/01/24 21:25:58
>自分の思考パターンをそのまま当てはめればいいわけで
これだと弱い。
オセロではそれよりはるかにいい方法が発明されてるから
ルールを知っている程度の人でも世界チャンピオン以上のプログラムが作れる

250:デフォルトの名無しさん
07/01/24 21:35:54
ベストコンディションでも勝てなかっただろうけどね
彼より前のチャンピオン達はプログラムとの対戦から逃げてると言われてて
彼が対戦した頃には既に大差だったらしい

251:デフォルトの名無しさん
07/01/24 21:46:30
パンダ名人なげーw

252:デフォルトの名無しさん
07/01/24 21:57:35
まぁ実際逃げてたのかどうかは知らんけど
挑発はされてたかもしれんね

253:デフォルトの名無しさん
07/01/24 22:20:15
ブレークポイント設定しても全く引っかからんところがいくつかあるなぁ

254:初心者
07/01/24 22:30:39
>>1はこのすれで一番コーディング能力が
低いくせに人の言うことは聞かない。

速度なんか後で気にしたらいいのに。

255:デフォルトの名無しさん
07/01/25 01:52:27
アルゴリズムを話せない
プログラムもろくに書けない
なにこいつw

256:デフォルトの名無しさん
07/01/25 02:19:16
>>255
ヒント:小学生

257:デフォルトの名無しさん
07/01/25 06:44:23
bitboardのメリットを見事に殺してる・・・
シッタカが使うとこうなるんだなぁ

258:デフォルトの名無しさん
07/01/25 07:05:51
というか少しもbitboardじゃないよね

259:1
07/01/25 07:25:16
主に手を戻すときのコストが0になるという利点がある
24バイトのコピーのみ

260:デフォルトの名無しさん
07/01/25 07:48:55
利点しか見えてない方ですか?
1の使い方だとむしろ遅くなる原因では

261:デフォルトの名無しさん
07/01/25 08:41:42
この知ったかぷりはもはやギャグ

262:デフォルトの名無しさん
07/01/25 11:28:19
>256
確かに,普通では考えられない知識の偏り
実経験の無さ,そして思い込みの強さなど
小中学生辺りと考えるのが妥当か

263:デフォルトの名無しさん
07/01/25 11:43:34
小学生でも人の意見は聞くだろ

264:デフォルトの名無しさん
07/01/25 11:49:04
実力が伴わず、プライドだけ高い。
期限が守れていないということから、自己管理もできていない。
プライドの高さからおそらく大人なのだろう。
それも、子供のような未熟な大人。
ニートか?

265:デフォルトの名無しさん
07/01/25 12:39:09
2chでスレ立てて成功した開発系スレは
開発者が凄まじいスキルを持ってるか言われたとおり素直に従ってスキルアップするかのどちらかだ

266:デフォルトの名無しさん
07/01/25 12:53:16
とりあえず>>1も含めてお前ら全員馬鹿なのはわかったw

267:デフォルトの名無しさん
07/01/25 13:32:47
2chに馬鹿じゃない奴がいると思ってるのか?

268:デフォルトの名無しさん
07/01/25 13:44:09
我々の業界では褒め言葉です

269:デフォルトの名無しさん
07/01/25 16:56:23
このスレは、ム板でもトップクラスのレス数(勢い)だったりする。

270:デフォルトの名無しさん
07/01/25 17:36:39
ほんとだ。C/C++宿題の次だな

271:デフォルトの名無しさん
07/01/25 19:56:36
>>1が帰ってくる前に。
座標だけでも標準の棋譜に変換しとかないとな。

272:デフォルトの名無しさん
07/01/25 20:31:15
自分も初めてオセロを作ってみた。
白も黒も乱数でコマを置くようにしたら、白の方が常に数パーセント勝率がいい。

273:デフォルトの名無しさん
07/01/25 20:37:03
>>272
そうらしいね
どこかでそんな話題を目にしたと思って探してみた

スレリンク(sim板:383番)
スレリンク(sim板:385番)

274:デフォルトの名無しさん
07/01/25 20:42:30
>>272
多分、白のほうが辺、角を取れる確率が高いからだと思う。

(と、小学生の頃、思ってて、密かに必勝法の一種だと思ってたけど、
 本当かどうか知らない)

275:デフォルトの名無しさん
07/01/25 20:51:25
>>272
モンテカルロ法になるのかな?
その方法だと白が有利のような結果がよく出るんだけど、
ゲーム木のDBを構築すると引き分けの確率が高いっていう結果が出る。
この違いはなんなんだろう?

276:デフォルトの名無しさん
07/01/25 21:14:23
白のほうが適当に手を選んだとき、引き分けの局面なら最善手が複数あって間違いにくく
勝ってる局面だったら、勝ちの手が黒より多くあるってことじゃない
逆に白が一旦間違えて負けの局面にした場合、黒はそのまま勝ちを維持できる手が白より少ないとかで

277:デフォルトの名無しさん
07/01/25 21:16:18
>>273-275
人同士の対局でも白ほ方が勝率いいんだね。
モンテカルロ法っていうのが何なのか分かりません。^^;

どういうやり方がいいのか全然わからないんだけど、自分がしたのは、

1.コマが置ける場所(候補)を探す
2.その全候補に0(ゼロ)から順に整数を割り振る
3.候補数を最大値として乱数を発生させる(0~候補数で乱数発生)
4.発生した乱数にコマを置く

278:デフォルトの名無しさん
07/01/25 21:34:46
>>275
こういうのはモンテカルロとは言わないだろ^^;

279:デフォルトの名無しさん
07/01/25 21:40:38
BearRevのぱんだで名人設定でやってみたんだけど
こっち黒先手
中盤で全部黒くなったんだがw

280:デフォルトの名無しさん
07/01/25 21:44:15
人間が相手でも少数取りで囲わせるのがまあ一般的な戦法だけど
この手の人は逆に囲い込ませてるつもりがどんどん追い詰められてることに気づかず
一気に埋められるというミスをしやすい
どうもこのアルゴリズムもこの手の人間の思考パターンのようだw

281:デフォルトの名無しさん
07/01/25 21:48:48
てか同じアルゴリズムの土台で考えるから精度の高いものほど勝ち目は無いだろう
オセロってのは定石が逆に不利になるような戦法もあるんだから
そういうアルゴリズム組めば大抵勝てると思うがね

282:デフォルトの名無しさん
07/01/25 22:30:19
土台(パターン、人間チャンピオンを超えるにはこれだけでも十分なくらい)は同じだけど、
プログラムの間では独自のフィーチャーや定石システムの分で差がついてる。
パターンでも一部で独特のとり方を採用してるものはあるけどね。
この2種類のセットが最もよく使われてるかな。
URLリンク(fujitake.dip.jp)
URLリンク(www.kitsunemimi.org)
あー色々試したい・・・

283:デフォルトの名無しさん
07/01/26 00:50:34
>>272-278
強いかどうかは別として面白そうだったので、試しにランダムに打っていって
勝率の期待値を計算し、期待値が高い手を選ぶプログラムを作ってみた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

ちなみに相当弱い。

284:デフォルトの名無しさん
07/01/26 00:55:42
>>283
乙。動かしてみる。

285:デフォルトの名無しさん
07/01/26 02:07:40
>>272
白番のほうが最後の石を置けることが多いから
って昔の本で読んだことがある。
ランダムな着手を仮定するとなおさらそんな気がする。

>>275
引き分けの確率は高いかもしれないが、今は白と黒だとどっちがどのぐらい
勝ち越すかの話では。

>>273
シミュレート板なんてあったのか。知らなかった。

286:デフォルトの名無しさん
07/01/26 02:40:52
>白番のほうが最後の石を置けることが多いから
人間向けの戦略で言えば偶数理論、
評価関数のフィーチャーで言えばパリティで考慮されてる。
盤全体で空きの偶奇をフィーチャーにしてるもの(1bit)もあれば、
盤を四つのエリアに分けてそれぞれに含まれる空きの偶奇をフィーチャーにしてるもの(4bit)も有る。

287:デフォルトの名無しさん
07/01/26 09:38:38
前スレ969ですが
余計なモノを沢山積んでみたら、かなり読めなくなって来た……('A`)


俺もランダムに打って勝敗カウントしてみましたが、イマイチ自作AIなんで自信が無い
(先手黒) 209勝 274敗 17分
(先手黒) 225勝 249敗 26分
(先手黒) 236勝 244敗 20分
(先手黒) 215勝 260敗 25分
(先手黒) 211勝 260敗 29分
(先手黒) 220勝 267敗 13分
(先手黒) 225勝 258敗 17分
(先手黒) 225勝 258敗 17分
(先手黒) 238勝 244敗 18分
(先手黒) 233勝 248敗 19分
      44.7% 51.2% 4.0%
なんか白が圧倒的に強いんですが……
これも偶数理論でおkですかね?

288:デフォルトの名無しさん
07/01/26 10:09:19
圧倒的ってほどでもないような

289:デフォルトの名無しさん
07/01/26 10:13:11
それくらいは誤差の範囲かも

290:デフォルトの名無しさん
07/01/26 10:52:15
>>289
大体σ≒0.7%で、3σ以上ずれているので、99%有意な差がある。

291:デフォルトの名無しさん
07/01/26 11:59:12
>>287
自分も1万回ぶん回してみた。
結果が似ているので、多分、あっていると思う。

10,000回の試行の結果
 黒の勝ち数:4499・・・44.99%
 白の勝ち数:5089・・・50.89%
 引き分け.. : 412・・・ 4.12%

292:デフォルトの名無しさん
07/01/26 15:03:31
>>287,291 乙

乱数に素性の良いメルセンヌツイスターを使って千万回試行してみた。

黒勝 45.459±0.016 %
白勝 50.378±0.016 %
引分 4.163±0.006 %

白は50%より微妙に良いらしい。

293:デフォルトの名無しさん
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)


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