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

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 ]
なんでもいいかと






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

前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