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