[表示 : 全て 最新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

100 名前:1 [2007/01/23(火) 08:15:28 ]
当初から、再帰は一度も使っておらず(これは初めから一貫していました)
手数と、読みの深さごとに必要な領域を確保しています
パスも含めて128手分とってあります

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

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

103 名前:1 mailto:sage [2007/01/23(火) 08:42:19 ]
それはしてません
でもとにかくループがいいんです
わかってください

104 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 08:50:58 ]
残念
sageちゃ駄目なんだ

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

up2moe.moe.hm/img/q480.txt

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

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

108 名前:1 [2007/01/23(火) 09:37:21 ]
直る=深く探索するです

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



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

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

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

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

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

111 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 10:04:09 ]
up2moe.moe.hm/img/q482.txt
直ったよー

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

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

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

115 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 10:30:23 ]
マクロを展開するだけならプリプロセッサでできるね

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

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

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




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

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

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

122 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:13:22 ]
>>120 そうなの?<偽者
まぁどっちでもいいや

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

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


124 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 11:18:12 ]
>>1 にはこれを読むことをすすめておく
www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji

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

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

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

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



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

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

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

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

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

133 名前:デフォルトの名無しさん [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:02:06 ]
よーし、俺も俺も。

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

中略...

  z = 97;
  EE:
  ;
}

return; 使えよw

135 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:18:41 ]
ちょっとロジックを追おうと思って、cupuマクロで使っているremove()マクロを見たら、
gotoしている先が別のforループの中だと知って諦めた。

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

138 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:24:33 ]
違うよ


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



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

140 名前:デフォルトの名無しさん mailto: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 は、最低限これらを全て分かりやすい名前に書き換えるべし。

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

142 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 12:51:27 ]
どうしてこんなに面白いの?

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

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

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

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

146 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:26:05 ]
たしかに{}の入れ具合とか、初めてにしちゃできすぎ

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

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



149 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 13:57:48 ]
lp[n] = li[n] * 8 + lj[n]
この関係式が成り立つっぽ

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

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度回転した座標を返すなど

153 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:03:41 ]
>>149-150,152
dクス

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

155 名前:1 [2007/01/23(火) 14:14:24 ]
>>154
Research Re: search & Re-search
www.cs.vu.nl/~aske/Papers/abstr-ks.html

156 名前:1 [2007/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は
様々なゲーム木探索の手法について詳しく述べたもので、一読の価値があります。
fujitake.dip.jp/sealsoft/thell/bibliography.html

157 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 14:24:54 ]
あぁこれか。
前にざっと読んだ事ある。

158 名前:1 [2007/01/23(火) 14:30:13 ]
でも、使っているのはMTDサーチではないですよ

>>135の部分ですが、

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



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

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

161 名前:1 [2007/01/23(火) 14:40:25 ]
>>160

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

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

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

164 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 15:53:50 ]
BASICで書いた方がいいよ>>1

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

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

167 名前:デフォルトの名無しさん [2007/01/23(火) 16:17:40 ]
>>163に期待

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



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

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

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

172 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 22:28:14 ]
ヒント:オブジェクト指向だと遅いw

173 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 22:33:41 ]
>>170
ヒント 小学生

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

175 名前:初心者 mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/01/23(火) 23:29:38 ]
最適化とかは動くものができてからの話なわけで

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

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



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

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

181 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 01:59:10 ]
>>前スレ1
お願いだから将棋に帰ってください。
これ以上リバーシを冒涜しないでください。
pc10.2ch.net/test/read.cgi/tech/1109307327/

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

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

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

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

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

185 名前:1 [2007/01/24(水) 02:44:27 ]
>>183

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

186 名前:1 [2007/01/24(水) 02:47:05 ]
MPCとはなんですか?

187 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:49:12 ]
>>185
www.st.rim.or.jp/~phinloda/cqa/cqa7.html

188 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:50:07 ]
>>186
www.cs.ualberta.ca/~mburo/publications.html



189 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 02:53:01 ]
前も同じリンク教えたのに読んでなかったのかよ

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

191 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん [2007/01/24(水) 02:59:14 ]
コンパイラの最適化でもそういうとこってうまいことやってくれるんでしょ?

193 名前:1 [2007/01/24(水) 03:00:51 ]
>>188
ありがとう読んでみます

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

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

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

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



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

195 名前:デフォルトの名無しさん mailto:sage [2007/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 [2007/01/24(水) 03:59:40 ]
もしかしたらまとめた方が速いかも....
実験では同速度だったけど
分岐予測を当てやすくさせるためにはまとめた方がよさそう

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

198 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 04:13:03 ]
やるなと言えばやる
やれと言えばやらない
どうしようもないな



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

200 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 07:50:09 ]
確かに
そろそろ飽きてきてるかな……


クマー






[ 続きを読む ] / [ 携帯版 ]

前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