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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
まずBearRevのDLLを作る
そして世界最強っぽいリバーシプログラムWZebraを倒すスレ
期間は三ヶ月以内で頼む
どんどんアイデアとプログラムを頼む

本格的リバーシ BearRev
http://www.vector.co.jp/games/soft/dl/win95/game/se098822.html

最強っぽいリバーシプログラムWZebra
http://www.radagast.se/othello/download.html

姉妹スレ おまいら最強の将棋プログラムしてみろよ part5
http://pc8.2ch.net/test/read.cgi/tech/1109307327/l50
2デフォルトの名無しさん:2006/12/22(金) 10:02:47
オセロだろ
3デフォルトの名無しさん:2006/12/22(金) 10:23:34
最強はSAIOだよ
4デフォルトの名無しさん:2006/12/22(金) 11:48:12
再帰ですれば?たしかオセロはコンピュータに勝てないはず、世界チャンピオンでも
5デフォルトの名無しさん:2006/12/22(金) 11:50:37
三ヶ月以内ってところが胡散臭いな
6デフォルトの名無しさん:2006/12/22(金) 11:58:04
実はアイディアとソースが欲しいだけ
皆解ってると思うが踊らされないように
7デフォルトの名無しさん:2006/12/22(金) 12:00:55
>>2
オセロはタイトルに使うと著作権料とかとられないですか?
>>3
手に入るフリーのやつで更新もやっているではWZebraでは?
>>4
コンピュータの最強に勝つことが目標です
>>5
アイデアを結集すれば可能なはず
8デフォルトの名無しさん:2006/12/22(金) 12:03:35
>>6
外国製のソフトに負けている状況なんですよ
力を結集して破りましょう
9デフォルトの名無しさん:2006/12/22(金) 12:04:45
三ヶ月か
卒論など真っ盛りの時期ですね
10デフォルトの名無しさん:2006/12/22(金) 12:06:17
このスレで三ヶ月で世界最強を破ったら、次は北朝鮮の世界最強の囲碁プログラムを超えるんです
11デフォルトの名無しさん:2006/12/22(金) 12:08:11
オセロ
 商品名

つまりよくある ラップ言えば、何もかも「サランラップ」
というのと同じである
「宅急便」もそうだ
12デフォルトの名無しさん:2006/12/22(金) 12:17:14
参加者のみなさんへ

本格的リバーシ BearRev
http://www.vector.co.jp/games/soft/dl/win95/game/se098822.html

をダウソしてこの思考ルーチンを作成する方向で行きましょう
13デフォルトの名無しさん:2006/12/22(金) 12:19:01
あと、囲碁用はこれ
http://www32.ocn.ne.jp/~yss/cgfgoban_j.html
将棋用はこれ
http://www2.ttcn.ne.jp/~tsuma/download.htm
です
14デフォルトの名無しさん:2006/12/22(金) 12:21:22
>>9
このスレたてたきっかけは
iアプリ共同製作支援スレをみたからです
パソコンで動くアルゴリズムを作った方が簡単でしょ?

iアプリ共同製作支援スレ その1
http://pc8.2ch.net/test/read.cgi/tech/1165049332/
15デフォルトの名無しさん:2006/12/22(金) 12:28:20
>>14
そのスレは既に進んでいるようだが?
>パソコンで動くアルゴリズムを作った方が簡単でしょ?
意味不明
アルゴリズムはPCにも携帯にも基本的に依存しない
開発者はPC上でテストしてるだろうし
16デフォルトの名無しさん:2006/12/22(金) 12:29:48
終盤の定跡を強化したいんですがどうしたらいいですかね?
残り1つ、2つ、3つ、4つの局面をすべて生成して勝ち負けを記録するのが
いいか、どこから実戦譜をみつけてきてその勝ち負けを記録するのがいいか...
17デフォルトの名無しさん:2006/12/22(金) 12:33:03
>>15
でも、パソコンでやれば環境(ソフトもメモリとかも)はそろってて
あとは思考部分を作れば良いだけなんです
強いプログラムを作る(評価関数の決定とか)にはメモリ、CPUも大事だし
ここで作ったものが>>14のスレにも生かされるとおもいます
18デフォルトの名無しさん:2006/12/22(金) 12:34:57
>>16
ちょい修正
残り15つ、16つ、17つ...くらいからですかね?
あまりに短手数は記録する必要ないですからね
19デフォルトの名無しさん:2006/12/22(金) 12:35:08
とりあえず
sageろw
20デフォルトの名無しさん:2006/12/22(金) 12:41:25
>>14のスレの開発者がアイディアパクリたくてスレ立てたのか
21デフォルトの名無しさん:2006/12/22(金) 12:46:40
>>18
残り15手の局面が一致する確率でも考えてから言えよ。
基本的に>>1は勉強不足。
ここはム板だ。自分でアイディアだして実装できるくらいになってからスレ立てろ。
教えて君、くれくれ厨にしか見えない。
22デフォルトの名無しさん:2006/12/22(金) 12:49:48

他板まで宣伝しまくっててキモイ。
結局>>6でFAなんだから、アイディア提供したりして踊るんじゃなくて
>>1を踊らせて楽しもうや。

どうしても>>1の玩具になりたいってマゾな奴は真剣に考えてくれてもいいがw
23デフォルトの名無しさん:2006/12/22(金) 12:49:56
>>4
オセロなんてこんなに奥が深いゲームなの?
だれか俺にわかりやすく説明して
24デフォルトの名無しさん:2006/12/22(金) 12:54:19
奥が深くないからコンピュータが人間に勝てるんじゃない?といったらオセロ好きが怒るかもな。
奥が深くないというより、コンピュータにとっては探索範囲が狭くて単純。
25デフォルトの名無しさん:2006/12/22(金) 12:54:31
>>1
とりあえずこの辺から読んでみてはいかがでしょう?
http://hp.vector.co.jp/authors/VA015468/platina/algo/
http://uguisu.skr.jp/othello/index.html
http://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm
これはコンピュータオセロ界にブレイクスルーをもたらしたBuro氏の論文です。
http://www.cs.ualberta.ca/~mburo/publications.html
終盤解析が速いZebraのソースコードはここからダウンロードできます。
http://radagast.se/othello/zebra.html
評価関数の精度がいいNtestのソースコードはここからダウンロードできます。
http://othellogateway.com/ntest/Ntest/index.htm
26デフォルトの名無しさん:2006/12/22(金) 13:08:18
>>25
ありがとうございます!

>>21
終盤データベースを作るのはやめました
なぜならば終局個数は、回転、左右反転、前後回転で減らしても
2^64/16もあるから... 2^60個のパターンも記録しておけないから
27デフォルトの名無しさん:2006/12/22(金) 13:10:38
データベース無し、外部からの棋譜入力なしでいきましょう!
でも、置換表(ハッシュテーブル)はいれまる方向で
28デフォルトの名無しさん:2006/12/22(金) 13:13:40
ハッシュテーブルの領域は、2^24個くらいですかね
どのように局面を24bitに変換するか...?
29デフォルトの名無しさん:2006/12/22(金) 13:24:05
みんな実は、乗り気じゃないの?
今から10日以内にオセロプログラムを作り上げるから、それに負けたら参加してくれる?
30デフォルトの名無しさん:2006/12/22(金) 13:29:55
>>29
俺は参加するよ。
興味ある。
31デフォルトの名無しさん:2006/12/22(金) 13:35:32
>>30
ありがとうございます
32デフォルトの名無しさん:2006/12/22(金) 13:52:22
プログラミングする奴はごまんといるから、戦略をどうするかだね。
33デフォルトの名無しさん:2006/12/22(金) 14:00:41
フリーソフトでオセロソフトを出す
プレイした人のデータを集めて記憶
どのパターンにも最適の手を出せるようにしたら余裕だろ
34デフォルトの名無しさん:2006/12/22(金) 14:08:21
全部のパターンをとっておいて、そこから手を繰り出すのは
卑怯な気がしないでもないw
35デフォルトの名無しさん:2006/12/22(金) 14:19:12
全パターンは記録出来ないぽ
異なる終局の数だけで2^60あるので
それぞれに次の一手を1バイトで表したとすると
2^30ギガバイト必要ぽ
36デフォルトの名無しさん:2006/12/22(金) 14:40:26
ここいいよ

強いオセロプログラムについて
http://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm

bitboard (RunRunDietOnline)
http://vivi.dyndns.org/W/254

アルゴリズム解説
http://fujitake.dip.jp/sealsoft/thell/algorithm.html

オセロの試合結果は何通りか? @Wiki - 関連スレ
http://www9.atwiki.jp/othello/pages/48.html

オセロプログラムの作り方
http://hp.vector.co.jp/authors/VA015468/platina/algo/index.html
37デフォルトの名無しさん:2006/12/22(金) 14:43:53
とりあえずsageたらどうですか
38デフォルトの名無しさん:2006/12/22(金) 15:02:42
>>35
そんなにないよ
39デフォルトの名無しさん:2006/12/22(金) 15:11:22
>>38
白、黒、空の3つを64並べたら3^64種類あって回転、左右反転、前後反転を
同一視すれば3^60になる
局面数は 2^60 〜 3^60じゃない?
40デフォルトの名無しさん:2006/12/22(金) 15:23:05
41デフォルトの名無しさん:2006/12/22(金) 15:31:51
>>40
あり得ない局面が(単純に生成した物の)90%だとしても一桁減るだけだ
これでもメモリなどに記録することは出来ないな
42デフォルトの名無しさん:2006/12/22(金) 15:50:04
容量とかどうでもいい
全パターン記憶しろ それこそ最強だろ
43デフォルトの名無しさん:2006/12/22(金) 15:57:22
>>42
4.23911583 × 10^15 テラバイト程度必要
44デフォルトの名無しさん:2006/12/22(金) 17:58:34
勝ち負けが判定出来る少し前の所での評価関数が重要だな
序盤は、相手の差し手を少なくするように打つのがいいな
あと、終盤の詰み(勝ち負け)判定の高速化だな これはZebraのやり方を真似ると良いな
45デフォルトの名無しさん:2006/12/22(金) 18:03:38
コンピュータ同士の終盤戦では、 20手以上残っている段階で両者ともゲームの結果を読み切ってしまう
トップクラスのプログラムでは、これは通常残り24〜30手の時点である。
プログラムはどちらの勝ちかがわかると、次は最善手(スコアが最良になる手)を探しはじめる。
完全読みは通常勝敗を判断するよりはるかに困難で、残り23〜28手から始まるのが普通である。

評価される変化の多くは、悪手が含まれており、その悪手を咎める手を探すときには、
必ずしも最善手である必要はなく、十分な反駁手のいずれかを見つければよい。
プログラムができるだけ早く読み切りを行えるようにしたいので、思考時間が最も速くなる反駁手を探すことは意味がある。
これは打った後に相手の着手可能数が少なくなる手を、中盤より優先して探索することにより実現できる。
この手法は一般に、速さ優先探索 (Fastest-First heuristic) と呼ばれる。
http://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm
46デフォルトの名無しさん:2006/12/22(金) 18:16:12
以前ヤフーオセロでWZebraを使って20手以上で挑んだが倒されたことがある
47デフォルトの名無しさん:2006/12/22(金) 18:42:30
ある手順を用意すれば人間でも勝てたりするんだけどね

とりあえず>>29に期待
48デフォルトの名無しさん:2006/12/22(金) 18:46:11
オセロあたりだと煮詰まった感があるよな。
まあ、遊びで追求する分には丁度いいくらいかな?
定石や先読みをもちいず、完全に一手先のロジックだけで作れたらおもしろいかもね。
49デフォルトの名無しさん:2006/12/22(金) 18:53:26
8x8なんてぬるいから、10x10に拡張しちゃわね?
50デフォルトの名無しさん:2006/12/22(金) 18:59:44
どうせなら8x8x8にしようぜ
51デフォルトの名無しさん:2006/12/22(金) 19:18:30
サランラップ(Saran Wrap)は、旭化成の持つ登録商標で、
「宅急便」がヤマト運輸の登録商標である
52デフォルトの名無しさん:2006/12/22(金) 20:57:35
最適化理論に詳しい人いますか?
53デフォルトの名無しさん:2006/12/22(金) 21:06:17
何そのアバウトで唐突なネタ振り
54デフォルトの名無しさん:2006/12/22(金) 21:09:55
パターンを使った評価関数の自動チューニングに必要なので。
55デフォルトの名無しさん:2006/12/22(金) 21:22:53
数学板かシミュレートあたりに行けば良いと思うよ
56デフォルトの名無しさん:2006/12/22(金) 21:26:08
>>1
I do not have Windows.
the first, Please give me Windows95.
57デフォルトの名無しさん:2006/12/22(金) 21:48:54
I'll give you Windows3.1. It's the most reliable version.
58デフォルトの名無しさん:2006/12/22(金) 22:07:25
Just a nice idea.
I think I hardly have the.
59デフォルトの名無しさん:2006/12/23(土) 01:33:54
>>29
もう作り始めてる?
60デフォルトの名無しさん:2006/12/23(土) 04:31:28
>>46
そりゃ相手もソフトだから
61デフォルトの名無しさん:2006/12/23(土) 04:48:06
62デフォルトの名無しさん:2006/12/23(土) 08:50:17
オセロって、第1手は、黒で、置ける場所は4箇所ある。
でも、どこに打っても、盤面を回転させれば、同じ結果
となり、結局、第1手における置ける場所は1箇所しかない。
続く第2手目の白には、3箇所しかない。
こう考えると、全ての盤面は、限られた有限個の状態しか
ありえないのではないか?
毎回計算させるより、盤面の全ての状態を記憶しておけば
世界最速最強のオセロができる。
63デフォルトの名無しさん:2006/12/23(土) 11:25:29
>>62
勿論有限個だが、膨大な有限個だから無理。
64デフォルトの名無しさん:2006/12/23(土) 12:17:57
盤面の記憶を語る奴はこのウィキくらいは読んでからにしないか?
http://www9.atwiki.jp/othello/pages/1.html
65デフォルトの名無しさん:2006/12/23(土) 15:33:19
オセロの試合結果は全部で何通りか
http://science4.2ch.net/test/read.cgi/sim/1090548999/l50
66デフォルトの名無しさん:2006/12/23(土) 16:22:23
他のスレにこのスレのリンク貼ってageてまわってるのは>>1か?
何が何でも急いでプログラム書かせようという風にしか見えないぞ
普通に進行すれば良スレになるかもしれないのに…枯れた分野だからあやしいけど
67デフォルトの名無しさん:2006/12/23(土) 16:32:00
>>66
だな。何てーか、ただクレクレ言ってるようにしか見えなくて興をそがれる。

自分は別口でリバーシのプログラムには挑戦しているが、
BearRevに対応するつもりもないし、期限を定めるつもりもない。
マイペースでやらせてもらうさ。
681:2006/12/23(土) 21:51:09
1です
8×8を解けるほどのアルゴリズムに出来上がったかもしれないです
あと9日以内にコーディングして動かせる所までいくとおもいます
スレ終了かもしれません 動いたらうpします
あと質問なんですが(これを教えてもらえると完成が速まります)
bitボードを使ったときの差し手生成部分がよくわかりません
誰か解説おねがいします

http://www9.atwiki.jp/othello/pages/48.html
ここに書いてあるんですが...簡略して教えてください
691:2006/12/23(土) 21:57:18
あと、すでに1年以上、将棋プログラムの作成経験があります
まだ完成はしていないですが...
将棋の経験を生かします
定番の棋譜からの学習、評価関数の最適化使いません
終盤の勝敗判定アルゴリズムも使いません
浅く読んで、手を並び替えてから深く読むという手法も使いません
今までのオセロプログラムではないアルゴリズムだとおもいます
70デフォルトの名無しさん:2006/12/23(土) 21:59:34
よくわかりませんと言われても、簡潔に書かれているし書いてある通りに実装しろとしか言えない
原理を理解していなくてもプログラムに落とすことはできる
711:2006/12/23(土) 22:01:33
あとすみませんが↓のDLLの作成手順も教えて下さい
rdk103r1.lzhの中の物をいじくればいいはずなんですけど

> BearRev Professional は高機能リバーシです。
> 以下の特徴があります
> 豊富な研究機能
> さまざまな対局者
> 対局者は DLL として自作可能
> デザインや音はカスタマイズ可能

http://sleipnir.pos.to/software/bearreversi/index.html
72デフォルトの名無しさん:2006/12/23(土) 22:02:35
オセロのほうがいいなあ
731:2006/12/23(土) 22:03:23
>>70
すみません
原理を教えて下さい
もしかしたらより速くできるかもしれないので
74デフォルトの名無しさん:2006/12/23(土) 22:09:20
>>71
DLLも作り方さえも自分で調べられないのなら諦めろ。
プログラミング自体向いてない。論外だ。
751:2006/12/23(土) 22:13:28
>>74
実際に動かしたことがある人がいれば聞いた方が速いじゃないですか
説明書が付いてないんです
↓この辺を書き換えれば良いんだとはおもいますが...

/*** 定石を調べる ***/
if ((nPos = Jsk_FindMove(szBoard, JSK_RANDOM, cPiece)) != 0)
return Rvs_CreateMsg(RVS_INDEX_TO_X(nPos), RVS_INDEX_TO_Y(nPos), "JOSEKI", (float) 0/*State*/);

/*** 駒を置く位置を決める ***/
for (x=1; x<=8; x++)
for (y=1; y<=8; y++)
if (Rvs_CheckPieceXY(szBoard, x, y, cPiece) == TRUE)
return Rvs_CreateMsg(x, y, "RVS MESSAGE", (float) 0/*State*/);
76デフォルトの名無しさん:2006/12/23(土) 22:16:39
>>73
教えて教えてばかりだな
どこが理解できていないのかも提示しないで何を教えろというのだ

ちなみにbitboardを使っても所詮数倍程度の高速化で小手先の最適化に使うものだ
とりあえず>>1の考えた画期的なアルゴリズムの方に専念して完成させてくれ
そしたらbitboard化してやるよ
771:2006/12/23(土) 22:19:20
>>76
いちおうbitボードを標準で使うんです
それで考えつくアルゴリズムは一マス目から順に取れるか、取れないか判定していく
というやつなんですけど...
これで作っておけば良いですか?
78デフォルトの名無しさん:2006/12/23(土) 22:24:07
ここはお前ような奴が来るところではない。
もっと腕を磨いてから出直しな。
791:2006/12/23(土) 22:28:50
68のやつは意味不明ですけど...

●○●□●○○□
などを3進数に対応させて、黒の手番でおけるところを始めに記録しておけばOKですか?
801:2006/12/23(土) 22:29:46
上のやつだと8番目だけに黒がおけると記録するわけです
81デフォルトの名無しさん:2006/12/23(土) 22:30:08
>>77
char配列で管理してようが64ビット変数だろうが作ってくれればbitboard化してあげるよ
821:2006/12/23(土) 22:34:52
>>68のbitボードのやり方と、縦と横と斜めを3進数で保持しておいて配列を参照するのは
どっちの方が速いですかね?
局面の更新スピードも違ってきますよね
83デフォルトの名無しさん:2006/12/23(土) 22:39:15
>>82
局面のデータ構造によって速さがどう変わるかは考えなくていいよ
俺がやるから
char board[8][8];
のような局面管理でもいいから完成させてくれない?
841:2006/12/23(土) 22:39:21
64bitパソコンでは無いので、縦横斜め、白黒反転の3進数表示でいきます
縦8本、横8本、斜め8本、白黒反転でこの2倍
を保持する方向で行こうとおもいます
851:2006/12/23(土) 22:39:59
>>83
わかりました
それでいきます
86デフォルトの名無しさん:2006/12/24(日) 00:57:08
>>1のプログラミングのスキルってどれくらいなんだろう?
どの言語でやってるの?
87デフォルトの名無しさん:2006/12/24(日) 01:01:20
>>86
ま、ソースが出てくれば両方わかるでしょ。
88デフォルトの名無しさん:2006/12/24(日) 02:16:52
最強の相手を作る方法がわかった。

コンピュータの負けが確定した時点で、
「さっきの間違い。本当はここ」と言って、
やり直しをすれば、絶対に負けることはない。
89デフォルトの名無しさん:2006/12/24(日) 02:25:18
>>88
試合ではそれをやっちゃだめだからしないけど、
定石の自動生成や最善進行を探すのはそんな感じ。
901:2006/12/24(日) 02:28:53
bitボードでは、64bit + 64bit = 16バイト使いますが
13バイトで局面を記録する方法が見つかりました
風車的配置にするんです bitボードより良いかもしれないのでとりあえずこれで作ってみます
あとでbitボードを作ってくれる人がいればそれと速度を比較しましょう


3の5乗 < 2の8乗 ですから次の様に記録すればよいです
局面を進める、戻す速度が3バイト分短縮できます
あと手を生成するとき3進数の計算がある程度やってあって良いです

□◆■◇◇◇◇◇
□◆■■■■■■
□◆■◆◆◆◆◆
□◆■○○■◇□
□◆■○○■◇□
◇◇◇◇◇■◇□
□□□□□■◇□
◆◆◆◆◆■◇□
91デフォルトの名無しさん:2006/12/24(日) 02:45:15
ボードを指し進める、戻すときは、差分計算か、コピーを取っておくのが
ありますけどbitボードでは、コピーが普通なんでしょうか?
92デフォルトの名無しさん:2006/12/24(日) 02:50:10
>>91
配列盤面は差分、bit boardはコピーが普通。
931:2006/12/24(日) 02:56:29
>>92
ありがとうございます

>>86
c++ですが、まだ打ち込んでいません
スキルは、第一種情報処理技術者というのもってます
あと、国立大学院卒(数学)です
94デフォルトの名無しさん:2006/12/24(日) 02:57:57
>>90
合計のサイズが少なければいいってもんじゃないよ。
変数が細かくなって13個に増えるし石を返す操作も複雑になる。
詰め込みすぎると却って遅くなるよ。
まぁでも自分はこれ思いつかなかった。
95デフォルトの名無しさん:2006/12/24(日) 03:00:25
教えてくればっかり言ってないで
作ったものとりあえずうpしてみろよ。
そうすりゃもっと建設的な意見を聞けるって。
自分で調べる能力が無い人間にプログラムなんて向いてないよ。

つーかあんた本当に自分で作る気あるの?
これ学校の宿題かぁ?
96デフォルトの名無しさん:2006/12/24(日) 03:10:50
> 期間は三ヶ月以内で頼む
> どんどんアイデアとプログラムを頼む
って言ってるから、アイデアもプログラムも自分で出す気はないんじゃないかな。
期間限定なのもうさんくさい。
971:2006/12/24(日) 03:18:10
>>95>>96さんへ>>68>>69でうp宣言してますよ
98デフォルトの名無しさん:2006/12/24(日) 03:20:02
宣言だけならプログラマでもできる
99デフォルトの名無しさん:2006/12/24(日) 03:28:58
>>93
とりあえずルール通りに動くプログラムを作るスキルはあるのか?
速度とか関係なく。
100デフォルトの名無しさん:2006/12/24(日) 03:31:47
>>97
だからそれうpしてみろって・・・
何が言いたいんだ、あんた?
ここまで引っ張るからにはすでに何かそれなりに動くものを作ってるんだろ?

俺は何も書いてないと思ってるけどね。
ここの人本当やさしいね。
1011:2006/12/24(日) 03:34:29
>>99
出来上がったら分かります
ルールは知ってますけど、バグが有ったら動かないかもしれません
プログラム経験はほとんど無いです...
一年以上将棋作ってますけど、まだ一行も打ち込んでません!
1021:2006/12/24(日) 03:38:37
>>100
でも、オセロは簡単なのであと8日以内に完成します!
将棋が難しい、手間がかかる点は無駄な手を省くところなんです
枝刈りっていうやつです
そこを何ヶ月も開発し続けました 未だに続けてます
将棋でも、オセロでも、最善手を一手のみ生成できれば
評価関数は全く要らなくなります
1031:2006/12/24(日) 03:43:05
といってもそれは、無理なので、なるべく最善手らしい物をいくつか生成して読みと評価関数を使います
104デフォルトの名無しさん:2006/12/24(日) 03:44:46
>>101
なんつーか学校の宿題やってくれ君なのは見え見えだが。

>ルールは知ってますけど、バグが有ったら動かないかもしれません
そういうこと言ってんじゃなくて・・・
現時点でできているものを途中でもいいから出してみろよってことだよ。
完璧に動くものを期待なんてしちゃあいないよ。

>一年以上将棋作ってますけど、まだ一行も打ち込んでません!
相当な大物だな。
105デフォルトの名無しさん:2006/12/24(日) 03:45:27
>>100
俺は取り合えずあと8日間は待つつもりだよ。
(期待はしてないけど)
106デフォルトの名無しさん:2006/12/24(日) 03:46:44
>>102
>でも、オセロは簡単なのであと8日以内に完成します!
おめでとう。
自己解決できてるならえーんちゃう?
107デフォルトの名無しさん:2006/12/24(日) 03:49:39
8日もかけるって事はただルール通りに動くだけじゃないよね?
1081:2006/12/24(日) 03:51:47
>>107
>>68での予告の通り8×8を解きます!
1091:2006/12/24(日) 03:55:13
難易度的には、8×8を解く >>>>> WZebraを倒す の訳ですが、
WZebraにも負けるようでは、
今まで一年以上(将棋に)費やしたのが無駄になりますね
110デフォルトの名無しさん:2006/12/24(日) 03:59:48
>>108
>最善手らしい物をいくつか生成して読みと評価関数を使います
と言ってるので「解く」ではない。
1111:2006/12/24(日) 04:06:44
>>110
解く=先後どちらが必勝かを決定する ですよ
例えば、最終局面や、その一手前などは勝敗は決定してますよね
するとその一手前も、決定できます
局面の勝敗に関する記録が少ないあいだは、読み、評価関数を使うんです
保存してある記録が増えれば、いずれ初手までの勝敗が決定できます
112デフォルトの名無しさん:2006/12/24(日) 04:13:55
じゃあ「解く」の使い方は間違ってないみたいだね。
ゲーム木の大きさの見当がついてないだけか。
1131:2006/12/24(日) 04:21:26
>>112
圧倒的に勝ちである局面などは、ほとんど探索する必要が無いんです
あと、相手の悪手をとがめるには必ずしも、最善手を指す必要は無いんです
>>45のWZebraの作者さんの解説(速さ優先探索)を参照してみてください
1141:2006/12/24(日) 04:24:37
>>112
完全なゲーム木をすべて探索する必要は無いんです

WZebraの作者さんも
"完全読みは通常勝敗を判断するよりはるかに困難"
と言っています
115デフォルトの名無しさん:2006/12/24(日) 04:33:33
勝敗の証明に必要な一部分だけでも走査するには膨大な時間が必要って事。
20個空きとか30個空きじゃなくて60個(59個)空きで「解く」事を言ってるんでしょ?
1161:2006/12/24(日) 04:40:22
>>115
そうですよ
60個空きの勝敗の決定をするんです
時間をかけてハッシュテーブルを更新し続ければ
現在の最新のパソコンで、例えば(かなり適当ですが)10日とか動かし続ければ
決定出来ると思ってますよ
アルゴリズムによっては100年かけても解けないでしょう
今までなかったアルゴリズムによってそれを実現しますよ
117デフォルトの名無しさん:2006/12/24(日) 04:45:36
今までなかったアルゴリズムとは具体的にどんなの?
1181:2006/12/24(日) 05:05:44
>>117
オセロではなかっという意味ですが...
将棋のボナンザって言うプログラムがあるんですが
枝刈りしないで全幅探索らしいです
その上、詰め将棋ルーチンが無いらしいです

難易度的には、オセロより、将棋は遙かに難しいわけですが
それで、全幅探索で詰め将棋なしで通用するんです
詰みルーチンで時間を食わない分、通常ルーチンでより深く探索出来るわけです

今回、作っているのは、一つのルーチンのみ使用し、評価関数も単純化(空きマスと石の数しか使わない)
して、差し手は読みなしで順位付けします
(浅く読みを入れない方が勝率が上がるらしいです(将棋の場合)その方が深く探索できるため)
あとは、将棋の方で考えていた探索ルーチンを使います

評価関数は、a:黒の枚数 b:空の枚数 としたとき、 (a + b/2) / 64 を使います
この値は、0から1を動きます 初期局面では 0.5 です
119 ◆z0MWdctOjE :2006/12/24(日) 05:10:11
速さ優先探索って証明数探索とどう違うの?
120デフォルトの名無しさん:2006/12/24(日) 05:15:57
>評価関数は、a:黒の枚数 b:空の枚数 としたとき、 (a + b/2) / 64 を使います
この評価関数は黒にとって値が大きいほどいいの?小さいほどいいの?
1211:2006/12/24(日) 05:16:51
縦、横、斜めの個別の列ごとの評価の線形和は大して役に立たないような気がしてます
なぜなら、コマを取れるマスがあったとしても、一度に取れる訳じゃないし
盤面が変化したら、ガラッと評価値が変わってしまうと思うんです
一列変われば、取れていてはずの行が取れなくなったりするわけです
それならば、最終局面で間違いなく正しい評価を返す
コマの個数だけの評価で良いのではないかと思ってます
1221:2006/12/24(日) 05:24:18
>>120
大きいほど黒が良いです
白の手番では、白の枚数を使います
簡単に言うと、空きマスは半分づつ分けましょう、という関数です

>>119
証明数探索とは違いますよ
詰みを読むには、後手のどの様な手に対しても詰むことを証明しなければ
なりません (それが巧妙な手順であっても、真っ当な手順であっても
すべて場合に詰むことを証明しなければなりません)が
速さ優先では、相手の応手が少なくなるという手(とがめる手)でうまく行けばほぼ良いっていう感じです
123 ◆z0MWdctOjE :2006/12/24(日) 05:29:50
>>122
証明数-反証明数探索とも違うのですね。
124デフォルトの名無しさん:2006/12/24(日) 05:36:46
ちなみにオセロプログラムの完全読みでは「黒の石数-白の石数」の値がよく使われる。
(-64,-63,...,-1,0,+1,...,+63,+64、黒にとって大きいほど良い。)
必勝読み(勝敗判断)では「黒負け、引き分け、黒勝ち」。
(-1,0,1、黒にとって大きいほどよい)
1251:2006/12/24(日) 05:47:53
縦、横、斜めの個別の列ごとの評価の線形和は、
うまく行けば1手か2手先程度の評価を予測出来るとは
おもいますが、必ずしもうまくいくとは限らないし
プラスマイナスでちょうどその局面の評価程度しか返さない気がしてます
大局的ではなく、終盤では通用せず、別の評価、探索するほか無く
それならば、初めからコマの枚数だけで良いんじゃないかとまたですがおもいます
1261:2006/12/24(日) 05:49:47
> うまく行けば1手か2手先程度の評価を予測出来る

統計的に、取る取られるという要素が、評価に組み込まれているいう意味です
127 ◆z0MWdctOjE :2006/12/24(日) 05:50:53
評価関数は大小比較のためだけに使うのであれば定数倍1/64は無意味。
a+b/2の整数比較で十分では?
1281:2006/12/24(日) 05:52:42
>>127
実際は、4a + 2b を使う予定です
これならば、値は0から256になり、8bit でなんとか入りそうです
129 ◆z0MWdctOjE :2006/12/24(日) 05:53:59
>>127
2a+bでしたw
130デフォルトの名無しさん:2006/12/24(日) 05:55:18
>>125
50個空きでも30個空きの時点でも予測してるのは試合終了時(大体0個空き)の結果。
131デフォルトの名無しさん:2006/12/24(日) 05:55:20
CPU抜きで、対人オセロをまずは作りなよ。
んで入力だけキー入力か、CPUに決めさせるかできるようにしといて、
CPU側はからっぽでいいからまずは一通り作ると。
それを配布してくれればみんなやる気になると思うよ。
1321:2006/12/24(日) 05:56:41
>>129
でも、ちょうど8bitに合わせるより、その半分の方がいいですね
2a+bにします!
1331:2006/12/24(日) 06:01:09
>>130
しかし、列ごとの線形和で、勝敗が予測できるとは思えません
評価値の変化を見たことは無いですけど、一手ごとに優劣が変化しまくりじゃないですか?
134デフォルトの名無しさん:2006/12/24(日) 06:04:08
試合の途中では優劣=石数では全くない。
優劣=石数なのは試合終了時だけ。
1351:2006/12/24(日) 06:09:40
>>134
空きマスが多いほど、その後の展開は、どんな評価関数を用いても
ほとんど予測できないと思うんですよ
そのため、空きが多いほど、評価をほぼイーブンにする、

> a:黒の枚数 b:空の枚数 としたとき、 (a + b/2) / 64 を使います

が良くないですかね?
終盤に近づくほど、石の数で評価が決まります
136 ◆z0MWdctOjE :2006/12/24(日) 06:12:31
a:黒、b:空き、c:白、のとき
a + b + c = 64
∴c = 64 - a - b
a - c = a - (64 - a - b)
 = a - 64 + a + b
 = 2a + b - 64
評価関数は定数の加算では大小は変わらないため実質的にはa - cと同じでは?
1371:2006/12/24(日) 06:14:48
同じ
138デフォルトの名無しさん:2006/12/24(日) 06:16:17
ちなみに序盤は石数が少ない方が優勢であることが比較的多い。
その評価関数を試合途中で使うと悪い枝から読む事が多くなる。
1391:2006/12/24(日) 06:16:39
0以上が保証されているか、マイナスになるかの違いはありますけどね
1401:2006/12/24(日) 06:20:07
>>138
評価関数によって、差し手の優先順位を選ぶわけでは無いんです
開放度理論っていうのが良さそうだったのでそれに手を加えて、
追加したコマと変化したコマの、隣接する周囲のマスの状況で一手も
読まずに有効手を生成します
141デフォルトの名無しさん:2006/12/24(日) 06:23:41
>>138
試合途中の評価関数は速さ?

>>139
a - c + 64
ああ、でも黒だけの数え上げで決まる2a + cの方が優れているかも。
1421:2006/12/24(日) 06:25:53
>>138
そうして、一番の有効手だけを優先して読み30〜40手も進めてから
評価関数を呼び出せばその時点での評価は信用度が高いです
ただし、生成した有効手が本当に有効であることが重要なんですけど...
143141 ◆z0MWdctOjE :2006/12/24(日) 06:26:34
>>141
2a + b
スマソ
144 ◆z0MWdctOjE :2006/12/24(日) 06:29:08
>>142
それだけだと山登り法みたいだが…
145 ◆z0MWdctOjE :2006/12/24(日) 06:50:14
じゃ、おまいら最強の将棋プログラムしてみろよ part5
http://pc8.2ch.net/test/read.cgi/tech/1109307327/
に帰るわ
おやすみ
1461:2006/12/24(日) 06:50:15
>>144
探索ルーチンは、また別なんです
MTD(f) 法の改良型を使います

例えば3手生成されたとして、周囲の状況から指される確率を
予測して60%、35%、5%になったとします
初めは、100%以上の確率の手のみ指し進めて段階的に確率を
引き下げることで深い段階へ到達していきます
これは、激指などで同様の手法が使われていますが、全く同じではないです
147デフォルトの名無しさん:2006/12/24(日) 07:05:25
ゲーム木で実際に走査するノード数を1/2,1/3,1/100に減らすために
浅読み・手の並べ替えを行ってもノードあたりの処理時間は2倍,3倍,100倍にはならない。
ってか線形和評価関数の精度を疑うなら両方作って対戦させてみなよ。
1481:2006/12/24(日) 07:50:54
>>147
すでにあるじゃないですか
WZebraが
これに勝てば良いんです
それに、6×6や、10×10では評価関数が作りにくいんですよ
万能なのは、2a + b なんです
1491:2006/12/24(日) 08:26:16
差し手生成の高速化法

石がある上下左右の一つ先の空白を含めた長方形領域を調べればよい
初期配置では4×4マスがそう

終盤では残りマスでひっくり返るか調べるだけで良い
残りなんマスからがよいのか?
1501:2006/12/24(日) 08:40:14
中盤、終盤で相手の着手可能数が増えずに減らせる手はどのように見つけたらいいのだろうか?
追加したコマと、変化したコマが取れるかどうか調べていくしかないか
相手の取れるマスにこっちのコマを張ったために一つ減るというのもあるな
オセロでも一番重要なのは差し手生成アルゴリズムかと思う
151デフォルトの名無しさん:2006/12/24(日) 11:01:27
夜中から朝にかけてこんなに面白そうなことやってたのかw
>>1よ理論的なことはいいから手を動かせ
完成するまで書き込まなければ最良
152デフォルトの名無しさん:2006/12/24(日) 12:14:29
>終盤では残りマスでひっくり返るか調べるだけで良い
>残りなんマスからがよいのか?
何か勘違いしてない?
153デフォルトの名無しさん:2006/12/24(日) 13:17:53
>>152
いいから作らせておけよ。
早くソース見たい。
154デフォルトの名無しさん:2006/12/24(日) 13:28:00
>>1
再帰始めていくら待っても戻ってこないけどバグじゃないからね
155デフォルトの名無しさん:2006/12/24(日) 13:37:58
すぐ戻ってくるだろ
スタックオーバーフローで
156デフォルトの名無しさん:2006/12/24(日) 13:43:27
>>155
それはバグ
157デフォルトの名無しさん:2006/12/24(日) 13:44:09
60手先で確実に終るからスタック使い切ることは多分ない
158デフォルトの名無しさん:2006/12/24(日) 16:16:10
結局既存・既知の物しか出てきてないし。
将棋ではまだ使われてるけどオセロではより良いものが開発されて廃れた技術を
「オセロではまだ使われて無い」と勘違いしてるだけだよ。
159 ◆z0MWdctOjE :2006/12/24(日) 16:19:57
車輪の再発明か_| ̄|○ …
160デフォルトの名無しさん:2006/12/24(日) 22:30:12
>>1
今何行くらい書いたー?
どこまでできたー?
161デフォルトの名無しさん:2006/12/24(日) 23:11:46
ねただろ
162デフォルトの名無しさん:2006/12/24(日) 23:35:39
寝ただろ?
163デフォルトの名無しさん:2006/12/24(日) 23:37:48
ネタだろ?
164デフォルトの名無しさん:2006/12/24(日) 23:56:35
おやすみなさい
165デフォルトの名無しさん:2006/12/25(月) 01:04:06
>>1
今日は面白い話無いのー?
進捗状況聞かせてー
1661:2006/12/25(月) 05:29:35
>>158
進化の遅れてる度合いは、
オセロ、チェス、将棋(右の方が良いネタが出てる)だとおもいますよ
オセロは、コンピュータが遅いときの手法が今でも使われてるとおもいます
画期的とか、そういうのは要らないんですよ
強ければ良いんです

>>165
差し手生成、順序交換アルゴリズムにこだわらない方向に転換しました
生成出来たやつから順に読んでいく方が良いようにおもいます
探索アルゴリズムの中で段階的に深化させていくことで
差し手の順序交換の部分は不要に出来る気がします
1671:2006/12/25(月) 05:33:16
将棋と大きく違う点は、必然手(飛車を取る、金が取られる)とかが無く
オセロの場合、一見、悪そうな手でも、先に進めると有利に可能性がかなりありそうです
有効手の確率を計算することは難しいとおもいます
ということで、上の様に、生成されたら直ぐ探索するのがいいとおもいます
168デフォルトの名無しさん:2006/12/25(月) 06:12:29
C
169デフォルトの名無しさん:2006/12/25(月) 06:14:51
300行で十分だろw
170 ◆z0MWdctOjE :2006/12/25(月) 08:04:33
>>166
思いますってのは主張としては弱いですね。

方針やら設計をよくよく吟味してから開発やってくださいよ。
171デフォルトの名無しさん:2006/12/25(月) 08:28:19
吟味せずに早くモノを出してほしい
それから改良すれば良い
1721:2006/12/25(月) 11:01:46
一応、 "おまいら"最強のリバーシプログラムしてみろよ
なんですけど...
173デフォルトの名無しさん:2006/12/25(月) 11:20:59
スレタイはそうでも、事実上>>1の独演会だからな。
その事をちゃんと受け止めて頑張ってくださいまし。
174デフォルトの名無しさん:2006/12/25(月) 11:24:07
勝手にお前がつけたスレタイだろ
そもそも他力本願な時点で駄目
早く作れ
175デフォルトの名無しさん:2006/12/25(月) 11:54:01
>将棋と大きく違う点は、必然手(飛車を取る、金が取られる)とかが無く
>オセロの場合、一見、悪そうな手でも、先に進めると有利に可能性がかなりありそうです
>有効手の確率を計算することは難しいとおもいます
まずさ、Yahoo!オセロにでも行って君自身が初心者を脱してきたら?
176デフォルトの名無しさん:2006/12/25(月) 12:02:03
作者自身がある程度ゲームをわかってないと
ソフトもさほど強くならないのは将棋も一緒じゃないのか?
177デフォルトの名無しさん:2006/12/25(月) 12:40:34
>>166
各種ゲームのコンピュータの進化の度合いの話なんかしてねーよ。
お前はなぜオセロで使われてる技術が採用されてるかを無視してるだろ。
お前は今メリット・デメリットを考えずに先祖返りしようとしてるぞ。
178 ◆z0MWdctOjE :2006/12/25(月) 12:46:52
>>176
ボナンザの作者って相当強者なんですか?
179デフォルトの名無しさん:2006/12/25(月) 12:52:02
>>178 目茶目茶弱い
180デフォルトの名無しさん:2006/12/25(月) 13:06:17
>>176
オセロでもそれは微妙なとこだね。
段持ってたりで本人も強い作者は何人も居るが、
ルール知ってるだけで初心者同然の弱い作者も居る。
181デフォルトの名無しさん:2006/12/25(月) 13:20:10
弱い作者は戦略をいくつか知ってても
>一見、悪そうな手でも、先に進めると有利
こういうところに気付きにくいんだよな。
182デフォルトの名無しさん:2006/12/25(月) 15:22:27
>将棋と大きく違う点は、必然手(飛車を取る、金が取られる)とかが無く
ある。
183デフォルトの名無しさん:2006/12/25(月) 15:57:16
Bonanzaの場合は評価関数は過去の棋譜を再現する様に自動的に作ってる
これが手作りのものより良かったから勝った
作り方は作者のオリジナル
詳しくはこれを読め
ttp://www.geocities.jp/bonanza_shogi/gpw2006.pdf
184デフォルトの名無しさん:2006/12/25(月) 16:09:48
>Bonanzaの場合は評価関数は過去の棋譜を再現する様に自動的に作ってる
へぇ、概要としては線形和評価関数と同じなんだね
185デフォルトの名無しさん:2006/12/25(月) 16:24:53
>>183
おー、面白いものをありがとう。
186デフォルトの名無しさん:2006/12/25(月) 18:22:16
なんだか将棋とリバーシの技術交流スレになってきてるな。
ま、それもいいかもしれん。
187 ◆z0MWdctOjE :2006/12/25(月) 18:34:31
Bonanzaの評価関数をみるとコンピュータ将棋を作る気をなくしますねw
188デフォルトの名無しさん:2006/12/25(月) 18:37:17
>>187
なんで?難し過ぎる?
189 ◆z0MWdctOjE :2006/12/25(月) 18:53:29
>>188
ボナンザよりもよい評価関数、探索を作る自信がない。
『おまいら最強の将棋プログラムしてみろよ』スレが閑散としている理由がわかった気がする。
1901:2006/12/25(月) 18:56:27
アルゴリズム的には変更の余地が無いところまで完成しましたよ
これが最強でなかったら人間やめます!あとは整えてから打ち込みます
人間の経験は一切入れず、パラメータの変更の余地も一切なしです
明日中に打ち込み終えて、バクとりして3日後くらいにはあげられるかもしれないです
1911:2006/12/25(月) 19:00:33
>>189
もし、オセロで最強になったら、次にボナンザも破りますよ
評価関数を棋譜から学習していくというやり方は、まあまあいい関数には
なるとはおもいますけどそういうやり方は将棋でも使いません
192デフォルトの名無しさん:2006/12/25(月) 19:00:50
>>189
オセロも人間チャンピオンを超えちゃってからは過疎ってる・・。
他のゲームに移った作者が結構居る。
193 ◆z0MWdctOjE :2006/12/25(月) 19:06:13
>>192
>>1さんには囲碁も制覇してもらおう。
私はプログラミング言語の習得のための練習問題くらいでおいておこうと思う。
194デフォルトの名無しさん:2006/12/25(月) 19:07:24
>>190
もし最強じゃなくても別に人間やめなくていいからソースのアップだけはしてね。
ずっと待ってるんだから。
195デフォルトの名無しさん:2006/12/25(月) 19:10:07
そうそう>>1ができなかったことを補って皆で改良って手もあるしな
1961:2006/12/25(月) 19:15:08
コンピュータ将棋はいつまでに出来てたら大会に登録出来るんでしたっけ?
まだ、一行も打ち込んでないんですけど
197デフォルトの名無しさん:2006/12/25(月) 19:17:13
知らんよ。そういうのは将棋の方で聞け。
198 ◆z0MWdctOjE :2006/12/25(月) 19:20:51
1991:2006/12/25(月) 19:27:08
どうもです
2007年1月31日(水) までか
3日以内にオセロで最強になったら必ず申し込みます!
200デフォルトの名無しさん:2006/12/25(月) 20:37:23
囲碁なら需要は高いね。
201デフォルトの名無しさん:2006/12/25(月) 20:43:14
既存の物さえ理解できずにそれを超える事ってできるのかねぇ
202デフォルトの名無しさん:2006/12/25(月) 20:54:39
できるとは思うが>>1は…
203デフォルトの名無しさん:2006/12/25(月) 21:44:19
自分の考えた思考を実現するなら
見落としがないくらいが上回る点だろうが
総当たりを最適化して組み込むと本人を
相当上回れると思う
204デフォルトの名無しさん:2006/12/25(月) 23:50:55
とある強い○×ゲームの作者は、自分のソフトがどれぐらい強いのか理解してなかったな
難易度を最高にするとミスしないから絶対勝てないのに、
「これに勝つ方法を見つけた方はメールを」とReadmeに書いてあったのには笑わせてもらった
205デフォルトの名無しさん:2006/12/26(火) 00:17:56
○×ゲームって先手必勝だったっけ?
206デフォルトの名無しさん:2006/12/26(火) 00:19:06
>>205
先手必勝
207デフォルトの名無しさん:2006/12/26(火) 00:29:38
>>204
ジョークで書いたんじゃないの?
「コンピュータが先手でこれに勝つ方法を見つけた方はメールを」とかじゃなかった?
208デフォルトの名無しさん:2006/12/26(火) 00:32:42
双方最善で引き分けじゃなかったっけ?
209デフォルトの名無しさん:2006/12/26(火) 00:36:13
証明する方法はある。
210デフォルトの名無しさん:2006/12/26(火) 00:38:08
>>206
引き分けだったと思うけど・・。
Wikipediaにもあるし・・。
http://ja.wikipedia.org/wiki/%E4%B8%89%E7%9B%AE%E4%B8%A6%E3%81%B9
211206:2006/12/26(火) 00:40:49
すまん。勘違いしてたっぽい。
212デフォルトの名無しさん:2006/12/26(火) 01:59:33
>>1ってオセロや将棋を甘く見すぎじゃね?
よくわかってないから最強とか解くとか軽々しく言えるんだろうな。
213デフォルトの名無しさん:2006/12/26(火) 03:48:14
IOSなくなっちゃったみたいだけど
2chで共通インターフェース定義して
みんなで対戦しようよ
214デフォルトの名無しさん:2006/12/26(火) 03:50:57
あと

  数日長考の上で引き分け

とかはつまらないので

1手毎の考慮時間を短く設定して
最速で強力手を見つけられるような
アルゴリズムが必要になるとかのルールだと
現実的で面白いと思うよ
215デフォルトの名無しさん:2006/12/26(火) 08:34:55
6×6のオセロは完全解析されているんだっけ?
216デフォルトの名無しさん:2006/12/26(火) 08:47:37
>>213
GGSという後継のサーバがある。
217デフォルトの名無しさん:2006/12/26(火) 09:27:02
>>215
6×6は後手必勝
2181:2006/12/26(火) 09:30:59
http://www.cs.ualberta.ca/~mburo/ggsa/GGS_Intro.html
GGSに参加しやすくするソフトウェアってありますか?
通信部分はやってくれるやつ
219デフォルトの名無しさん:2006/12/26(火) 10:12:32
>>218
http://othellogateway.com/ntest/
プログラムをGGSに接続させたいならODKってのを使えばいい。

ちなみにGGSにはSAIOがほぼ常時接続してて自動で対戦してる。
でも弱い(レートが低い)プログラムは相手にしない設定になってる。
2201:2006/12/26(火) 20:12:12
>>219
ありがとうございます
221デフォルトの名無しさん:2006/12/26(火) 20:17:43
定石はどれぐらい入れたの?
222デフォルトの名無しさん:2006/12/26(火) 20:28:51
返事しろMONSOON!
2231:2006/12/26(火) 20:39:52
>>221
外からの棋譜や定跡の入力はないです
自己生成です
ハッシュテーブルのサイズは2の24乗です
1600万局面登録できます
重複したら終局に近い方から順に消していきますから
実質的にはもっと入ります
224デフォルトの名無しさん:2006/12/26(火) 20:46:05
>>1
あさってには出来上がりそう?順調?
2251:2006/12/26(火) 20:49:36
二日後には出来上がるとは思いますね
定跡(ハッシュテーブル)を育成する時間はあまりないんですが
デュアルコアで速いパソコン持ってる人いたら生成してもらいたいところです
まだ、生成する部分は出来上がってないですけど
226デフォルトの名無しさん:2006/12/26(火) 20:53:48
>>225
ネタにしかきこえないよ〜
2271:2006/12/26(火) 20:54:06
なるべくハッシュ値の計算を少なくするように工夫しました
回転と反転を同一視した方が、ハッシュがヒットしやすくはなるんですが
計算が複雑になってしまいます
回転と左右反転と白黒反転で16種類の局面が同一視出来ます
2281:2006/12/26(火) 20:55:13
>>226
ネタとは?二日後には出来上がりますよ
最強のリバーシプログラムが
229デフォルトの名無しさん:2006/12/26(火) 21:19:01
一種持ってるって30台以上だな。
230デフォルトの名無しさん:2006/12/26(火) 21:28:17
言動からして高校生くらいかと思ってた
2311:2006/12/26(火) 21:36:24
>>229
30才以下ですよ
高校のときですから
その後、コンピュータは真理追究に向かないということで数学へ
アク禁になってしまいました 代行で書き込んでもらいました
232デフォルトの名無しさん:2006/12/26(火) 21:42:52
>アク禁になってしまいました
2日後の言い訳の布石か。
233デフォルトの名無しさん:2006/12/26(火) 22:10:17
こんばんわ!
初めて見さしてもらいましたが、

俺素人だけど白黒反転とか言ってる段階でダメだろ?

将棋じゃないんだから…
頭固すぎだぞ。

今思いついたんだけどオセロの1手目は1種類しかないよね?
選んでるようだけど決まったところに打たされてる。
234デフォルトの名無しさん:2006/12/26(火) 22:16:16
>俺素人だけど白黒反転とか言ってる段階でダメだろ?
どうダメ?
>今思いついたんだけどオセロの1手目は1種類しかないよね?
そうだね。
235デフォルトの名無しさん:2006/12/26(火) 22:19:55
オセロはパスできない。
236デフォルトの名無しさん:2006/12/26(火) 22:22:46
>オセロはパスできない。
できる。
237デフォルトの名無しさん:2006/12/26(火) 22:25:17
返せる箇所が有る限りパスしてはならない。
返せる箇所が無い限りパスしなければならない。
238デフォルトの名無しさん:2006/12/26(火) 22:26:01
揚げ足取りしかできないんなら話すのやめるよ。
239デフォルトの名無しさん:2006/12/26(火) 22:35:22
>揚げ足取りしかできないんなら話すのやめるよ。
そんなつもりはないよ。
240デフォルトの名無しさん:2006/12/26(火) 22:38:42
あんまり書かないけど
パスでヒントにならなかったかな?
将棋とはちがう。

1手目打つ人は先手に見えるけど、選択できないから後手といってもいいんじゃないかな?
あらかじめ5個目を打っておいても変わらない。
1手目の位置でハッシュ値を…
241デフォルトの名無しさん:2006/12/26(火) 22:45:37
白黒反転の無意味さが分からなければ
実際に駒(だったっけ?)おいてみれば?
242デフォルトの名無しさん:2006/12/26(火) 22:47:45
じゃあ、実質、白が先攻なんだな。
将棋と同じで先手有利か。
243デフォルトの名無しさん:2006/12/26(火) 22:49:09
思いつきで書いたので適当です。

もう一個ヒント:駒の数
244デフォルトの名無しさん:2006/12/26(火) 22:58:07
もうねます。アクキンになっても携帯から書き込みできるよね。
245デフォルトの名無しさん:2006/12/26(火) 23:01:23
書き込みはできてもソースのアップはできないとか言い出さないでね。
246デフォルトの名無しさん:2006/12/26(火) 23:05:24
寝ますとか言ってまだ寝てない。
1はいないのかな?
ほんとに寝ます。

ヒント:先手、後手のそれぞれの白黒反転同一局面とは?
247デフォルトの名無しさん:2006/12/26(火) 23:09:51
よくわからない流れだな。>>246は何の話をしているんだ?
248デフォルトの名無しさん:2006/12/27(水) 00:40:15
まあパスが入らないとコマの偶数奇数は変わらんから反転意味無いと言いたいのでは
249デフォルトの名無しさん:2006/12/27(水) 01:13:05
それにしてもなぜこんな事を>>246はこんなに勿体ぶるのだろうか。
250デフォルトの名無しさん:2006/12/27(水) 05:13:40
>回転と左右反転と白黒反転で16種類の局面が同一視出来ます

○●
●○

左右反転で一致するケースは果たしてあるのか?

251デフォルトの名無しさん:2006/12/27(水) 05:19:07
>>231

一種って10年以上前に無くなってるよね

>その後、コンピュータは真理追究に向かないということで数学へ

それは正しい判断だと思う

コンピュータは教えられたことを盲目に繰り返すだけだから
252デフォルトの名無しさん:2006/12/27(水) 07:22:41
>>250
終盤ならあるんじゃないの?
終盤に一致したところでほとんど意味ないけど
253デフォルトの名無しさん:2006/12/27(水) 07:53:28
リバーシでハッシュの定石ってあるの?
盤面の状態が単純だからうまい方法が見つかっていそうだけど
2541:2006/12/27(水) 08:30:56
>>244
携帯はありません ソースをうpしたら代行で書き込んでもらうことにします 今日はこれ一回の書き込みだけになるとおもいます
>>253
例えば、一秒間に100万局面探査できたとして、一試合の思考時間が10分だとすると
一試合で最大6億局面生成します
2の32乗が40億ですから、ハッシュに偏りがなければ
40〜50ビット一致すれば、ほぼ、局面を間違えない訳です
255デフォルトの名無しさん:2006/12/27(水) 11:21:07
>>250
対角線で線対称ならあるね
256デフォルトの名無しさん:2006/12/27(水) 11:55:47
そろそろ>>1はもう愕然としてる頃か。
257デフォルトの名無しさん:2006/12/27(水) 12:01:16
おまえらこれくらい読んでおけ。
http://science4.2ch.net/test/read.cgi/sim/1090548999/
258デフォルトの名無しさん:2006/12/27(水) 13:55:53
評価関数が0を返すことがある場合、引き分けはどうすんの?
同じく0にしても「さほど」問題は無いと思うけど
259デフォルトの名無しさん:2006/12/27(水) 14:13:58
>>258
目標に引き分けも含めるなら評価関数が扱う値の上限よりも引き分けの値を高くする。
同じく0にするなら、評価値が正数の手があれば引き分けは捨ててそっちで勝ちを目指すようになる。
(その結果負ける事もありうるけど)
あと、試合結果の値と評価関数の値を混ぜないで、別途フラグを用意する手法もある。
260デフォルトの名無しさん:2006/12/27(水) 19:44:33
20台後半で携帯持ってないなんてありえない。
261デフォルトの名無しさん:2006/12/27(水) 19:55:12
>>1
友達居ないから携帯なんか必要無いんだよね
262デフォルトの名無しさん:2006/12/27(水) 19:55:23
430 名前:256[sage] 投稿日:2006/03/25(土) 15:44:11
>>429
ふむふむ。参考になります。
僕は序盤の全探索があと4手くらいは多くできるかなくらいで考えてました。
>>406では大型コンピュータを使って何をするつもりなのかも気になりますね。

ところで16手全探索終わりました。
183時間52分くらいかかりました。(Pentium4 2.4GHz)
今朝は終了直前でコンピュータがクラッシュする夢を見ました。
正夢にならなくてよかった〜
手数----棋譜数----最大着手可能数----ゲームオーバー----パス
01-----------------4-----4-----------0-----------0
02----------------12-----3-----------0-----------0
03----------------56-----5-----------0-----------0
04---------------244-----6-----------0-----------0
05--------------1396-----9-----------0-----------0
06--------------8200----11-----------0-----------0
07-------------55092----12-----------0-----------0
08------------390216----14-----------0-----------0
09-----------3005320----15-----------0----------24
10----------24571192----16---------228---------228
11---------212260296----18---------356---------932
12--------1939892240----20--------6384--------7396
13-------18429768516----21-------16384-------35588
14------184042835408----22------299624------367160
15-----1891844432704----23------887364-----1979532
16----20301281202588----25----13560800----18920488
263デフォルトの名無しさん:2006/12/27(水) 19:57:52
>>254
哀れ。
264デフォルトの名無しさん:2006/12/27(水) 21:25:11
いい加減自分が馬鹿だって気付いたかなw
265デフォルトの名無しさん:2006/12/27(水) 23:26:42
いよいよ明日は>>1がソースをアップする日だ。
とても楽しみ。ワクワク
266デフォルトの名無しさん:2006/12/28(木) 10:41:49
今日だ。何時にアップされるのかなー
267デフォルトの名無しさん:2006/12/28(木) 11:52:08
>>1
今日の何時にうpするの?
268デフォルトの名無しさん:2006/12/28(木) 11:59:30
wktk
269デフォルトの名無しさん:2006/12/28(木) 12:39:37
うpマダー?
270デフォルトの名無しさん:2006/12/28(木) 12:50:20
>>258だけど
色々考えた結果、引き分けは次の位置づけが合理的な気がする
負け < 引き分け < 未知 < 勝ち

誰か意見をくだされ

#違うゲームを作成中の者です。人が集まっていたので聞いてみました。
271 ◆z0MWdctOjE :2006/12/28(木) 12:50:48
結果が芳しくなくて原因調査中なんでしょう?
272デフォルトの名無しさん:2006/12/28(木) 13:15:51
>>270
「未知」と言うのは「評価関数で0を返す」=読みきれなかった
ということでいいのかな?
それなら
負け < 引き分け < 未知 < 勝ち
の場合は、「確実に引き分けるより勝負に行く」
負け < 未知 < 引き分け < 勝ち
なら、「あやふやな勝負より引き分けを取る」

どちらを採るかはその人(或いはプログラム)次第だが
素人と対戦するなら前者、名人と対戦するなら後者、かな。
273 ◆GEOPlMMeow :2006/12/28(木) 13:50:17
>>270
http://pc8.2ch.net/test/read.cgi/tech/1165049332/
先日こっちのスレで僕が作ったプログラムでは、黒から見た場合次のようになります。
負け < 未知(評価値マイナス) < 引き分け = 未知(評価値0) < 未知(評価値プラス) <勝ち
引き分けと評価値0の手が両方ある場合、どちらが選ばれるかは不定です。
(あの実装だとマスの番号が大きい方が選ばれるのかな)
274デフォルトの名無しさん:2006/12/28(木) 18:25:46
未知のまま進めて意味あるのか?博打にしちゃうの?
275デフォルトの名無しさん:2006/12/28(木) 18:40:36
まあ制限時間があるからなあ
276デフォルトの名無しさん:2006/12/28(木) 19:45:32
>>1
ソースまだー?
277デフォルトの名無しさん:2006/12/28(木) 20:12:40
>>1は逃げた に一票
278デフォルトの名無しさん:2006/12/28(木) 20:44:40
まあまあ、アク禁だからしかたないんですよ
279デフォルトの名無しさん:2006/12/28(木) 20:57:06
普通はプロバイダが対応完了したのを受けてとっくに規制解除されてるだろうしな。
>>1自身が迷惑行為働いて規制されたとかなら別だが。
280デフォルトの名無しさん:2006/12/28(木) 21:01:56
>>1はアホだけど悪い奴には見えなかったなぁ
やっぱり恥ずかしくて逃げてるだけだと思う
281デフォルトの名無しさん:2006/12/28(木) 21:08:25
まさか人間やめちゃったとか・・?
282デフォルトの名無しさん:2006/12/28(木) 21:31:15
プログラム作ったこと無いんでしょ?
そう簡単に出来るわけないでしょ
常識的に考えて
283デフォルトの名無しさん:2006/12/28(木) 21:32:36
とりあえず今日残り2時間半待っとくか。
284デフォルトの名無しさん:2006/12/28(木) 21:35:33
>>282
いやいや
1年間将棋のAI作ってたくらいだぞ

完成しなかったらしいが
285デフォルトの名無しさん:2006/12/28(木) 21:48:45
286デフォルトの名無しさん:2006/12/28(木) 21:59:38
>>69
構想を練ってただけの1年間も作成経験に入れてるのか・・
287デフォルトの名無しさん:2006/12/28(木) 21:59:56
>>1は数学のセンスもないし、パズルのセンスも無い。
知的探究心も足りないと思う。
言動を見ていると真理の追究にも向いてない。


でも、人間やめなくてもいい。
何事もなかったかのように帰って来い。

どうしてもくやしかったらネタでしたwって出てこればいいのさ。
288デフォルトの名無しさん:2006/12/28(木) 22:16:09
プログラムして自分の間違いに気付いたんじゃなくて
プログラムがさっぱりできなくてうpできないとか
289デフォルトの名無しさん:2006/12/28(木) 22:20:21
机上の空論とはこの事
290デフォルトの名無しさん:2006/12/28(木) 22:25:36
地球シミュレータ使えばいいんじゃないか?

審査を通らないと思うけど…
291デフォルトの名無しさん:2006/12/28(木) 22:27:29
>>290
地球シミュレータってパソコンの数十万倍とかその程度じゃないの?
使えても解くのはとても無理
292デフォルトの名無しさん:2006/12/28(木) 22:35:34
解くのはもちろん無理。
Blue Geneでも無理だろう。

地球シミュレータは論文とプログラム提出して、
並列化の指数が高くないと使わせてもらえないんじゃなかったっけ?
293デフォルトの名無しさん:2006/12/28(木) 22:40:03
地球シミュレータって何?
気象関係?
294デフォルトの名無しさん:2006/12/28(木) 22:40:59
>>293 ググれ。
295デフォルトの名無しさん:2006/12/28(木) 22:45:20
>また地球シミュレータでは各プロジェクトに対し、コードを高並列で実行する際、
>並列化効率50%以上(並列実行時の各プロセッサの性能が、単一プロセッサ
>実行時の性能の50%以上)にチューニングされるよう、求めています。
>例えば単一プロセッサ実行で、ピーク性能比90%を達成しているプログラムを
>1000プロセッサで実行する時には、ピーク性能比45%の達成が必要となります。
2961:2006/12/28(木) 23:42:24
すまん
間に合わなかった
あと二日待って下さい
297デフォルトの名無しさん:2006/12/28(木) 23:44:34
>>296
今どんな状況?
あと二日待てばどうなるの?
298デフォルトの名無しさん:2006/12/28(木) 23:47:18
年末だろ
299デフォルトの名無しさん:2006/12/28(木) 23:48:01
おいらが前にJava Appletでリバーシ作った時は一週間くらいで出来たよ。
CPUのアルゴリズムは今一番たくさん取れる置き方を選択する、
名付けて小学生ルーチンだったけどな。
弱すぎて涙が出た。
3001:2006/12/28(木) 23:48:18
>>297
アルゴリズムは、紙の上で完成しているんだけど
細かい部分(移動処理とか)の作成、整備に時間がかかってしまった
必死で間に合わそうとしたけど、眠たくなってしまった
明日、もうちょい煮詰めてから完成させます
301デフォルトの名無しさん:2006/12/28(木) 23:54:06
>>300
今できてる分だけでいいから見せてよ。
3021:2006/12/28(木) 23:57:51
>>301
ちゃんと動いたらうpしますからもうちょい待ってて下さい
明日中のうpを目標にしたい所ですが...
出来るだけ速く完成させます
303デフォルトの名無しさん:2006/12/29(金) 00:01:01
>>302
"ちゃんと"動く事は無いんだから一生見せないつもりでしょ
304デフォルトの名無しさん:2006/12/29(金) 00:02:44
まーそうだな
職業プログラマが作ったプログラムだって(ry
3051:2006/12/29(金) 00:04:36
>>303
ちゃんと動かないか、最強でなかったら人間やめますって
最強の自信はありますから待ってて下さい
306デフォルトの名無しさん:2006/12/29(金) 00:05:57
>>305
人間やめるかやめないかよりも、うpするかしないかが重要だと思うんだが
うpしてくれれば改良の余地はあるから言ってるんだ
307デフォルトの名無しさん:2006/12/29(金) 00:07:30
>>305
自分で今日発表って宣言したんだから、そこらへんしっかりしてくれよ
変なところにこだわるのは今更おかしいって
3081:2006/12/29(金) 00:09:49
みなさん、ごめんなさい!申し訳ない
309デフォルトの名無しさん:2006/12/29(金) 00:09:51
1はプログラム作るのに他人の意見は必要ないんだろ?
310デフォルトの名無しさん:2006/12/29(金) 00:11:54
>>1
とりあえずアク禁は解除されてるみたいだね。
おめでとう。
311 ◆z0MWdctOjE :2006/12/29(金) 00:30:46
>>1
果報は寝て待つ。
312デフォルトの名無しさん:2006/12/29(金) 01:01:32
てか、1はトリップつけろよ。偽物が紛れてるかもしれないし。
313デフォルトの名無しさん:2006/12/29(金) 01:08:33
>>312
あぁそういえばそうだな。
すっかりその可能性を忘れてた。
とりあえず半信半疑になっとこう。
314デフォルトの名無しさん:2006/12/29(金) 01:13:39
今の1って何代目?
315デフォルトの名無しさん:2006/12/29(金) 01:19:18
さぁそれはよくわからんけど
トリップつけてソースコードを出してきたやつを>>1とみなす。
316 ◆/0/0ALTERA :2006/12/29(金) 02:45:41
>>1 じゃないけど今日から休みだから年内に出せるようにがんばってみる

317デフォルトの名無しさん:2006/12/29(金) 06:21:33
ここまではできた。
$cat -n ./src/control/Main.java
1 package control;
2
3 /**
4 this is Main for Othello
5 @author
6 @version 2006
7 **/
8 public class Main
9 {
10
11 public Main()
12 {
13 }//Main()
14
15 public static void main(String argv[])
16 {
17 // gui.awt a = new gui.awt();
18 // a.gui();
19 Control control = new Control();
20 control.control();
21 }//main()
22
23 }//Main
318デフォルトの名無しさん:2006/12/29(金) 08:53:45
>>316
最強ですか
319デフォルトの名無しさん:2006/12/29(金) 08:57:07
年内って、まだ2006年だぞ
320デフォルトの名無しさん:2006/12/29(金) 09:26:22
とりあえず俺は1を応援してるから。1頑張れ。楽しみにしてる。
自演かどうかは1なら分かることだから、一応書き込んでおく。

無意味な叩きレス多過ぎ。嘘だと思うならこなければいいだけのこと。
321デフォルトの名無しさん:2006/12/29(金) 10:53:21
俺も>>1を応援してる。
しかし>>1は相当アホだと思ってる。
だから色々教えてやってる。
322デフォルトの名無しさん:2006/12/29(金) 12:20:44
俺も>>1を応援している。
しかし>>1は完璧主義者だと思ってる。
だから今日中にはうpできないと思う。
323デフォルトの名無しさん:2006/12/29(金) 12:27:11
完璧には程遠い
目指すのはいいが空回りしてるバカ
324デフォルトの名無しさん:2006/12/29(金) 12:51:34
まぁまぁ叩くのはやめてもうちょっと暖かい目で見てやろうぜ。
俺は上の方で宿題やらせるつもりだろ?とか書いたけど
意外とまめじゃん。
2chへの書き込みは。
325デフォルトの名無しさん:2006/12/29(金) 13:31:21
暖かい目で見てきたつもりだが昨日は失望させられた
自分で宣言した事を守らなかったんだから少なくとも俺からの信用は失ってる
イライラしてきてるから明日ソースうpしなければ叩く側にまわってしまいそうだw
326デフォルトの名無しさん:2006/12/29(金) 13:34:06
>>321
>だから色々教えてやってる。
>だから色々教えてやってる。
>だから色々教えてやってる。
>だから色々教えてやってる。
>だから色々教えてやってる。

プ
327デフォルトの名無しさん:2006/12/29(金) 13:34:22
まぁまぁ、みんないつもは作る側で、納期の大変さは分かっているんだから、
もうちょっと暖かい目で。。。
328デフォルトの名無しさん:2006/12/29(金) 13:41:28
>>321
>>1は人の話なんか聞いちゃいねーよ
329デフォルトの名無しさん:2006/12/29(金) 14:19:50
>>327
だが、納期に納品できないのならせめて経過を…
330デフォルトの名無しさん:2006/12/29(金) 14:33:28
なんでも前ら客気取り?
331デフォルトの名無しさん:2006/12/29(金) 14:34:31
お正月三が日過ぎたくらいには出てるだろ。お前らのんびり待てよ
332デフォルトの名無しさん:2006/12/29(金) 15:07:00
"納期"の設定の際に要望とかは全く言って無いけどな
333デフォルトの名無しさん:2006/12/29(金) 16:56:18
"最強"
334デフォルトの名無しさん:2006/12/29(金) 22:18:18
>>1居る?
明日には間に合いそう?
335デフォルトの名無しさん:2006/12/29(金) 23:39:42
どっちにしろ、痛い。

まあソースうpしたら見てやるよ。
336デフォルトの名無しさん:2006/12/30(土) 00:05:50
ためのりはまだ現役なのか?
337デフォルトの名無しさん:2006/12/30(土) 00:21:08
現役だよ
338デフォルトの名無しさん:2006/12/30(土) 00:25:59
まだ現役か。
ためのりがこのスレみたら激怒するだろうね。
339デフォルトの名無しさん:2006/12/30(土) 00:31:02
一旦引退した感じだったんだけど復帰してまたチャンピオンになってる。
彼は本当にすごい。
340デフォルトの名無しさん:2006/12/30(土) 00:31:16
ためのりって誰だー
341デフォルトの名無しさん:2006/12/30(土) 00:32:09
>>340
オセロの世界チャンピオン
342デフォルトの名無しさん:2006/12/30(土) 00:35:27
日本人が世界チャンピョンか
343デフォルトの名無しさん:2006/12/30(土) 00:38:56
へー
344デフォルトの名無しさん:2006/12/30(土) 00:46:25
人間の世界で一番レベルが高い国は日本。
競技人口が多くて大会も盛んで選手層が厚い。
"オセロ"は日本発だし。
それでも時々世界チャンピオンの座は他の国の人に持っていかれる事もあるけどね。
スポーツで言えば柔道みたいな感じかな。
345デフォルトの名無しさん:2006/12/30(土) 00:50:35
オセロって日本発祥なんか。
初めて知ったよ。
346デフォルトの名無しさん:2006/12/30(土) 00:52:20
リバーシって、"オセロ"がツクダオリジナルの登録商標なので
名前を変えているだけ?それとも本当に日本発祥?
347 ◆z0MWdctOjE :2006/12/30(土) 01:07:14
>>346
詳しくはウィキペディアでオセロを検索してんか
348デフォルトの名無しさん:2006/12/30(土) 01:07:17
同様のゲームは100年以上前からイギリスにあったらしい。
日本にも伝わって来てたみたいだけど当時は流行らなかったらしい。
でもその後オセロっていう名前を付けて販売して流行らせたのは日本かな。
http://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%BB%E3%83%AD_(%E9%81%8A%E6%88%AF)
349デフォルトの名無しさん:2006/12/30(土) 01:08:19
>>346
海外ではリバーシ、日本では源平碁といって昔からあったゲーム
最初のこまの置き方とか細かい亜流があったが
ツクダがオセロの商標で今のルールを添えて販売し大ヒットしたのでありました

350デフォルトの名無しさん:2006/12/30(土) 06:24:33
オセロは日本の大学生が発明したと聞いていたが。
351デフォルトの名無しさん:2006/12/30(土) 12:45:15
352デフォルトの名無しさん:2006/12/30(土) 13:53:28
>>1
うpマダー?
353デフォルトの名無しさん:2006/12/30(土) 21:03:07
goto 2日前;



の予感
354デフォルトの名無しさん:2006/12/30(土) 21:29:45
ハイスクール奇面組!
3551:2006/12/30(土) 22:34:50
やばっ!まだ動かないや
あと90分か
眠たくなってきた
とりあえず寝ても良いですかね?
356デフォルトの名無しさん:2006/12/30(土) 22:36:31
>>355
寝るならうpしてからね
また反故にするつもりか?
357デフォルトの名無しさん:2006/12/30(土) 22:38:22
>>355
ってかトリップつけろ
3581:2006/12/30(土) 23:24:27
ゴメンね
年内には出来上がるよ
3591:2006/12/30(土) 23:31:18
>>358は偽者です
ごめんなさい
今からうpします
360デフォルトの名無しさん:2006/12/30(土) 23:31:34
1月1日になっても年内にできるとかいいそうだな。
3611:2006/12/30(土) 23:34:25
>>359が偽者です
本当に年内にうpしますから待ってください
できなかったら人間やめます
362デフォルトの名無しさん:2006/12/30(土) 23:35:31
すでに人間でないはず。。。


取り合えずトリップつけろおおおお
363デフォルトの名無しさん:2006/12/30(土) 23:37:29
お前ら釣られすぎ
3641:2006/12/30(土) 23:44:56
いや俺しかいないはず。
365デフォルトの名無しさん:2006/12/30(土) 23:44:59
ソースコードなんて出てこないと思ってるよ
3661 ◆tIKW.3DbiI :2006/12/30(土) 23:48:53
ゴメンね
トリップつけました
3671:2006/12/30(土) 23:51:15
おまいらーパクるなーー明日だすモレが1だ!
3681 ◆tIKW.3DbiI :2006/12/30(土) 23:52:31
>>365
年内には必ず出します...
ごめんなさい!
おやすみなさい!
3691:2006/12/30(土) 23:57:48
またにんげんからとおざかった。
そろそろやばいかも。
3701:2006/12/31(日) 00:00:26
お待たせしました
まだうまく動かないのでできたところまでです...
http://www.uploda.org/uporg326554.zip.html
3711 ◆OTHELLOVls :2006/12/31(日) 00:03:53
トリつけました
3721 ◆KnghNf6Np6 :2006/12/31(日) 00:05:06
どうせこんな感じだろ。
373デフォルトの名無しさん:2006/12/31(日) 00:05:13
偽者だらけじゃん
予想通りの結末だな
3741 ◆jVQGtf3XJ. :2006/12/31(日) 00:06:45
白黒つけるぜ

by ゼブラマン
375デフォルトの名無しさん:2006/12/31(日) 00:10:37
ちょっと期待してたけどやっぱり嘘だったのか
もう確信した
376デフォルトの名無しさん:2006/12/31(日) 00:14:00
期待してたグダグダの展開が始まって大満足です。
377デフォルトの名無しさん:2006/12/31(日) 00:20:15
>>375
ほんとはだいぶ信じてて騙されたのが悔しいんだろ?
378デフォルトの名無しさん:2006/12/31(日) 00:21:09
こういう時偽者やってるやつが一番人間としてどうかと思う
379デフォルトの名無しさん:2006/12/31(日) 00:24:58
偽者やるくらいだから一番悔しがってそうだな
380デフォルトの名無しさん:2006/12/31(日) 00:31:25
偽者って事がバレバレだから別に害があるわけじゃないし
それより今日まで待たせてきた"1"のほうが人間としてどうかしてると思うぞ
3811 ◆grBT6jKoio :2006/12/31(日) 13:20:13
全員1でいいだろ。
382デフォルトの名無しさん:2006/12/31(日) 13:33:29
うpまだー?
383デフォルトの名無しさん:2006/12/31(日) 14:08:24
>>296からの1は全部偽者だと思う
384デフォルトの名無しさん:2006/12/31(日) 14:47:32
>>316
そろそろできましたか?
今度はあなたに期待していますよ。
385デフォルトの名無しさん:2006/12/31(日) 15:50:16
>>98
つぼったww

もうすぐ2006年終わっちゃうよー!
386デフォルトの名無しさん:2006/12/31(日) 16:32:54
1は人を無駄に待たせてやきもきさせるのが狙いのクズ
387デフォルトの名無しさん:2006/12/31(日) 17:35:54
つか待っている方が(ry
388デフォルトの名無しさん:2006/12/31(日) 19:06:25
おせろっと勝負だ!
389デフォルトの名無しさん:2006/12/31(日) 19:21:53
源平碁歌合戦はじまった!
390デフォルトの名無しさん:2006/12/31(日) 21:30:44
>>316
うpマダー?
391デフォルトの名無しさん:2006/12/31(日) 23:48:06
1は去ったがスレは残った。
392デフォルトの名無しさん:2006/12/31(日) 23:58:41
(;゚д゚)ノシ スレのみんな、よいお年をー

>>1まだー?
393デフォルトの名無しさん:2007/01/01(月) 00:03:18
(´・ω・`)
394デフォルトの名無しさん:2007/01/01(月) 00:04:48
>>1以外
明けましておめでとうございます。
今年もよろしくお願いします。
395デフォルトの名無しさん:2007/01/01(月) 00:06:01
あけおめー
396 【大吉】   【895円】 :2007/01/01(月) 00:14:36
名前に!omikuji !damaと入れる
397 【だん吉】   【954円】 :2007/01/01(月) 00:23:05
あけおめー
398397:2007/01/01(月) 00:24:16
っておい、車かよ。
399 【小吉】 【1321円】 :2007/01/01(月) 00:25:31
どう?
400 【大吉】   【823円】 :2007/01/01(月) 00:36:33
!omikuji !dama
401 【大吉】   【571円】 :2007/01/01(月) 00:38:51
!omikuji !dama
402 【小吉】   【684円】 :2007/01/01(月) 00:52:22
まさかこのスレで年越すとは・・・^^;
403 【末吉】   【592円】 :2007/01/01(月) 01:18:25
初詣行ってきました。
末吉でした。
びみょー
404403:2007/01/01(月) 01:23:38
ここでも末吉だし・・。
良い年でありますように。
405 【末吉】   【1070円】 :2007/01/01(月) 01:44:09
アッー!けおめ!
406デフォルトの名無しさん:2007/01/01(月) 02:12:23
おまいらはもう、お年玉あげる歳だろ
407 【吉】   【1891円】 :2007/01/01(月) 02:27:19
>>406
子供とか甥っ子とかいないから・・・

あ〜そういや年の離れた従姉がいたが、子供かなり大きくなったからなぁ。
全然会わないし。
408デフォルトの名無しさん:2007/01/01(月) 02:28:36
>>406
ワラタw
409デフォルトの名無しさん:2007/01/01(月) 03:15:09
親はいまでも自分を子ども扱いしてお年玉くれるなぁ。
イランゆうてもくれようとする。
損するもんじゃないから結局もらうけど。
410 【大吉】   【550円】 :2007/01/01(月) 03:37:01
あけおめ〜
411 【吉】   【287円】 :2007/01/01(月) 08:28:07
412デフォルトの名無しさん:2007/01/01(月) 13:06:14
>>407
あげる立場って言ってるんじゃなくて、
あげる年齢だろ?って言ってるんだ
413 【凶】 だから 【1548円】 くれ:2007/01/01(月) 15:57:54
甥っこ姪っこがみな就職してるのに?
414デフォルトの名無しさん:2007/01/01(月) 17:03:02
もうもらう歳じゃないだろ
いくつまでもらうつもりなんだ?
ってのも読み取れなかったのかな?

リアルに中学生くらいならごめんね。
415デフォルトの名無しさん:2007/01/01(月) 17:13:38
お前らスレ違いもいい加減にしろよ
416デフォルトの名無しさん:2007/01/01(月) 17:47:24
>>316氏は作ってるの?
417デフォルトの名無しさん:2007/01/01(月) 18:07:41
24歳までもらってた。
418デフォルトの名無しさん:2007/01/01(月) 19:29:46
誰かゼブラとかロジステロとかについて詳しい人居る?
居れば技術解説してくれないかな?
419デフォルトの名無しさん:2007/01/01(月) 19:42:29
プログラミングしらんけど、オセロって、序盤は

1.少石返し
2.自分の石をつなげる
3.相手の石に囲ませる

みたいな感じ?
420デフォルトの名無しさん:2007/01/01(月) 19:53:57
そうだね。
それらは打てる場所の数を増やす/減らさない事につながる。
421デフォルトの名無しさん:2007/01/01(月) 20:29:04
/////////////////////////////////// チラシの裏 ////////////////////////////////////////////////
// C++の勉強初めて1週間程度だけどこのスレを見て練習がてらオセロが出来るプログラム作ってみようと思った
// でもそれを作るには返す手を計算する処理が必要なわけでそれを作る事は俺にはまだ不可能だと思った
//
// このスレを最初見たとき>>1の言ってる事はなんとなくしか理解できないし俺はすごいと思ってたけど
// 今の>>1は「最強のオセロプログラム作りたいから手伝って!俺はオセロプログラム作れないけど^^;」
// って俺が言ったのと同じじゃね?
// 作りたいと思うなら、作れると思うなら経過くらいうpするべきだと思う
/////////////////////////////////// チラシの裏 ////////////////////////////////////////////////
422デフォルトの名無しさん:2007/01/01(月) 20:36:25
アイデアを盗まれるのがイヤなんじゃね?
423デフォルトの名無しさん:2007/01/01(月) 20:42:09
基本ができなければアイディアさえ思いつけないだろう。
仮にアイディアを自分で考え付いても車輪の再発明である可能性が高い。
せめてアイディアを公開すれば他人が検証できるんだけどね。
424 【小吉】 【1286円】 :2007/01/01(月) 20:42:56
人間やめたに1票。
やめるなよ。orz
425デフォルトの名無しさん:2007/01/01(月) 20:59:24
>>1
にコーディング能力ないならどういう実装したかったのかだけでも教えてくれよ
C++,でもJAVAでも指定の言語でとりあえず書いてやるから。
そうすればここの住人が改良、最適化等するからよ?人間やめんな?
426デフォルトの名無しさん:2007/01/01(月) 21:07:24
>>1は恥ずかしくて出て来られないに一票
427デフォルトの名無しさん:2007/01/01(月) 21:10:22
出来もしない事を言い出しておいて人間やめる宣言してんだし
単なる自業自得だと思うが。
428デフォルトの名無しさん:2007/01/01(月) 21:13:17
だからアルゴリズムだけ記述すれば、プログラミングする人間はここには腐るほどいるって
言ったのに。
429デフォルトの名無しさん:2007/01/01(月) 21:24:35
>>1のアイディアは間違ってる可能性が高いし公開するつもりも無いのだろう。
>>1に呼びかけてる暇があれば自分でアイディア考えた方が良くないか?>1に期待してる人
430デフォルトの名無しさん:2007/01/01(月) 21:36:48
逃げるくらいならまだ作り方教えて下さいのほうがマシだったな
まぁその場合ここまで延びなかったと思うが。
431デフォルトの名無しさん:2007/01/01(月) 21:51:29
誰か線形和評価関数について詳しい人居ますか?
432 【大吉】 【571円】 :2007/01/01(月) 23:49:02
たった今、公園で>>1を見かけた。
可愛そうなのでパンの耳を上げた。
うれしそうに食べてた。
433デフォルトの名無しさん:2007/01/02(火) 01:56:16
>>431
俺もよくわからんけどこの狐ルーチンみたいな奴の事?
http://www.kitsunemimi.org/vsotha/algorithm.html
これは三層パーセプトロンらしいけど。
線形和は単層パーセプトロン?
434デフォルトの名無しさん:2007/01/02(火) 03:03:12
お前ら小難しい話になった途端黙るよな。
435デフォルトの名無しさん:2007/01/02(火) 14:47:54
評価関数でパーセプトロンの代わりにサポートベクタマシンって使える?
436デフォルトの名無しさん:2007/01/02(火) 14:53:05
>>435
http://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%83%99%E3%82%AF%E3%82%BF%E3%83%BC%E3%83%9E%E3%82%B7%E3%83%B3
>学習サンプル数が増えると急速に計算量が増大するため、
大量の局面から学習しないといけないから難しいのかな?
実際試したわけじゃないからよくわからんけど。
437デフォルトの名無しさん:2007/01/02(火) 15:01:46
日本語でおk
438デフォルトの名無しさん:2007/01/02(火) 16:17:51
439デフォルトの名無しさん:2007/01/02(火) 18:20:18
それでも俺は>>1を待つ(`・ω・´)人間やめんな
440デフォルトの名無しさん:2007/01/02(火) 18:52:46
>>1
さっき新町の吉牛で見かけたよ?
441デフォルトの名無しさん:2007/01/02(火) 22:26:35
>>439
こっそり見てる>>1が良心の呵責に苦しむから期待しないでやれよ
442デフォルトの名無しさん:2007/01/02(火) 22:57:52
動かない途中のでもいいからうpして欲しいな。
443 ◆z0MWdctOjE :2007/01/02(火) 23:01:40
>>436
SOC法とかいう速いアルゴリズムがあるらしいよ。
『サポートベクターマシーン入門』に擬似コードが載っていた。
4441:2007/01/02(火) 23:03:05
ここまでできました。
あとはお願いします。
int mein(boid){
 ritan 0;
}
445デフォルトの名無しさん:2007/01/02(火) 23:09:18
>>443
SOC法?って聞いたこと無いな。
ぐぐってもよくわからなかいんだけどよければリンク教えてくれる?
446デフォルトの名無しさん:2007/01/02(火) 23:12:09
>>444
>>1が作ってるのはBearRevのDLLだべ
447 ◆z0MWdctOjE :2007/01/02(火) 23:20:19
>>445
ごめんなさい、SMO法だったm(__)m
448デフォルトの名無しさん:2007/01/02(火) 23:26:50
評価関数の自動作成ならBonanzaのが実績もあるから
いいんじゃね?
449448:2007/01/02(火) 23:27:24
あ,これは将棋ね
450デフォルトの名無しさん:2007/01/02(火) 23:32:37
なるほど。
Wikipediaにもチラッと出てる分割統治法の考え方を
用いた手法(の一つ?)がSMO法なのかな。
dクス
451デフォルトの名無しさん:2007/01/03(水) 02:58:39
>>433
vsOtha を試してみたがWZebra と互角に戦うじゃないか!
452デフォルトの名無しさん:2007/01/03(水) 03:28:00
>>448
将棋も評価関数の自動作成に流れが来ると思いますね。
その為にも比較的シンプルなオセロの評価関数作成で経験を積むのは有効だと思います。
>>451
そうなんですか。自分も今度試してみます。
あとソースも読んでみます。
453451:2007/01/03(水) 11:48:02
通常 8手、終盤24手必勝読み、終盤22手完全読みの設定にして
3連続で引き分けになった。
454デフォルトの名無しさん:2007/01/04(木) 00:23:05
通常 8手
偶数がいいんですか?
455デフォルトの名無しさん:2007/01/04(木) 01:01:21
そりゃあ
相手の番と自分の番と読むんじゃないか?
しらないけど。
456デフォルトの名無しさん:2007/01/04(木) 01:50:59
偶奇どちらがいいかはわかりません。
一般的に、ある偶数は1少ない奇数より良くて1多い奇数より悪いです。
探索は深いほど時間がかかるけど精度はいいです。
457デフォルトの名無しさん:2007/01/04(木) 02:23:37
とりあえず>>1に書いてある BearRev を落として見た。
ソースも読んでスケルトンのビルドまではした。

で、>>1のソースうpはまだー?
458デフォルトの名無しさん:2007/01/04(木) 02:55:40
ZebraとかvsOthaはGPLなんだけど
これらを改造してBearRev用DLLにして公開したらまずい?
459デフォルトの名無しさん:2007/01/04(木) 03:28:08
全然まずくないだろ
ただソースは公開しないとだめだけど
460デフォルトの名無しさん:2007/01/04(木) 03:49:29
DLLのソースは公開してもいいんだけどさ、
GPLのDLLにリンクするプログラムってGPLにしないと駄目じゃなかったっけ?
BearRevはGPLじゃない(よね?)からどうなのかと疑問に思った。
先にBearRevがあるからいいのかな?
461デフォルトの名無しさん:2007/01/04(木) 04:00:44
こんなの見付けた
http://hfujita.air-nifty.com/blog/2004/08/index.html
http://www.gnu.org/licenses/gpl-faq.ja.html#GPLPluginsInNF
>ん、そもそもBearRevのプラグインという時点でこの問題が生じる?
>……あ、これは著作者である俺が「BearRevへの動的組み込みを許可する」
>と宣言すれば問題ないのか。
自分は著作権者じゃないしなぁ。
462デフォルトの名無しさん:2007/01/04(木) 04:03:04
ああそういうことか
分からない駄目なのかも
463457:2007/01/04(木) 05:48:51
あー、GPLの事すっかり忘れてたなぁorz
実はさっきまでZebra移植しようとしてた。。

俺も調べてみるわ。
464457:2007/01/04(木) 06:12:55
BearRevってどっかで見た事ある名前だなぁとか思ってたらスレイプニルの柏木さんかよ!
今気付きますた。

で、ライセンスの件なんだけど>>461のリンク先サイトのThell使えばよくね?
http://www.vector.co.jp/soft/win95/game/se183886.html

で、今ソースを探してる所なんだけど眠いんで寝る。

<チラ裏>
http://sanno.xsrv.jp/cgi-bin/kifboard/kifboard.cgi
</チラ裏>
465デフォルトの名無しさん:2007/01/04(木) 08:04:53
先読みするのはいいけど、どういう状態が最前なのかわからない。
466 ◆z0MWdctOjE :2007/01/04(木) 08:30:12
そこで機械学習ですよ。
467デフォルトの名無しさん:2007/01/04(木) 10:01:15
最善がわからないと機械どうしやらせても子供同士のオセロにしかならん
468デフォルトの名無しさん:2007/01/04(木) 10:46:39
例えば、3手先までみると、それぞれ2箇所しか打てないとして、
1-1-1
1-1-2
1-2-1
1-2-2
2-1-1
2-1-2
2-2-1
2-2-2
と、あるけど、
自分の打てる場所が多くなればいいのか?
相手の手が狭まればいいのか?
より多くひっくり返せるほうがいいのか?
相手が隅の回りにしか置けないようにするのがいいのか?
そもそも、コンピュータの相手というのは、多くは人間であり、
最善の手を打つとは限らない。
この条件で考えると最善の手とは何かわからなくなる。
469デフォルトの名無しさん:2007/01/04(木) 10:54:02
前半は定石にのっとって、中盤はそれぞれ最善と決めたものを
終盤はできるだけ読みきる形でしょ
470デフォルトの名無しさん:2007/01/04(木) 11:16:22
答えが分からない時は教師なし学習だ
471デフォルトの名無しさん:2007/01/04(木) 13:14:16
中盤が問題だな。
でも>>1の手法はそれも解決するらしい。
472デフォルトの名無しさん:2007/01/04(木) 13:50:37
>>469
定石にのっとってとよく言うけれど相手が定石から外れたらどう対処すればいいのかな?
473デフォルトの名無しさん:2007/01/04(木) 13:55:43
>>472
ゆとり世代ですか?
474デフォルトの名無しさん:2007/01/04(木) 18:10:30
>>472
リア厨ですか?
475デフォルトの名無しさん:2007/01/04(木) 19:07:18
>自分の打てる場所が多くなればいいのか?

これは良い手が多い。

>相手の手が狭まればいいのか?

これも良い手が多い。さらに言うと
同時に先読みするときの幅が狭くなるので
読める手が多くなるというメリットも齎される。

>より多くひっくり返せるほうがいいのか?

ほぼ間違い。ただし次のケースを除く。
その手または数手先に全消し出来る可能性がある場合。
その手または数手先に相手が置ける場所が無くなる(手詰まりになる)場合。

>相手が隅の回りにしか置けないようにするのがいいのか?

これは間違いというかほとんど考慮の意味が無い。

476デフォルトの名無しさん:2007/01/04(木) 19:11:49

結局、良く言われていることなんだけど、
自分の置ける場所が増えて相手の置ける場所が減る手が良い手であることが多い。
とりあえず序盤と中盤はそれで評価値を決めていいと思うよ。

終盤は当然読みきり。
477デフォルトの名無しさん:2007/01/04(木) 20:00:19
着手可能箇所数(mobility)は局面評価のフィーチャーの一つとしてはいいけど、
それだけだと明らかに悪い手さえ排除できない事がある。
vsOthaには着手可能箇所を評価値として打つオプションがあるから
精度がどの程度あるか試してみたら?
http://www.vector.co.jp/soft/win95/game/se322332.html
478デフォルトの名無しさん:2007/01/05(金) 01:39:26
なるほど
mobility相手だと何回やっても漏れが勝った
ありがとう
479 ◆z0MWdctOjE :2007/01/05(金) 01:51:49
各種特性値の線形和をとってその係数空間の中で最適な組を探索させればあるいは…
480デフォルトの名無しさん:2007/01/05(金) 01:57:05
>>479
もうちょっと具体的に説明してくれる?
興味深い事言ってる気がする。
481デフォルトの名無しさん:2007/01/05(金) 02:06:36
それってORじゃないの
日本語でなんだっけ
多変量解析だっけか
482デフォルトの名無しさん:2007/01/05(金) 02:09:24
線形計画法だ
すまんこ
483 ◆z0MWdctOjE :2007/01/05(金) 02:23:46
>>480
気のせいです。
484 ◆z0MWdctOjE :2007/01/05(金) 02:59:05
チラ裏考え中…n次元係数空間は定数倍の自由度がある
案1、係数の2乗和が定数になるようにする…球面上をはい回るイメージ
案2、たとえば着手可能箇所数(mobility)の係数を固定にする

考え中…解の候補を遺伝子と見立てて交叉、変異、淘汰を繰り返す…
(n+1)個の点で凸包をつくりポリトープ法で…

考え中…解の候補のうち、最良の候補vs新しい解の候補でやったら…


色々試してみたいけど時間が足りない…
485デフォルトの名無しさん:2007/01/05(金) 15:17:28
聞いてみたのはいいものの知らない事が出てきた・・
勉強してくる。
ポリトープ法って日本語資料少なくない・・?
486デフォルトの名無しさん:2007/01/05(金) 17:41:41
結局bonanzaみたいなことをやりたいってこと?
487 ◆z0MWdctOjE :2007/01/05(金) 19:15:45
>>485
ポリトープ法は従来シンプレックス法と呼ばれていた・・奥村氏の『アルゴリズム事典』
日本語資料はあと一つあるがなくしてしまった。
収束が遅くて使えないんでしょう。

>>486
結局bonanzaみたいなことをいろんなアルゴリズムでやりたいなと
488デフォルトの名無しさん:2007/01/05(金) 22:24:50
あげるんじゃないよ。
489 ◆z0MWdctOjE :2007/01/05(金) 22:26:59
ごめんなさい
逝ってきます
490デフォルトの名無しさん:2007/01/06(土) 02:30:32
深さによって最適な係数が変わっていくと思うけど
ある深さで係数がほとんど0になるようなフィーチャーは
その深さでは使用しないようにするってのはどうかな?
評価関数が軽くなると思う。
491デフォルトの名無しさん:2007/01/06(土) 04:49:17
http://othellogateway.com/ntest/Ntest/howitworks.htm
評価関数の精度に定評のあるNtestの使用するフィーチャー
-Pattern coefficients
-Potential mobility
-Mobility
-A constant to account for odd/even ply differential
特徴的なのはPotential Mobilityを使用してる事かな
492 ◆z0MWdctOjE :2007/01/06(土) 07:37:52
ところで>>1さんは?
493デフォルトの名無しさん:2007/01/06(土) 07:51:33
>>1さんカムバァックゥゥーー
494デフォルトの名無しさん:2007/01/06(土) 13:41:14
>>492
人間やめてカタビロトゲトゲにでもなったんじゃない?
495デフォルトの名無しさん:2007/01/06(土) 15:41:04
>>1に一体何を期待してるんだ?
496デフォルトの名無しさん:2007/01/06(土) 16:06:41
>>495
笑い
497 ◆z0MWdctOjE :2007/01/06(土) 16:20:02
>>494
ハムシかよ!
498デフォルトの名無しさん:2007/01/06(土) 19:30:41
>>1
いつかソースを出す気があるのか無いのかだけでも答えてくれるか?

無くても別に叩かんから
499デフォルトの名無しさん:2007/01/07(日) 01:28:45
6時間ほどで作った簡易リバーシ。

http://ehoba.mydns.jp/loada/src/txup0129.zip

WSHを使ったJScriptで組んだもので、
Win2000以降なら標準で実行できるはず。
思考ルーチンを追加できる構造。

DOS窓から"cscript rev.js"で実行する。
500デフォルトの名無しさん:2007/01/07(日) 01:30:22
そうそう、付属の思考ルーチンは最弱のものなので注意。
501デフォルトの名無しさん:2007/01/07(日) 01:32:09
>>499
乙。
今からやってみるね。
502501:2007/01/07(日) 01:41:24
64-0で勝ちますた
503499:2007/01/07(日) 05:01:33
>>502
やはり圧勝でしたか。


そこでVer.UP。
http://ehoba.mydns.jp/loada/src/txup0132.zip

一部のコードの修正と、少し手ごわくなった思考ルーチン CPU_simple2 の追加。

書き忘れたけど、編集することで、プレイヤー対プレイヤーもCPU対CPUも可能。

CPU_simple2 は完成自体は早かったけど、最初は CPU_simple に時々負ける始末。
チューニングの末、CPU_simple にほとんど勝てるようになったがてこずった。
5041:2007/01/07(日) 06:24:27
本物です
みなさん、心配かけてごめんなさい
体調くずしてました
あとすこしかかりますがいいですか
505デフォルトの名無しさん:2007/01/07(日) 07:36:26
そういえば、負けるが勝ちなんてのもあったな。
506デフォルトの名無しさん:2007/01/07(日) 07:37:10
>>504
おぉ?本物か?
俺はいつまでも待つから、とりあえずあきらめないでほすぃ。
507デフォルトの名無しさん:2007/01/07(日) 07:39:13
508 ◆z0MWdctOjE :2007/01/07(日) 09:52:01
>>504:1
(・∀・)イイ!!
509デフォルトの名無しさん:2007/01/07(日) 12:11:27
1よトリはどうした?
偽者だな。
510デフォルトの名無しさん:2007/01/07(日) 12:22:59
トリをつけないってとこが1らしいジャマイカ。
511デフォルトの名無しさん:2007/01/07(日) 12:43:43
512457:2007/01/07(日) 14:24:59
(;´д`)出張から帰ってキタ
とりあえずレス追ってソース探し再開しま。(その前に寝るかもw)

>>504
あけましておめでとう
513デフォルトの名無しさん:2007/01/07(日) 15:10:16
>>504
心配?してねーよカス
この偽者め
514デフォルトの名無しさん:2007/01/07(日) 15:33:43
>>504
本当は当初考えてたアルゴリズムじゃできなかっただけなんだろ?
515デフォルトの名無しさん:2007/01/07(日) 15:39:11
でも>>1とその擁護派が頓珍漢な事言い続けてる方が
レス伸びてこのスレは活性化するんじゃないかな
516501:2007/01/07(日) 16:10:42
>>503
1回目55-9でした。
2回目64-0でした。
517デフォルトの名無しさん:2007/01/10(水) 09:59:42
simple2 vs simple2 で
518デフォルトの名無しさん:2007/01/12(金) 01:20:29
>>503
次の作品は無いの?
519デフォルトの名無しさん:2007/01/12(金) 01:23:27
携帯アプリの方にひとが移動している悪寒
5201:2007/01/13(土) 10:30:03
まもなく完成します!これが最強でなかったら人間やめます!
5211:2007/01/13(土) 11:40:28
非常に初歩ですみませんが
char型の配列を67108914個確保したいとき、main以外の関数から
参照するにはどうすれば?newでいける?
522デフォルトの名無しさん:2007/01/13(土) 11:42:23
          ヽ / /⌒\
         /ヽヽ|/⌒\ii|\
       / /ヾゞ///\\|
       |/   |;;;;;;|/ハ \|
             |;;;;//⌒ヽ
             |;/( ^ω^) >>1おっおっおっ乙枯ー
.           |{ ∪  ∪
             |;;ヾ.,____,ノ
             |;;; |
             |;;;;;|
             |;;;;;|
5231:2007/01/13(土) 11:43:09
すなわち、動的確保した変数をグローバル変数に出来ますか?ということです
524デフォルトの名無しさん:2007/01/13(土) 11:43:26
変数全部グロバル変数にしとけばいいじゃん
5251:2007/01/13(土) 11:45:56
mainの外で、char PPP[ 67108914 ]って書いてもコンパイル通らないですよ
526デフォルトの名無しさん:2007/01/13(土) 11:50:24
リバーシのプログラム作る以前の問題のようだ
5271:2007/01/13(土) 11:52:11
ここさえ出来ればあとは動くので教えて
528デフォルトの名無しさん:2007/01/13(土) 11:54:50
>>525
エラーメッセージを書いてみな
529デフォルトの名無しさん:2007/01/13(土) 11:56:12
>>521
char* PPP;

使う前に動的確保でいいんじゃない
5301:2007/01/13(土) 11:57:49
エラーメッセージは、Fatal: Out of memory です
動的確保が良いんですが出来ないですか?
5311:2007/01/13(土) 11:59:14
>>529
グローバルのポインタ定義しておいてあとで確保すればいいってことか わかりました〜
532デフォルトの名無しさん:2007/01/13(土) 12:14:51
>>531
でも、そんなに巨大なメモリ空間を何に使うの?
5331:2007/01/13(土) 12:16:41
生成した差し手の保存と、ハッシュテーブルに使うんです
534デフォルトの名無しさん:2007/01/13(土) 12:17:29
まぁ、とりあえず作ってみてよ。
でも、その部分は直す必要がありそうだけど。
535デフォルトの名無しさん:2007/01/13(土) 12:20:19
malloc失敗しないの?
5361:2007/01/13(土) 12:22:07
差し手で64M、ハッシュで64M使います
一応確保はできましたが
537デフォルトの名無しさん:2007/01/13(土) 12:27:35
俺も!と、思って作ってみたけど、公開する場所がない。
とりあえず、C:\my program\reversi\にothello.exe
置きました。
5381:2007/01/13(土) 12:31:39
あとちょっとなんですが、寝てから作り出しますね
手書きでは、全部書けてるんですが、あと打ち込んでデバックなんですが
眠くなったので寝ます
539デフォルトの名無しさん:2007/01/13(土) 12:37:40
何言ってんだ?
レベル低いな…がっかりだよ。
540デフォルトの名無しさん:2007/01/13(土) 12:39:56
手書き・・・?
541デフォルトの名無しさん:2007/01/13(土) 12:40:53
やっぱり30才以上だな。
年齢偽ってどうするの?
5421:2007/01/13(土) 12:41:05
プログラミング技術と、アルゴリズムの作成は別です
技術的な事を知らなかったからといって弱いとは限りません
プログラムは、高校のときに一種うけた頃以来やってません
5431:2007/01/13(土) 12:42:48
20代後半です
一番最後のときか、その一つ前だったと思います
544デフォルトの名無しさん:2007/01/13(土) 12:45:40
>>542
> プログラミング技術と、アルゴリズムの作成は別です
うん、その通りだと思うよ。

君はプログラミング技術が無いんだよね。
545デフォルトの名無しさん:2007/01/13(土) 12:45:50
10年の間プログラム環境は変わったよ。
あと、大学でプログラム書かないはずはない。
もしかして40台?
546デフォルトの名無しさん:2007/01/13(土) 12:46:37
手書きって、クヌースにあこがれてる厨房じゃないの?
547デフォルトの名無しさん:2007/01/13(土) 12:48:09
Tex使って卒論書いた?
5481:2007/01/13(土) 12:48:36
一種は、2000年度までやってました
修士(数学)を最近出ました
さて何歳でしょうか
549デフォルトの名無しさん:2007/01/13(土) 12:56:41
アルゴリズムは理論
プログラミングはアート
550デフォルトの名無しさん:2007/01/13(土) 13:01:50
アルゴリズムはサイエンス

プログラミングはアート
551デフォルトの名無しさん:2007/01/13(土) 13:13:23
一種ってことはプログラムが全く書けない可能性もあるな。
あれ?将棋のプログラム書いたんだよね?
矛盾してないか?

アルゴリズム+データ構造≠プログラム
5521:2007/01/13(土) 13:16:40
5531:2007/01/13(土) 13:19:21
フローチャートと、c言語の基本構文を使ったプログラムはできます
ともに手書きでやるんですが
554デフォルトの名無しさん:2007/01/13(土) 13:20:32
1が口だけの無能だということがよくわかった。
555デフォルトの名無しさん:2007/01/13(土) 13:24:49
>>554
それは言いすぎだと思うがなあ

ただフローチャート描いてる人って初心者ぐらいだよ。
556デフォルトの名無しさん:2007/01/13(土) 13:37:38
スパゲッティってことないよね?
557デフォルトの名無しさん:2007/01/13(土) 13:59:52
>>555
そう思ってるヤツがシロートだな
もっとも正確にはフローチャートとは呼ばないが
558デフォルトの名無しさん:2007/01/13(土) 14:07:08
559デフォルトの名無しさん:2007/01/13(土) 14:15:03
>>557
そう思ってるやつはサラリーマン
もっとも、ハッカーはコードしか書かない
560デフォルトの名無しさん:2007/01/13(土) 14:41:45
フローチャートが使えるとアピールすることは今や、
駅員志望者が面接で、切符切り鋏を使えることをアピールするようなものだ。
561デフォルトの名無しさん:2007/01/13(土) 14:48:59
やっぱり>>1がこないと盛り上がらないなw
562デフォルトの名無しさん:2007/01/13(土) 15:15:21
>>559
おまいがなw
563デフォルトの名無しさん:2007/01/13(土) 15:15:43
>>561
1は今必死にプログラミングしているところなんだよ
じゃますんな
564デフォルトの名無しさん:2007/01/13(土) 15:16:41
ハッカーは構造化とかオブジェクト指向とかに縛られない
565デフォルトの名無しさん:2007/01/13(土) 15:25:32
>>288
あたってたなw
566デフォルトの名無しさん:2007/01/13(土) 21:21:15
1よ、まだ出来ないのか?
567デフォルトの名無しさん:2007/01/13(土) 21:28:19
>>566
プログラミングの基本すらままならないから今勉強中
568デフォルトの名無しさん:2007/01/13(土) 21:38:43
Hello world はできたなか?
569デフォルトの名無しさん:2007/01/13(土) 21:43:40
>>568
そんな高度なのはまだできないんじゃないかな
570デフォルトの名無しさん:2007/01/13(土) 21:45:41
なんかみんな1のペースに巻き込まれてないか?
糞スレで終わってればよかったものの、こんなに待たされてるにもかかわらず
なんだかんだいって期待してる俺達w
571デフォルトの名無しさん:2007/01/13(土) 21:49:35
>>1はゴドー
572デフォルトの名無しさん:2007/01/13(土) 21:51:24
>>570
「達」を付けるなカス
俺は期待してない
573デフォルトの名無しさん:2007/01/13(土) 21:54:54
お前らオセロ(囲碁・将棋なども)がなぜ解けないかわかってないのか?
574デフォルトの名無しさん:2007/01/13(土) 22:04:00
全く期待していません。
けなすのを楽しんでいるだけです。
575デフォルトの名無しさん:2007/01/13(土) 22:22:52
>>573
わからん。
教えて。
576デフォルトの名無しさん:2007/01/13(土) 22:29:53
>>573
オセロは解けるよ。ただ、解くまでに時間が掛かりすぎるってだけ
577デフォルトの名無しさん:2007/01/13(土) 22:52:59
時間がいくら掛かってもいいってんなら囲碁も将棋も解けるだろ
578デフォルトの名無しさん:2007/01/13(土) 22:58:19
何千万年かかるのやら?
579デフォルトの名無しさん:2007/01/13(土) 23:31:21
独学じゃマトモに動くものはできんだろ
理論が素晴しくても、それを正確に表現するプログラムを作るのは
まず無理だろ
仮に理論どおりだとしても1手指すのに何日も計算したりしてw
580デフォルトの名無しさん:2007/01/13(土) 23:47:46
プログラミングのプの字も知らん人間にコンピュータサイエンスが解るわけがない。
581デフォルトの名無しさん:2007/01/14(日) 00:00:11
理論もたいしたことないよ
既存の技術の組み合わせを変えただけ
オリジナル技術は無かったし
582デフォルトの名無しさん:2007/01/14(日) 00:07:10
>>581
そういう作り方もできるというだけ。
よりよく作り込むには、やはり新しい理論を使っていかないといけない。
583デフォルトの名無しさん:2007/01/14(日) 00:23:33
つまり理論を示さずに口で理論はアルアル言ってるだけ
584デフォルトの名無しさん:2007/01/14(日) 00:29:08
>>583
そうだけど、なにか?ww
585デフォルトの名無しさん:2007/01/14(日) 00:34:44
俺も理論できた!!!!
>>1の言った事を頼りに考えてたらわかった!!!
これから実装するから待ってて!!!
586デフォルトの名無しさん:2007/01/14(日) 00:46:24
あっそ
587デフォルトの名無しさん:2007/01/14(日) 01:03:21
世の中のプログラム書きの90%以上はプログラムのプの字しか知らん
それでもわかった風な事ばかりいってるからな
1がプログラムかけなくても書けるつもりになってても別段不思議ではない
588デフォルトの名無しさん:2007/01/14(日) 01:11:22
>>587
プログラムはかけるやつがかけばいいとして
オセロ最強プログラムへのアプローチと1がどんな思考回路なのかに興味がある
589デフォルトの名無しさん:2007/01/14(日) 01:13:19
こんな感じ?
90%:プ
9%:プロ
0.9%:プログ
0.09%:プログラ
0.01%:プログラム
590デフォルトの名無しさん:2007/01/14(日) 01:20:21
プ 変数、制御文が使える。
プロ 構造化プログラム、オブジェクト指向を理解しアプリケーションを作成できる。
591デフォルトの名無しさん:2007/01/14(日) 01:41:11
そんなだからアマグラマーって言われるんだよ
592デフォルトの名無しさん:2007/01/14(日) 08:16:56
えっと、ダジャレですよね。ははは
593デフォルトの名無しさん:2007/01/14(日) 10:07:36
今ではアマチュアの方が技術が上なんだってね。
やっぱり有能な人間はプログラマやめちゃうんだねー。
594デフォルトの名無しさん:2007/01/14(日) 10:19:59
アマチュアは他と比べようが無いからな
595デフォルトの名無しさん:2007/01/14(日) 16:36:01
>>594
いくらでも比較できるシーンはあるわけだがw
596デフォルトの名無しさん:2007/01/14(日) 17:25:37
その視野の狭さがアマチュアなのさw
597デフォルトの名無しさん:2007/01/14(日) 18:13:47
お前ら二人とも素人だな
598デフォルトの名無しさん:2007/01/14(日) 18:19:52
ぷいにゅ
599デフォルトの名無しさん:2007/01/14(日) 18:30:44
Bullshit! I can't hear you!


         ノ                ___l,,,,,,,,,,,,___
           |           _,,,..-='''''~~~____::::::::::: ̄~~'''ュ
        |    _,,,...-='''''~~~:::::::::::::::::_,,-‐、ノノ、〉::::::::::::::_,.=''
       _,,,|..-='''''~~~:::::::::::::::::::::::::::::r''''~,="ツ, 、_〈__,,..= ''''~
 _,,,...-='''''~~~:::::::::::::::::::::::::::::::::::::::::::::  ~''~,ィ'~(i~  乂
(~::::::::::::::::::::::::::::r=~ _,,,_ :::::::::::::::::::    '  ̄ノ   ヽ
 ~''''''''''''''''''''''~(:::::(("~ヽ~ヽ :::::::::       ..:r   )
         ):::::ヾ、  l|_、_ :::::::        r`ー'f
         (:::::::::::`l、  _,-、         /  ヽ
         ヽ:::::::::::ゝ,,_ ノ         '  ,イノ
          `i::::      :::l          .〈 〈  タマ落としたか!
           \     :::l          ヽ1
            \    ::ヘ       ノ    ソ
              \   :::ヘ    /    f
               \      _,,..=ー---‐''
600デフォルトの名無しさん:2007/01/14(日) 19:13:00
601デフォルトの名無しさん:2007/01/14(日) 20:18:57
プロとアマの違いは納期の違いだ。

自分が得意なものだけをやって、
時間をたっぷり使えるアマチュアのほうが
断然有利だ。
602デフォルトの名無しさん:2007/01/14(日) 20:27:47
有利とは思わんな
時間の制約がなければいいものが出来る、というわけではない
603デフォルトの名無しさん:2007/01/14(日) 20:29:49
まぁ、確かに時間の制約がない故に、だらだらとやって
いつまでも結果がでないなんてことはよくあることだな。
604デフォルトの名無しさん:2007/01/14(日) 20:30:26
嫌だねぇ、プログラミングしか取り柄のないコーダーくん。
自分の得意分野を侵害されて不満のご様子。
605デフォルトの名無しさん:2007/01/14(日) 20:31:56
自分の存在意義を見失いそうですか?コーダーくん。
自分をそこまで追いつめたのは自分自身だということをいつ理解するんですか?
606デフォルトの名無しさん:2007/01/14(日) 20:37:37
お前らスレ違いもいい加減にしろ
607デフォルトの名無しさん:2007/01/14(日) 20:39:52
>>604-605
俺はコーダーじゃねぇけど、せめてまだ取り柄の一つでもあればまだまし。
世の中、全然取り柄がないヤツなんてごまんといる。
誰にでも、ひとつぐらいは取り柄があるなんてのはただの幻想。
608デフォルトの名無しさん:2007/01/14(日) 20:44:45
>>607
取り柄って言うのはね、自分自信の認識によるものなんだよ。
俺は何の取り柄もないダメなやつだ・・・なんて思っている人間はうつ病。
すぐに病院に行くべきだ。
609デフォルトの名無しさん:2007/01/14(日) 20:45:17
>誰にでも、ひとつぐらいは取り柄があるなんてのはただの幻想。

努力が足りないんじゃないのか?
610デフォルトの名無しさん:2007/01/14(日) 21:02:44
たりないのはうちわだ
611デフォルトの名無しさん:2007/01/14(日) 21:09:26
1がたりない。
612デフォルトの名無しさん:2007/01/14(日) 21:09:27
生きとし生けるもの全てに意味がある。
613デフォルトの名無しさん:2007/01/14(日) 21:11:29
>>612
そう思っていた時期が
俺にもありました
614デフォルトの名無しさん:2007/01/14(日) 21:13:09
>>607
一つの失敗を見つけて、「お前は何の取り柄もないやつだな」と罵ってみたり。
そして、「俺はあいつよりは優秀だ」と自分を励ましてみたり。

自信が無い人間ほどこういうパターンは多いかな〜
615デフォルトの名無しさん:2007/01/14(日) 21:15:06
>>612
生きてないモノにも意味があるよ
616デフォルトの名無しさん:2007/01/14(日) 22:05:51
だが、その最強のプログラムで以ってその最強のプログラムを突いたら之如何。
617デフォルトの名無しさん:2007/01/14(日) 22:21:35
>>616
多分だけど、白が勝つか、有意差を見られないかのどっち踵
618デフォルトの名無しさん:2007/01/14(日) 22:31:42
>>617
答うることあたわず…か
619デフォルトの名無しさん:2007/01/14(日) 22:36:00
漢文の「矛盾」のストーリーを思い出した。
620デフォルトの名無しさん:2007/01/14(日) 23:10:40
どっちにしろ最善手が見つかる時代に俺らはいきていまい。
621デフォルトの名無しさん:2007/01/14(日) 23:11:34
んなこたあない
622デフォルトの名無しさん:2007/01/14(日) 23:16:33
俺は1手目の最善手なら既に見つけたよ
623デフォルトの名無しさん:2007/01/14(日) 23:26:53
神現る。
624デフォルトの名無しさん:2007/01/14(日) 23:34:15
最後の1手の最善手なら俺でもわかるんだが。
625デフォルトの名無しさん:2007/01/14(日) 23:42:26
>>622
回転、反転させたらどこも一緒だろ
626622:2007/01/14(日) 23:47:21
>>625
そういうこと

>>623-624あたりに気づかなかった人も居るようだが
627デフォルトの名無しさん:2007/01/14(日) 23:55:36
>>626
だがその話をするとオセロはf5におくことが決められていて
最初の一手は白からだとか言い出すヤツもいるから気をつけろ。
628デフォルトの名無しさん:2007/01/15(月) 00:05:46
>>622
オセロはf5におくことが決められていて最初の一手は白からだ
629デフォルトの名無しさん:2007/01/15(月) 00:14:46
対称を消すと、一手目は一通りしかないのか。
二手目は三通りで三手目は(3+4+5)で12通りということでいいのかな。
四手目になると、ざっと数十通りか。流石にこの辺りになると手書きじゃ書き出せなくなるな。
630デフォルトの名無しさん:2007/01/15(月) 00:20:26
>>627
どういう意図で言ってるの?
初手F5に打つのは慣習であって、打たなければならないとは
決められてないし、先手は黒だけど。
631デフォルトの名無しさん:2007/01/15(月) 00:24:54
>>626
気づいてないのはむしろお前なんだがw
632デフォルトの名無しさん:2007/01/15(月) 00:39:14
>>585
今どんな状況?
633デフォルトの名無しさん:2007/01/15(月) 00:45:23
>>632
釣りに決まってるだろ
634デフォルトの名無しさん:2007/01/15(月) 00:56:39
texでリバーシ書いてください
6351:2007/01/15(月) 07:14:06
ほとんど出来た
まもなく完成!
6361:2007/01/15(月) 07:16:00
200行以内だけどかなり強いと思うよ
6371:2007/01/16(火) 05:54:24
うまく思考ルーチンが動かないのでもう少し待って下さい
局面の実現確率が1000000とかになる
普通は0から1の範囲なのに
番地をまちがえてるっぽい
638デフォルトの名無しさん:2007/01/16(火) 06:54:23
対人でオセロするときは
暗記厨に負けないように
自分が黒のときはわざと
F5いかずに回転+鏡像の
E6に打ってるよ
639デフォルトの名無しさん:2007/01/16(火) 14:42:25
>>638
たまにいるよね。
向きが変わると定石がわからなくなる奴。
俺はランダムにどこでも置く。
6401:2007/01/16(火) 15:52:08
いちおうできたよ
ちゃんと動かないところがありそうなんだけど
ソース読めたら凄い
http://up2moe.moe.hm/img/q394.txt
6411:2007/01/16(火) 15:53:53
だれかちゃんと動くように改造してクレー
642デフォルトの名無しさん:2007/01/16(火) 15:59:28
>>641
まず理論を説明してよ。
ちゃんと動かないってのは、
具体的にどういう動作がどうなってほしいの?
643デフォルトの名無しさん:2007/01/16(火) 16:02:55
いいよ、最終的に>>1のライブラリになればいいのかな?
6441:2007/01/16(火) 16:06:14
おかしなところは局面の出現確率で手を打ちきるんだけど
すすんで戻ってを繰り返すところがある様子
あと、手が5手くらいしか生成できない局面で18手とか重複して生成することがある様子
6451:2007/01/16(火) 16:19:52
remove() 手を戻す
msu() マスzからl方向へむけていくつコマが取れるか
situ() zにおいたときに取れるコマを出す
hmove() ハッシュ値の計算
adress() ハッシュ値からアドレスを出す
move() zへ手を進める
serch() 手をサーチする
tset() 手を登録する
mtd() 探索ルーチン
main() 初期化をする
6461:2007/01/16(火) 16:32:17
hash a,b 局面の得点 ,t 手数と未登録の確認, h ハッシュ値の下位8bit  
te[] 手の登録など
ad[128] 手数ごとのアドレス
h[128][16] 手数ごとのハッシュ値
rh[64][2] 白黒、マスごとのハッシュ計算用テーブル
rd[100] ハッシュが重複したとき手をずらす
x アドレス
F 白黒
z マス
masu[128][2] 手数ごとの白黒の枚数
ban[64] コマのおいてあるところは1
t 手数
kd[64][8] カベまでなんマスあるか
sit[64] sit[0]の取れるコマの枚数、次からはマス目
wb[128][8][3] bitボード、wb[][][0]が黒用、1が白用、2はコマがおける可能性のあるマス
tn[128] 手数ごとの指し手
tsu[2] 0が現在の局面の手数、1は思考ルーチン内での指し手の深さ
kar[128] 手数ごとの局面の実現確率
6471:2007/01/16(火) 16:41:22
>>642
645と646を参考にしてmtd()ルーチンを解読してください
648デフォルトの名無しさん:2007/01/16(火) 16:51:01
ちっとループするようだけど、デバッグは完全じゃないね?
6491:2007/01/16(火) 16:55:23
mtdの動作

kar[0]=1; 確率1より大きい手を指す 

if((te[4*x]&128)!=0)if((te[4*x+1]&128)==0) 手が正常に記録されているか?壊れていれば登録

if(tu==0){if(td==1) 手が空が2度続いたときは勝敗を記録

if(((hash[x].t)&2)==2) 手がすべて出ていたら確率を変更する

if(kar[tsu[1]+1]>=1) 確率が1を超えたら指し進めず手を戻す

if(ha[tsu[1]]==1) 次局面のアドレスを出す

if(((hash[x].a) < g) && ((hash[x].b) > g))if(kar[tsu[1]+1]<0.9) 手を指し進める基準

y=127-hash[x].b; 次局面で相手が最善手をうったときの得点の存在範囲から求まる得点

if(y>(te[4*ad[t]]&127)) 最大値を更新する

for(i=cn+2;i>=4;i--) 最善手を先頭へ
6501:2007/01/16(火) 16:56:26
>>648
まだ出来上がってないんですよ
もう少ししたら完成するとおもいます
6511:2007/01/16(火) 17:09:08
ソースをパッと見てWZebraより強くなりそうですかね?
652デフォルトの名無しさん:2007/01/16(火) 17:19:10
そのままじゃVisualC++2005でコンパイルすらできなかった。
多少手直ししたら通せたけど。
どのコンパイラで開発してたの?
6531:2007/01/16(火) 17:23:38
>>652
ボーランドc++です
始めに手を19と入力すると、20を返してくるんですけど
どこからmtdのwhileループを脱出しているのか特定できない...
どのbreak文でも出てない?
6541:2007/01/16(火) 17:25:39
>>653ですがすみませんわかりました
655デフォルトの名無しさん:2007/01/16(火) 17:28:34
>te[4*x]=128;
ボーランドc++のcharって128を代入できるの?
6561:2007/01/16(火) 17:32:12
>>655
unsigned でした!ありがとう!
657デフォルトの名無しさん:2007/01/16(火) 17:37:00
整形してVC++で動くようにしたのあるけど
まだ変更してるようだしちょっと様子みるか

あれだけ詰まってるとデバッグしづらいべ
658デフォルトの名無しさん:2007/01/16(火) 17:46:53
プログラミング初心者か・・・
659デフォルトの名無しさん:2007/01/16(火) 17:52:10
パッと見た感じだとオセロ初心者にも負けそうな感じだけど
6601:2007/01/16(火) 17:54:00
>>657
打ち込んで動作はしたよっていう、うpですからね
まともに動きすらしてないんです
明らかな重大なバグがあります 直し中です
661デフォルトの名無しさん:2007/01/16(火) 18:01:53
これはずいぶん難読化したソースですね
662デフォルトの名無しさん:2007/01/16(火) 18:07:13
>>661
http://up2moe.moe.hm/img/q395.txt
自分用にちょっと手直ししたソースです。
よければどうぞ。
VisualC++2005でコンパイルできます。
6631:2007/01/16(火) 18:15:16
>>662さんの整形からわかることですが

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
};

の番号順に、置ける手を探索していきます
664デフォルトの名無しさん:2007/01/16(火) 18:25:58
普通に書いたら500行以上になるのか
665デフォルトの名無しさん:2007/01/16(火) 18:28:54
>>1
なんでアルゴリズムだけ示してコーディングをみんなに任せないの?
不慣れな人間の下手糞なコーディングで他人の手を煩わせる時間を、
みんなを巻き込んでのアルゴリズムのさらなる改良に回せるのに。
666デフォルトの名無しさん:2007/01/16(火) 18:31:59
こんなスパゲッティを根気強く茹で上げた>>1を称えたい
6671:2007/01/16(火) 18:36:32
まともに打ち込み始めたのは、14日からです
スパゲッティといわれても、自分ではまあまあ読みやすいんです
(手書きのノートが元になっててそれを打ち込んだだけなんです)
668デフォルトの名無しさん:2007/01/16(火) 18:41:26
コードを書くのが初めてなんだから仕方がないね。
669デフォルトの名無しさん:2007/01/16(火) 18:45:50
ところでリバーシの腕前は?>>1
670デフォルトの名無しさん:2007/01/16(火) 18:48:04
>>669
ルールがわかるだけですが、思考ルーチンには経験則は使いません
端の方をとった方がいいっていうのは使いましたが
671デフォルトの名無しさん:2007/01/16(火) 18:53:08
一手打つ毎に盤面を表示しない?
座標だけ出されてもわかりにくいし
ちゃんと動いてなくても気づきにくい
672デフォルトの名無しさん:2007/01/16(火) 19:03:22
>>671
それは、BearRev用に改造すればいいんですよ
まだ完成してないけど...
6731:2007/01/16(火) 19:04:15
>>670>>672は1です
674デフォルトの名無しさん:2007/01/16(火) 19:10:02
BearRev用にはすぐ出せるけど、コードの意味わからんと・・・
これから帰宅だし、、2時間かかるから誰か出すべ
675デフォルトの名無しさん:2007/01/16(火) 19:37:28
石を返す処理が正しく動いてるかどうかも確認してないのか
676デフォルトの名無しさん:2007/01/16(火) 19:38:00
ブログラム初心者ってのは本当だったんだな…www
6771:2007/01/16(火) 19:46:49
20手までwzebraに優勢で戦えたけど、次の一手が打てなくなった
6781:2007/01/16(火) 19:49:51
wzebra相手に終局までいったら次のうpしますね
679デフォルトの名無しさん:2007/01/16(火) 19:50:34
そこまでの棋譜貼ってみて
強さを判断できるから
6801:2007/01/16(火) 19:54:22
>>679
先手Wzebraで
19,18
26,20
29,34
12,4
25,32
5,30
37,44
43,10
21,51
3,14
52
ですよ
681デフォルトの名無しさん:2007/01/16(火) 19:56:00
ちょっと待ってくれ
19,18とかどこのことだ?
6821:2007/01/16(火) 19:57:24
左上が0番です その下が8番です その右が1番です
683デフォルトの名無しさん:2007/01/16(火) 19:58:46
WZebraとの対戦のインタフェースってどうやってんの?
6841:2007/01/16(火) 20:01:21
>>683
手動ですが
あと>>677の優勢とは自前の評価によるものです
685デフォルトの名無しさん:2007/01/16(火) 20:03:56
それゼブラの評価値表示させてた?
既に大差負けの形勢だけど
686デフォルトの名無しさん:2007/01/16(火) 20:05:17
これゼブラどころか負ける人間ほとんどいないと思うよ
687デフォルトの名無しさん:2007/01/16(火) 20:05:54
D3C3C4E3F4C5E2E1B4A5F1G4F5E6D6C2F3D7D1G2E7
何これ・・
白ボロ負けじゃん
688デフォルトの名無しさん:2007/01/16(火) 20:07:49
人間やめなくていいよ。
6891:2007/01/16(火) 20:21:14
グラフ表示させてみるとWzebraとは別の局面になってたよ
なぜだ?
690デフォルトの名無しさん:2007/01/16(火) 20:23:44
WZebraは手ごわいから、とりあえずYahooオセロで1500目指せば?
691デフォルトの名無しさん:2007/01/16(火) 20:24:00
一生懸命頑張ってぷろぐらむを書いた>>1のひたむきさに免じて最初の頃の大言壮語は許そう。
そのぷろぐらむのあまりの屁垂れた戦いぶりには涙を禁じ得ない。
だから、>>1、人間やめていいよ。
692デフォルトの名無しさん:2007/01/16(火) 20:25:43
1に勝てるプログラムを誰かが書いてうp→それに勝てるのを書いてうp→繰り返し
いずれ最強にたどりつけるんじゃね?
693デフォルトの名無しさん:2007/01/16(火) 20:26:00
いやいや、まだデバッグも済んでないんだから
これから強くなることに期待しよう。
694デフォルトの名無しさん:2007/01/16(火) 20:29:55
というわけでやはりランダムに打つのと大差無いカスプログラムでした。
>>1
人間お疲れ様でした。
695デフォルトの名無しさん:2007/01/16(火) 20:41:32
分かりづらい

~Init()
6961:2007/01/16(火) 20:45:11
いやまだ強さは不明だよ
取れるマスを間違えているから
ここがちゃんと出来ないと評価値の計算も間違える
697デフォルトの名無しさん:2007/01/16(火) 20:46:54
returnを使わないでgoto使ってるのは何故?
698デフォルトの名無しさん:2007/01/16(火) 20:47:24
もういいよ
699デフォルトの名無しさん:2007/01/16(火) 20:48:50
制御構文の勉強やり直したほうがいいよ。
まずはgoto消せ。
700デフォルトの名無しさん:2007/01/16(火) 20:57:15
msu (char &l)
参照渡ししてる意味がわからない
701デフォルトの名無しさん:2007/01/16(火) 20:58:43
636 :1:2007/01/15(月) 07:16:00
200行以内だけどかなり強いと思うよ


そして13時間29分11秒が経過した・・・

696 :1:2007/01/16(火) 20:45:11
いやまだ強さは不明だよ
取れるマスを間違えているから
ここがちゃんと出来ないと評価値の計算も間違える
702デフォルトの名無しさん:2007/01/16(火) 20:59:53


        57年後
703デフォルトの名無しさん:2007/01/16(火) 21:01:55
>まともに打ち込み始めたのは、14日からです

年末はなんだったのかとw
704デフォルトの名無しさん:2007/01/16(火) 21:02:43
やけにスレが上がってくるから見てみたら・・
ここの>>1とんでもない痛い香具師だな
705デフォルトの名無しさん:2007/01/16(火) 21:05:39
誰かC/C++でリファクタリングできるソフト知らない?
706デフォルトの名無しさん:2007/01/16(火) 21:08:42
VS2005
7071:2007/01/16(火) 21:10:56
msに計算間違えがあることが判明した

z=971;printf("z=%d\n",z);

これでなぜかz=203になるけどなんで?
708デフォルトの名無しさん:2007/01/16(火) 21:11:34
>>706
VS2005使ってC#ではやったことあって
>>1のコードで同様にやろうとしたけどできなかった
C++はやり方が違うの?
7091:2007/01/16(火) 21:12:09
すまん解決した zは255までだった
710デフォルトの名無しさん:2007/01/16(火) 21:18:39
>>708
C++はリファクタリングできませんよ。
711デフォルトの名無しさん:2007/01/16(火) 21:27:24
>>710
なるほどd
Eclipseとかでもできないのかな?
712デフォルトの名無しさん:2007/01/16(火) 21:30:00
http://eclipsewiki.net/eclipse/?C%2FC%2B%2B%20%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3
あ、Eclipseならリネームはできるみたいだね
7131:2007/01/16(火) 21:43:33
http://up2moe.moe.hm/img/q397.txt
大分良くなったよ
まだ指し手が変だけどうpしておく
714デフォルトの名無しさん:2007/01/16(火) 21:47:57
インデントを直すぐらいならあるけど、それ以上はしらない。
715デフォルトの名無しさん:2007/01/16(火) 22:04:40
1よIDE使え。
VisualStudioかボーランドの奴とか使えよ。
無料なんだがな。
716デフォルトの名無しさん:2007/01/16(火) 22:11:39
>>713
クラッシュした
(gdb) run
        
        
        
   ○●   
   ●○   
        
        
        
おけるマスは 19 37 44 26
input? 19

Program received signal SIGSEGV, Segmentation fault.
0x00401795 in _Z6adressv () at reversi.c:74
74 if((hash[x].t)==0){hash[x].h=y;hash[x].t=1+(masu[t][0]+masu[t][1]-3)<<2;
break;}
(gdb) print/x x
$1 = 0xfe6b4f95
(gdb) print t
$2 = 1 '\001'
(gdb) bt
#0 0x00401795 in _Z6adressv () at reversi.c:74
#1 0x00402bd8 in _Z3mtdv () at reversi.c:164
#2 0x00403845 in main () at reversi.c:241
7171:2007/01/16(火) 22:16:53
>>716
最低でも空きメモリは128M使いますよ
718デフォルトの名無しさん:2007/01/16(火) 22:20:23
>>717
Mem:512MiB+Swap 768MiB 積んでるのでそれは大丈夫かと。
それよりも x の値が 0xfe6b4f95 ってのがおかしい気がする。
7191:2007/01/16(火) 22:20:28
思考時間1秒から5秒でやってみたけどWzebraに歯が立たない
10秒にしたところで大して変わらない気がする
7201:2007/01/16(火) 22:23:45
そうでした
アドレス間違えてました
配列は2の24乗個しか用意してないのにxは24桁もあるんだった
修正します
7211:2007/01/16(火) 22:25:44
23bitの2進数の表現できる範囲は0から2^24 - 1ですよね
7221:2007/01/16(火) 22:29:50
723デフォルトの名無しさん:2007/01/16(火) 22:42:51
>>721 ?
例えば8ビット符号無しだと0〜255(=2^8-1)だぞ
724デフォルトの名無しさん:2007/01/16(火) 22:46:03
終了のお知らせw
7251:2007/01/16(火) 22:47:51
また間違えたかな
24ビットで良いのか
726デフォルトの名無しさん:2007/01/16(火) 22:53:21
プログラムの間違いを指摘するより、
どうしたいのか言った方がこっちも答え易いぞ?
727デフォルトの名無しさん:2007/01/16(火) 22:55:07
ちなみに、数学科で何やってたの?>>1
728デフォルトの名無しさん:2007/01/16(火) 23:27:57
へぇ mebi って MiB って書くんだ
729デフォルトの名無しさん:2007/01/16(火) 23:30:15
>>725
まだクラッシュするので調べてみた。
原因は main()の3行目の
 fore(i,100)rd[i]=(rand()+(rand()<<16))%16777216+1;
らしい。

rand は符号付き int を返すので、これが偶然負の数になった場合、16777216で
割った余りも負になってしまい、そのまま符合無し int にキャストすると 16777216 を
超えると。この値が後で x に加算されて値がおかしくなるということっぽい。


………ちなみに修正したら今度は帰ってこなくなった orz
730デフォルトの名無しさん:2007/01/16(火) 23:37:44
何回もソース見てるが何故これが強いと言い切れるのか分からん。
731デフォルトの名無しさん:2007/01/16(火) 23:38:34
というか、これ何やってるの?
少しは説明してよ
732デフォルトの名無しさん:2007/01/16(火) 23:40:29
>>730
>>1がいうにはアルゴリズムが強いらしいぞ
プログラムは本当に初心者だから、このソース見てもバグだらけだし、
ちゃんと実装されていないし、強いとは思えないだろうけど。
733デフォルトの名無しさん:2007/01/16(火) 23:40:58
>>731
ちょっと古いけど>>662のソースを参考にしてみたら?
734デフォルトの名無しさん:2007/01/16(火) 23:44:29
保守性0のコードのメンテを頼まれた時の絶望感を感じるコードだな。
7351:2007/01/16(火) 23:45:06
終局の勝敗がちゃんと付けられないという致命的なバグがあります
これが直れば大分マシになるとおもいます

>>729
うちの環境ではrandは0から2^16-1なんです
randを自前で生成するという手か、初めから決めておくという手で回避出来そうですが
736デフォルトの名無しさん:2007/01/16(火) 23:45:07
整形は一応自分でもしたけど、読み切ってるわけじゃなさそうだし
末端では何で評価してるのかとか
737デフォルトの名無しさん:2007/01/16(火) 23:47:10
if(randnum<0)
 randnum=-randnum;
これ追加しとけばいいんじゃまいか
738デフォルトの名無しさん:2007/01/16(火) 23:47:11
いまさらintが16ビットの環境でプログラム作ってのか?
739デフォルトの名無しさん:2007/01/16(火) 23:52:27
>>728
Men in Blackもそう。
740デフォルトの名無しさん:2007/01/16(火) 23:52:54
…「一応動く」だけじゃねえか
あとそれはバグとは言わないぞ
741デフォルトの名無しさん:2007/01/16(火) 23:53:35
RAND_MAX
742デフォルトの名無しさん:2007/01/16(火) 23:57:59
(rand()%10)とかやれよ!
743デフォルトの名無しさん:2007/01/16(火) 23:59:13
RAND_MAX使えよ!
744デフォルトの名無しさん:2007/01/17(水) 00:01:19
hoge % 16777216 → hoge & 16777215 → hoge & 0xffffff
これでいいのでは?
745デフォルトの名無しさん:2007/01/17(水) 00:01:43
10年以上前のC++の方言で書いてるの?
746デフォルトの名無しさん:2007/01/17(水) 00:16:21
>>728
mebi = Mi
最後の B は byte
747デフォルトの名無しさん:2007/01/17(水) 00:41:05
皆さんは1さんがやりたいことが分かってるんですか?
僕にはさっぱりです。
誰か3行以内で説明してください。
748デフォルトの名無しさん:2007/01/17(水) 00:46:22
最強のオセロプレイヤーを作りたい。

1行で説明したぜ。中のアルゴリズムと、目標をどれだけ達成できてるかは分からんが。
749デフォルトの名無しさん:2007/01/17(水) 00:48:35
他人の注目を集めたい

俺も1行
750デフォルトの名無しさん:2007/01/17(水) 01:22:40
>>1
>>722のコードをそのままVisualStudio2005でコンパイルしようとすると
こんなエラーと警告が出る。
http://up2moe.moe.hm/img/q402.txt
ソースがうpされるたびに直すの面倒だからこれも修正しといてくれない?
751デフォルトの名無しさん:2007/01/17(水) 01:37:30
>>750
gcc -Wall でやると
warning: array subscript has type ‘char’
warning: ‘xh’ may be used uninitialized in this function
この2つが山のように出るぞ。
752デフォルトの名無しさん:2007/01/17(水) 01:44:22
>>751
>>750は警告レベル3だった
警告レベル4(最高)でやるとこんな感じ
http://up2moe.moe.hm/img/q404.txt
753デフォルトの名無しさん:2007/01/17(水) 02:17:00
void fn(char t)
{
int i,j;
char bnn[64];
fore(i,64)bnn[i]=0;
fore(i,8)fore(j,8)if(bt[wb[t][i][0]][j]==1)bnn[8*i+j]=1;
fore(i,8)fore(j,8)if(bt[wb[t][i][1]][j]==1)bnn[8*i+j]=2;
printf(" ");
fore(i,8)printf("%c ",i+'A');
printf("\n");
fore(i,8)
{
printf("%c ",i+'1');
fore(j,8)
{
if(bnn[8*i+j]==0)
printf("−");
if(bnn[8*i+j]==1)
printf("●");
if(bnn[8*i+j]==2)
printf("○");
}
printf("\n");
}
}
754デフォルトの名無しさん:2007/01/17(水) 02:18:03
>>1
fn(t);
printf("おけるマスは ");
z=64;
while(1)
{
serch(z);
if(z!=97)
printf("%c%c:%d, ",(z%8)+'A',(z/8)+'1',z);
else
break;
}
こうしない?
755デフォルトの名無しさん:2007/01/17(水) 06:58:26
>>1がアルゴリズムを説明してくれればそれで済むのでは?
ここにいる連中なら一日もあれば作れそうだ
>>1のデバッグに付き合うよりは効率的だと思う
756デフォルトの名無しさん:2007/01/17(水) 08:07:20
自分の思ったように作られてないから弱いんだとか言い出しそう
757デフォルトの名無しさん:2007/01/17(水) 09:41:32
ソースより1の書いたノート上げてくれよ
758デフォルトの名無しさん:2007/01/17(水) 10:24:54
1 のプログラムの問題点(上のものほど問題が大きい)

構造やデータがきれいに分類・整理整頓されていない
グローバル変数の多用、struct などで構造化されていない
gotoを多用し、繰り返し等の構造が複雑怪奇
コメントがない
読みにくいスタイル
removeのような凶悪マクロ
オブジェクト指向的でない
K&R 形式の関数定義などの古すぎる文法の利用
759デフォルトの名無しさん:2007/01/17(水) 10:26:51
>>758>>1が初心者だとスレから読み取れなかった馬鹿
760デフォルトの名無しさん:2007/01/17(水) 10:34:41
>>759
そんなことはわかってる
でも初心者だからといって問題が解決するわけじゃない。
761デフォルトの名無しさん:2007/01/17(水) 11:17:32



えーっと、ここは誰でもソース貼っていいのかな?


762デフォルトの名無しさん:2007/01/17(水) 11:25:21
>>760
じゃー初心者がやりがちな問題点を列挙したところで問題が解決するのか?

誰もがわかっている上で助言してたり、ソース修正してうpしたりしてるなかで、
おまいがやってることは一番意味のないことだと思うが
763デフォルトの名無しさん:2007/01/17(水) 12:10:10
>>762
まぁまぁ落ち着こうぜ
初心者叩きして悦に入りたいやつがいるのはいつものことじゃねーか
764デフォルトの名無しさん:2007/01/17(水) 12:12:34
>>762
今の所アルゴリズムは公開されてないわけだし、1 が問題点を読んで
少しでも留意するようになれば、多少は問題解消に近づくと思うんだが。
765デフォルトの名無しさん:2007/01/17(水) 12:28:35
ソースがあるんだからそれ読めばいいと思うんだけど
いかんせん読む気がしない
766デフォルトの名無しさん:2007/01/17(水) 16:51:41
アルゴリズムに意味があればソースに多少のバグがあっても
やりたいことはわかるんだけどな
767デフォルトの名無しさん:2007/01/17(水) 16:59:01
>>761
貼っていいよ
>>1なんかのよりいい物をよろしく
768デフォルトの名無しさん:2007/01/17(水) 18:01:44
>>1が自分のソースを数ヵ月後に見直したら読めなくなってるだろうなぁ
769デフォルトの名無しさん:2007/01/17(水) 20:06:14
>>1
今日はソース更新・うpしないのー?
770デフォルトの名無しさん:2007/01/17(水) 20:25:11
>>1が使ってるBCCのバージョンはいくつ?
771デフォルトの名無しさん:2007/01/17(水) 20:40:38
なんで使いこなせもしないのにC++で書くんだ
Cでいいだろ
772デフォルトの名無しさん:2007/01/17(水) 20:55:20
背伸びしたい性格なんだよ
773デフォルトの名無しさん:2007/01/17(水) 21:17:49
C++で書いてあるのはごく一部だろ
774デフォルトの名無しさん:2007/01/17(水) 21:24:47
iostream使ってないしなあ
775デフォルトの名無しさん:2007/01/17(水) 21:49:50
1は社会人なのか?
776デフォルトの名無しさん:2007/01/17(水) 22:13:34
座標表現が不便だったのでちょっと書き変えてみますた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3434.c

ちなみに、722でも起こった現象だけど、ハッシュテーブルの b を 127 で初期化すると
永久ループにはまる…
代わりに a を 127 で初期化したので、もしかしたら盤面評価をぶち壊してるかも。
777デフォルトの名無しさん:2007/01/17(水) 22:42:25
お前誰だよ。
消えろカス。
778デフォルトの名無しさん:2007/01/17(水) 22:43:45
それと >> 使えよ。
不便だろ?
779デフォルトの名無しさん:2007/01/17(水) 23:10:57
>>776
>1?
780デフォルトの名無しさん:2007/01/17(水) 23:11:38
>>776
乙。
やっぱこうしたほうが使いやすいね。
781デフォルトの名無しさん:2007/01/17(水) 23:14:46
>>779
>729でつ。
782デフォルトの名無しさん:2007/01/17(水) 23:19:39
>>773
だから余計Cで書くべきじゃね?
783デフォルトの名無しさん:2007/01/17(水) 23:27:54
まぁあんな部分C++で書く意味はないね。
書き直すにしてもすぐ終わるし。

ところで>>1は人が書き直したソースを使う気はあるのだろうか。
なんでも自分でしたがってるように見えるが。
784デフォルトの名無しさん:2007/01/17(水) 23:28:34
K&R方式で書いてないだけましだ。
785デフォルトの名無しさん:2007/01/17(水) 23:36:15
妙にK&R方式を否定するのにこだわるヤツがいるな
昨日にでも知ったのか?
786デフォルトの名無しさん:2007/01/17(水) 23:39:37
否定するわけじゃないが
>>1の横一列ソースじゃとても読めたものじゃなくなる。
787デフォルトの名無しさん:2007/01/17(水) 23:43:18
変数宣言だけ見てるとHSPを見てるような不安感に襲われる
788デフォルトの名無しさん:2007/01/17(水) 23:45:45
もうアセンブラでいいじゃないか?
マクロもあるしな。
789デフォルトの名無しさん:2007/01/17(水) 23:55:26
プロトタイプは書かないのw
790デフォルトの名無しさん:2007/01/18(木) 02:14:46
>>1
バグの指摘だけ聞いてプログラミングの作法は無視か?
791デフォルトの名無しさん:2007/01/18(木) 02:24:44
みんな何だかんだ言いつつ親切だな
ツンデレかw
792デフォルトの名無しさん:2007/01/18(木) 03:54:31
> 昨日にでも知ったのか?
K&Rを昨日?ANSI Cが出てから何年経ったんだよ・・・
793デフォルトの名無しさん:2007/01/18(木) 04:36:52
>>792
マジレスして悪いが、K&Rを「電波本」と称した奴がこの板に数年前いたぞ。
794デフォルトの名無しさん:2007/01/18(木) 07:34:14
クライスラーあんどカンパニーだっけ
7951:2007/01/18(木) 19:15:46
始めて思考ルーチンが動作するようになりましたよ(今までのは全く読んでなかった)
みなさんの改良部分は思考ルーチンが完成したら加えますので待ってて下さい

http://up2moe.moe.hm/img/q432.txt
796デフォルトの名無しさん:2007/01/18(木) 19:21:01
可読性を改善する気はないわけか
797デフォルトの名無しさん:2007/01/18(木) 19:23:13
Artistic Styleでちょちょいとフォーマットかければいいじゃまいか
798デフォルトの名無しさん:2007/01/18(木) 19:25:03
1よ
これ使え!無料だぞ!

http://www.turboexplorer.com/jp
7991:2007/01/18(木) 19:36:13
>>798
ありがとう
インストールしてみる
>>796
画面でのスクロールが少なくていいんです

5秒〜10秒考えても終局の10手前が読める程度で
Wzebraに勝てそうにないため、ここまでのプログラム経験、デバッグ経験を
生かして根本から思考ルーチンを作り直してみます
800デフォルトの名無しさん:2007/01/18(木) 19:40:45
f5f4e3d6f3e2d2g4d3d1e6f6h4h5h6g5g6h7

今適当に打ってみたけど上の展開で簡単に詰んだぞ
プログラムが後手で先手が自分
801デフォルトの名無しさん:2007/01/18(木) 19:45:10
>>190
>アルゴリズム的には変更の余地が無いところまで完成しましたよ
>これが最強でなかったら人間やめます!
>>520
>まもなく完成します!これが最強でなかったら人間やめます!
最強じゃなかったら根本から思考ルーチンを作り直すんじゃなくて
人間やめるんじゃなかったのか?
8021:2007/01/18(木) 19:50:25
>>801
アルゴリズムを正常に効率よく動かすための改良のことなんです
全く別のアルゴリズムを作るわけではないです
うまく動作してない=完成してないです
まもなくが長引いただけなんです
803デフォルトの名無しさん:2007/01/18(木) 19:53:10
ということは一生人間やめなくてすむわけか
8041:2007/01/18(木) 19:56:32
ここまでは、プログラムの練習ということで
ここからが本番です
805デフォルトの名無しさん:2007/01/18(木) 19:56:43
アルゴリズム的に変更の余地があったのね
ってか大口叩くのやめたほうがいいよ
できもしない事ばかり言うから嘘つきになってるんだよ
8061:2007/01/18(木) 20:02:35
考えているアルゴリズムに変更の余地はないですよ
その動作を正確に実現するコードを作るだけです
807デフォルトの名無しさん:2007/01/18(木) 20:07:36
その考えてるアルゴリズムは公開しないの?
808デフォルトの名無しさん:2007/01/18(木) 20:07:57
コメントだけでも入れておくれ
809デフォルトの名無しさん:2007/01/18(木) 20:10:37
一旦ソースを捨ててゼロから作り直すように言おうと思ってたけど
自分で決断してくれたか。
810デフォルトの名無しさん:2007/01/18(木) 20:33:42
>>799
>画面でのスクロールが少なくていいんです

その考え方はまずい。

段組などを使って読みやすく書いた時に、一つの関数が2〜3ページを超えるようなら、
もっと基本的な処理単位(関数)に分割できるはずなので分割するべき。
そうすれば一つの関数の長さも減り、プログラムも読みやすくなるし、ついでに
見通しがよくなる分、訳の分からないバグを作りにくくなる。
8111:2007/01/18(木) 20:40:39
関数に細かく分けて独立度を高めるほどに、重複して使える変数が減って
その都度(関数呼び出しごと)に変数の生成と、関数呼び出しのオーバーヘッドが
かかりますよね
一般的な場合は、そうかと思いますけど、思考ルーチンの場合はどうなんでしょうか?
812デフォルトの名無しさん:2007/01/18(木) 20:40:57
スクロールを少なくしたいなら複数のファイルに分割すればいいんじゃない?
813デフォルトの名無しさん:2007/01/18(木) 20:44:32
まずはまともに動くものを作ることが重要だろ。
高速化は後からできるしみんなが言ってるように書いておけばし易い。
8141:2007/01/18(木) 20:45:03
>>812
そういう高等テクはやりかたわかりません

コンパイラによるんだとは思いますけど、関数呼び出して、元に復帰するには
かなり時間がかかりますよね 主要ルーチン(繰り返す部分)は細かく別けない方がいいのでは?
815デフォルトの名無しさん:2007/01/18(木) 20:48:29
お前はまずちゃんと動くものを作れ。
遅くてもいいからアルゴリズムがわかればいい。
高速化に関してお前よりデキル奴はいっぱい居るんだから
816デフォルトの名無しさん:2007/01/18(木) 21:18:56
>>811,814
普通は、変数生成や関数呼び出しの負荷は主処理の1割にも達しないよ。
それに呼出し負荷がどうしても気になるなら inline 宣言すれば負荷ゼロにできるし、
大きな変数はポインタか参照渡しすれば負荷は殆どない。

チューニングなんかを考えるよりもアルゴリズムに力を注いだ方がいいよ。
例えば 30 手読みの場合、読む必要のある手をたった 5% 減らすことができるだけで、
約5倍も高速になる。

それにチューニングは完成してからでもできるからね。
817デフォルトの名無しさん:2007/01/18(木) 21:38:23
とりあえず >795 の座標表現書き換え+C化版おいときますね
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3448.c
818デフォルトの名無しさん:2007/01/18(木) 21:49:25
>>795
まだバグがあるよ。
俺が黒、コンピュータが白で対戦始めたけど
途中で詰んでやすり打ちしてたらコンピュータが黒を打ち始めたぞ
819デフォルトの名無しさん:2007/01/18(木) 21:59:53
まず人間対人間でルール通りに動くのができてからコンピュータを追加しろよ
820デフォルトの名無しさん:2007/01/18(木) 22:17:17
むしろ人間もCPUも同じインターフェースでさせるようにしとけ
そしたらすぐにCPU対戦が試せる
821デフォルトの名無しさん:2007/01/18(木) 22:22:58
>>820
main() の、人間から入力を受ける「printf("おけるマスは」〜「ad[t]=x;」の3行消せば
CPU対戦になると思う。
822デフォルトの名無しさん:2007/01/18(木) 23:27:26
>>1ってオセロも作れんのか・・
823デフォルトの名無しさん:2007/01/19(金) 00:57:40
オセロかあ
そういや小学生の時VBで作ったっけ
自分ではどうやっても勝てないぐらいには強かったが、上手い子にはボロ負けだったなあ
824デフォルトの名無しさん:2007/01/19(金) 04:28:37
オセロ男 ドラマ化!!
825デフォルトの名無しさん:2007/01/19(金) 11:59:36
>>814
>816の補足だが、今のコンパイラはおまえが考えるよりもよっぽど巧く最適化してくれる。
例えばgccやiccでは(最近のVCもそうかもしれんが)、内部リンケージの関数は勝手にインライン展開する能力がある。
つまり、関数を分けて書いても呼び出しコストは全く掛からない可能性さえあるわけだ。
826デフォルトの名無しさん:2007/01/19(金) 12:23:37
全米がひっくり返った!
827デフォルトの名無しさん:2007/01/19(金) 12:35:30
雑談はみんな知ってる内容だからどうでもいいから
早くプログラム作ってうpしてくれよな
828816:2007/01/19(金) 17:55:28
>>825
補足tnx
8291:2007/01/19(金) 19:25:06
わりと深く読めるようになりましたよ
バグがあるんですけどどなたかわかりませんか?
http://up2moe.moe.hm/img/q446.zip
8301:2007/01/19(金) 19:28:34
Microsoft Visual C++ 2005に対応しました
ターボC++にも対応していきます

バグは有りすぎるんですけど、あとちょいでうまく行きそうな予感がします
8311:2007/01/19(金) 19:32:47
832デフォルトの名無しさん:2007/01/19(金) 19:36:43
>>830
コンパイルエラー

test.cpp:1:20: stdafx.h: No such file or directory
test.cpp:236: error: `main' は `int' を返さなければなりません
8331:2007/01/19(金) 19:43:07
834デフォルトの名無しさん:2007/01/19(金) 19:44:46
>>833
難読化解除しないと誰も相手にしてくれないぞ?
835デフォルトの名無しさん:2007/01/19(金) 19:50:14
#define fore(i,N) for(i=0;i<N;i++)

まずこの時点で読む気なくなる
836デフォルトの名無しさん:2007/01/19(金) 19:51:38
foreのマクロはやめないか?
プリプロセッサ通して整形すればいいから。
あと変数ももっと他人が読んで用途を予測しやすい名前を付けないか?
837デフォルトの名無しさん:2007/01/19(金) 19:54:59
>>833
不正終了するので、239行目の
fore(i,100)rd[i]=(rand()+(rand()<<16))%16777216+1;

fore(i,100)rd[i]=((rand()+(rand()<<16)) & 0xffffff)+1;
に。

これを修正してもまだこんな感じで不正終了する。
Program received signal SIGSEGV, Segmentation fault.
0x00405d0d in _Z3msuRc (l=@0x22cbe3) at reversi.c:43
43 return ms[sum][F];}
(gdb) print sum
$1 = 18372
(gdb) print F
$2 = 0 '\0'
(gdb)

でも変数名が意味不明なのでわけわかめ。
とりあえず変数名は読んで内容の分かるものにしてくれ。
例えば hash.a ではなく hash.tokuten_a とか。
8381:2007/01/19(金) 20:02:22
>>837
randの範囲を教えてください
ifで分岐するので

0からRAND_MAXの値を動くはず
839デフォルトの名無しさん:2007/01/19(金) 20:03:46
8401:2007/01/19(金) 20:04:02
マイナスの値もとるんでしょうか?詳しく教えてください
841デフォルトの名無しさん:2007/01/19(金) 20:04:55
8421:2007/01/19(金) 20:05:02
>>839
単に逆転させるだけでは駄目なんです
適切な範囲に値を収めないと
8431:2007/01/19(金) 20:06:02
>>841
機種依存しているRAND_MAX の値を教えてください
844デフォルトの名無しさん:2007/01/19(金) 20:06:16
>>838
この修正を使えば、randの範囲に関係なくいつでも正しく動作しますのでおすすめ。

>>840
rand() 自体は負にはなりませんが、<< でずらすと負になりえる。
845デフォルトの名無しさん:2007/01/19(金) 20:06:43
じゃあまず機種を言えカス
846デフォルトの名無しさん:2007/01/19(金) 20:07:17
表示してみればわかるだろ・・・
847デフォルトの名無しさん:2007/01/19(金) 20:08:27
>stdlib.h の中でマクロ定義されています
って書いてるんだしstdlib.hを見ればいいだろカス
8481:2007/01/19(金) 20:10:53
837さんのRAND_MAX値をここに書いてくれればいいんだよ....
849デフォルトの名無しさん:2007/01/19(金) 20:12:17
何のためにRAND_MAXっていうマクロがあると思ってるんだ?
具体的な数字をソースに書いたらこのマクロの意味無いだろ
850837:2007/01/19(金) 20:16:34
>846-847
>1 が聞きたいのは自分の環境の RAND_MAX ではなく >837 の環境の値では?

>>848
RAND_MAX の値がいくらであっても、左シフトしたら符号ビットがおかしくなる
可能性は常にある。何で >837 の修正ではだめなの?
8511:2007/01/19(金) 20:19:49
まずはRAND_MAX値を出してほすぃ
852デフォルトの名無しさん:2007/01/19(金) 20:22:34
#define RAND_MAX 0x7FFFU
853デフォルトの名無しさん:2007/01/19(金) 20:24:10
VisualC++2005のstdlib.h
#define RAND_MAX 0x7fff
8541:2007/01/19(金) 20:25:29
誰でも0〜32767なの?それならエラーにならないと思うんだけど
855デフォルトの名無しさん:2007/01/19(金) 20:25:29
>>852はBorlandC++のstdlib.h
856デフォルトの名無しさん:2007/01/19(金) 20:26:42
GCCのstdlib.h
#defineRAND_MAX0x7FFF
8571:2007/01/19(金) 20:27:44
0〜 32767<<16 + 32767
右辺は符合ビットに接触しないし剰余を求める時点で負にならないし
858デフォルトの名無しさん:2007/01/19(金) 20:28:42
859デフォルトの名無しさん:2007/01/19(金) 20:29:22
>>837ではないけど
/* The largest number rand will return (same as INT_MAX). */
#define RAND_MAX 2147483647
860デフォルトの名無しさん:2007/01/19(金) 20:30:59
>>854
FreeBSD(gcc)のstdlib.h
#define RAND_MAX 0x7fffffff
8611:2007/01/19(金) 20:32:48
859の場合は、

fore(i,64){rh[i][0]=rand()+(rand()<<16);rh[i][1]=rand()+(rand()<<16);}
fore(i,100)rd[i]=(rand()+(rand()<<16))%16777216+1;


fore(i,64){rh[i][0]=rand(); rh[i][1]=rand();}
fore(i,100)rd[i]=rand()%16777216+1;

に変更してください
8621:2007/01/19(金) 20:33:28
訂正

859の場合は、

fore(i,64){rh[i][0]=rand()+(rand()<<16);rh[i][1]=rand()+(rand()<<16);}
fore(i,100)rd[i]=(rand()+(rand()<<16))%16777216+1;



fore(i,64){rh[i][0]=rand(); rh[i][1]=rand();}
fore(i,100)rd[i]=rand()%16777216+1;

に変更してください
863デフォルトの名無しさん:2007/01/19(金) 20:34:29
RAND_MAX = 0x7ffff の場合は?
8641:2007/01/19(金) 20:38:19
機種異存なしバージョン

fore(i,64){
rh[i][0]=(rand()%65536)+((rand()%65536)<<16);
rh[i][1]=(rand()%65536)+((rand()%65536)<<16);}

fore(i,100)rd[i]=((rand()%65536)+((rand()%65536)<<16))%16777216+1;
865デフォルトの名無しさん:2007/01/19(金) 20:40:42
%65535は&0xFFFFと同じ
866837:2007/01/19(金) 20:45:19
ばんばんレスが進むのでタイミングを逃した間もあるが、まとめて。

>>851
モードによって値が違ってて、
cygwin モードでは 2147483647、mingw モードでは 32767 だった。

>>857
こっちの環境の剰余は負になる。
数学やった人は剰余 = mod と考えるから結構それで引っかかったり。

>>864
今確かめたけど負になって不正終了するね
Program received signal SIGSEGV, Segmentation fault.
0x004083c7 in _Z6adressv () at reversi.c:76
76 if((hash[x].t)==0){hash[x].h=y;hash[x].t=1+((masu[t][0]+masu[t][1]-3)<<2
);break;}
(gdb) print/x x
$1 = 0xfeb451af
(gdb)
8671:2007/01/19(金) 20:48:30
あれ、unsignedになってても負になるんですかね?
今、32bitめい一杯、詰め込んでみたら不正終了しました
unsignedでも、上位ビットは、0じゃないと駄目なのかな?
8681:2007/01/19(金) 20:49:49
万能バージョン

fore(i,64){
rh[i][0]=(rand()%256)+((rand()%256)<<8)+((rand()%256)<<16)+((rand()%128)<<24);
rh[i][1]=(rand()%256)+((rand()%256)<<8)+((rand()%256)<<16)+((rand()%128)<<24);}
fore(i,100)rd[i]=((rand()%256)+((rand()%256)<<8)+((rand()%256)<<16)+((rand()%128)<<24))%16777216+1;
8691:2007/01/19(金) 20:52:29
868は、
RAND_MAX=32767のときに16bit目が常に0になってしまうのを回避しました
870デフォルトの名無しさん:2007/01/19(金) 20:55:28
馬鹿馬鹿しい。
そもそもRANDごときでつまずくぐらいなら、使うな。
871837:2007/01/19(金) 20:55:32
>>867
そう。CPU によっても違うのだろうけど、x86系CPUでの符号付き数の割り算は、
符号を取ってから割って、結果に符号を付け直すから。

>>868
動いた。ただ割り算命令って他の計算命令の何十倍も遅いよ。
普通にビットマスク (& 0xffffff) すりゃいいのにとどうしても思ってしまう。
872837:2007/01/19(金) 20:59:28
>>867
失礼、答えになってなかった。符号無しになるタイミングの問題。

rand() の返り値は符号付きなので割り算は符号付きで行われる。
そして符号無し変数に代入される時になってやっと、符号無し数に変換される。
873デフォルトの名無しさん:2007/01/19(金) 21:01:03
読んでないから分からないけど、初期化ルーチンなら100倍遅くても問題ない気がする
それにその値ならコンパイラがビット演算に置き換えるし
8741:2007/01/19(金) 21:02:21
上2つは256で平気でした
256にしないとハッシュテーブルの領域が50%使われなくなってしまう

>>871
初期化するときに一度使っているだけですから速度は関係ないんです


fore(i,64){
rh[i][0]=(rand()%256)+((rand()%256)<<8)+((rand()%256)<<16)+((rand()%256)<<24);
rh[i][1]=(rand()%256)+((rand()%256)<<8)+((rand()%256)<<16)+((rand()%256)<<24);}
fore(i,100)rd[i]=((rand()%256)+((rand()%256)<<8)+((rand()%256)<<16)+((rand()%128)<<24))%16777216+1;
875デフォルトの名無しさん:2007/01/19(金) 21:06:07
foreはやめて普通にforで書けよ
876デフォルトの名無しさん:2007/01/19(金) 21:10:46
人の意見を聞かないのは何故?
877デフォルトの名無しさん:2007/01/19(金) 21:13:10
自分のスタイルを否定されたと思ってるからでは
878デフォルトの名無しさん:2007/01/19(金) 21:17:53
fore
8791:2007/01/19(金) 21:17:56
本質に関わりないと思うところは無視してますが。
880デフォルトの名無しさん:2007/01/19(金) 21:19:25
他人の力を借りようとしてるのに
人の可読性を下げる事はやめたほうがいいんじゃない?
みんな読みにくいって言ってるよ。
881デフォルトの名無しさん:2007/01/19(金) 21:19:26
でた!ダメ数学者の特徴!
882デフォルトの名無しさん:2007/01/19(金) 21:20:45
>>1のプログラムは「最強のオセロプログラム」とは本質的に関わりが無い
883デフォルトの名無しさん:2007/01/19(金) 21:22:01
>>1
何でこれだけ人がいるのにデバッグに数日かかってるかわかってるの?
>>758あたりを意識して書いてくれさえすれば一日でデバッグ終わるぞ、たぶん
884デフォルトの名無しさん:2007/01/19(金) 21:30:19
グローバル変数多すぎだし、グローバル変数でも一文字とかだし
変数の意味わからなすぎだし、インデントつけてないし、変なマクロ使ってるし、
わざとやってるとしか思えない。
885デフォルトの名無しさん:2007/01/19(金) 21:31:14
bt[i][j] って i の jビット目の有無かよ orz
こんな簡単な計算、表引きにしたって速くならない気がする。

こういう所こそマクロをつかえばいいのに。
#define bitcheck(i,j) (((i) >> (j)) & 1)
とかして
bt[wb[t][i][0]][j]

bitcheck(wb[t][i][0], j)
になるだけで大分読みやすさが変わるのになぁ。
886デフォルトの名無しさん:2007/01/19(金) 21:33:32
マクロは止めたほうがいいよ。
下手なマクロはNGの元
8871:2007/01/19(金) 21:45:25
わかりました
ソースを見やすく改良します
あと配列参照するより計算した方が速いかもしれないですね
もしかしたらハードディスクを読むにいくことになるかもしれないですし
888デフォルトの名無しさん:2007/01/19(金) 21:51:37
>計算した方が速い

日本語読めないのか?
889デフォルトの名無しさん:2007/01/19(金) 21:59:49
>>887
大してきれいなソースでもないけど、とりあえずスタイルの参考にでもして。

ごく単純な minimax法
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3468.cpp
890デフォルトの名無しさん:2007/01/19(金) 22:08:29
337 名前: トリッキーの1 投稿日: 2001/08/21(火) 23:55

面白い題材が上がっていたので復帰します(笑)
7行オセロ、人間対無能AIです。

#include <stdio.h>
int p,t,a,d,c,v,i,m[90]={0},s,r[]={-10,-9,-8,-1,1,8,9,10};void k(){if(m[p]==0)
for(i=0;i<8;i++){for(c=0,v=p+r[i];m[v]==3-t;v+=r[i])c++;if(c&&m[v]==t){a+=c;v=
p;if(d)do m[v]=t,v+=r[i];while(m[v]!=t);}}}char*h="・○●\n";int main(){for(i=
1,m[41]=m[49]=2;i<10;m[i++*9]=3)m[40]=m[50]=t=s=1;for(;;a=d=0){for(p=9;p<82;++
p)k(),printf("%.2s",&h[m[p]*2]);if(a)for(d=a=s=p=8;a==8;k())t-2?(scanf("%d %d"
,&p,&i),p+=i*9):++p;else if(s)s=0,printf("pass");else break;t=3-t;}return 0;}

もはやインデントを揃えた位では元のコードが読めなくなってしまっていますが、
もしコメント付き変数名まとものバージョンを欲しい方がいれば上げます。



891デフォルトの名無しさん:2007/01/19(金) 22:09:14
338 名前: トリッキーの1 投稿日: 2001/08/21(火) 23:58

人間の入力は、「X軸 Y軸」と半角で入力します。
置けない場所を指定した場合は再度入力してください。
X=55などの変な入力をチェックしていないので、即クラッシュします。
両者置けなくなったらプログラム終了です。自分で数えてください。
もっとも、このコンピュータは激弱ですので負けようがないとおもいますが(笑

892デフォルトの名無しさん:2007/01/19(金) 22:13:01
>>889
これどうやって遊ぶの?
こっちが1手目打ってから5分経っても
level=10
って表示されたままだけど
893デフォルトの名無しさん:2007/01/19(金) 22:17:53
>>892
初期値間違ってたスマソ
level は大体 5 前後に、target_time にはPCの思考時間(秒)を設定してください。
8941:2007/01/19(金) 22:22:09
>>889
参考にします!
ボーランドの5.5でも、ボーランドの2006でもコンパイル出来ない
マイクロソフトは出来たけど
マイクロソフト専用?
895デフォルトの名無しさん:2007/01/19(金) 22:25:18
>>894
汎用のつもりだったんだけど…
出たエラーコピペしてもらっていいですか?
8961:2007/01/19(金) 22:29:46
>>895 ボーランド2006です

[C++ エラー] (35): E2268 未定義の関数 'memset' を呼び出した
[C++ エラー] (115): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (119): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (125): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (128): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (131): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (135): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (137): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (181): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (187): E2268 未定義の関数 'perror' を呼び出した
[C++ エラー] (188): E2268 未定義の関数 'exit' を呼び出した
[C++ エラー] (191): E2268 未定義の関数 'sscanf' を呼び出した
[C++ 警告] (192): W8013 's' は、おそらく値が代入される前に使われている
[C++ エラー] (194): E2268 未定義の関数 'sscanf' を呼び出した
[C++ 警告] (195): W8013 'numpos' は、おそらく値が代入される前に使われている
[C++ エラー] (198): E2268 未定義の関数 'strchr' を呼び出した
[C++ 警告] (199): W8013 'p' は、おそらく値が代入される前に使われている
[C++ エラー] (203): E2268 未定義の関数 'strchr' を呼び出した
[C++ エラー] (212): E2268 未定義の関数 'printf' を呼び出した
[C++ 警告] (217): W8080 宣言された 'alphapos' は使われていない
[C++ エラー] (312): E2451 未定義のシンボル time_t
[C++ エラー] (312): E2379 ステートメントにセミコロン(;)がない
[C++ エラー] (313): E2379 ステートメントにセミコロン(;)がない
[C++ エラー] (323): E2268 未定義の関数 'exit' を呼び出した
[C++ エラー] (332): E2268 未定義の関数 'printf' を呼び出した
[C++ エラー] (334): E2451 未定義のシンボル st
[C++ エラー] (334): E2268 未定義の関数 'time' を呼び出した
[C++ エラー] (336): E2451 未定義のシンボル ed
[C++ エラー] (336): E2268 未定義の関数 'time' を呼び出した
[C++ エラー] (336): E2228 エラーあるいは警告が多すぎる
897デフォルトの名無しさん:2007/01/19(金) 22:32:15
初心者ですか>>1
898デフォルトの名無しさん:2007/01/19(金) 22:36:36
ボーランド2006のインストールがちゃんとできてないだけじゃん
899デフォルトの名無しさん:2007/01/19(金) 22:37:02
>>896
どうもです。たぶんコンパイラが新しい規格に対応してないのか(?)
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
このヘッダが認識できないのではないかと。
この推測が正しければ、それぞれ下のヘッダに置き換えれば直ると思います。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
900デフォルトの名無しさん:2007/01/19(金) 23:20:19
namespace std を using しろや。
対応してないって無茶いいやがって。
新しい規格っていつの規格のことだ? c++0x か?
VC++ 使っといて、規格準拠してるつもりかい。
ヘッダが認識できなかったらファイルが見つからんとエラーが出と推測できるだろうに。
まあ、using するよりいちいち std:: 付ける方が好みだが。
901デフォルトの名無しさん:2007/01/19(金) 23:23:08
規格完全準拠のコンパイラってあるんか?
902デフォルトの名無しさん:2007/01/19(金) 23:24:42
準拠度ならVC++は高いほうなんだが
903デフォルトの名無しさん:2007/01/19(金) 23:27:54
>>900
そうか!マニュアル引いてやっと気がついた。
ありがとう。
# ちなみに使ってるのはg++。
904デフォルトの名無しさん:2007/01/19(金) 23:35:16
g++ = gcc
905デフォルトの名無しさん:2007/01/19(金) 23:39:57
906デフォルトの名無しさん:2007/01/20(土) 01:04:00
このスレって>>1にプログラムを教えるスレなの?
907デフォルトの名無しさん:2007/01/20(土) 01:07:17
そうです
908デフォルトの名無しさん:2007/01/20(土) 01:17:50
アルゴリズムを明示せず下手なプログラムを適当に書いて
他人が親切に強いルーチンを実装してくれるのを待って
アイデアのオリジナリティは元のプログラムを書いた自分にある
>>1が主張する予定のスレです
909デフォルトの名無しさん:2007/01/20(土) 01:18:37
何その韓国人みたいな根性
910デフォルトの名無しさん:2007/01/20(土) 01:37:42
>>1は叩かれるのがわかってて(むしろ目的で)やってるからいいの。
911デフォルトの名無しさん:2007/01/20(土) 11:47:43
いつのまに・・・・・
9121:2007/01/20(土) 13:36:06
評価関数を変更することにしました
枚数×2 + 空白の数
では、指せる手の数が増えすぎて幾らアルゴリズムが良くても計算不可能なようです

指し手の可能数と、マスの位置による点数を使うことにします
9131:2007/01/20(土) 14:14:25
オセロを征服したら、ボナンザと銀製囲碁(北朝鮮製)を倒そうと思ったのに...
1/31日までにWzebra倒すのと将棋をあらかた完成させるのは大変になってきた
914デフォルトの名無しさん:2007/01/20(土) 14:27:10
すげぇ・・・
915デフォルトの名無しさん:2007/01/20(土) 17:39:01
本人とは思えないが.本物?
916デフォルトの名無しさん:2007/01/20(土) 18:58:29
無能の癖して大口叩いてるから本物
917デフォルトの名無しさん:2007/01/20(土) 18:58:58
>幾らアルゴリズムが良くても

それは悪いと言った方がいいんじゃないかな?
918デフォルトの名無しさん:2007/01/20(土) 19:03:59
その理論からいけば全検索が最善のアルゴリズムとかほざきそう。
919デフォルトの名無しさん:2007/01/20(土) 19:09:58
1のやろうとしていることがなんとなくわかったが、
これは理論の裏づけのないナンチャッテだとおもうよ。
920デフォルトの名無しさん:2007/01/20(土) 19:18:31
>枚数×2 + 空白の数
これは理論の裏づけが何も無いから弱いんだけど、
>指し手の可能数と、マスの位置による点数
これは大学の宿題レベルでよく使われる物で実装が簡単な経験則。
これでもWZebraよりははるかに弱いけど今までのよりはマシになる。
921デフォルトの名無しさん:2007/01/20(土) 19:20:10
7行オセロのほうが勉強になるよ…
922デフォルトの名無しさん:2007/01/20(土) 19:20:10
そりゃ滅茶苦茶なプログラム書いてりゃ
一日で終わるものも半年掛かるわな

都合の悪いものは全て無視

↓ここから>>1の日記スタート
923デフォルトの名無しさん:2007/01/20(土) 19:26:06
1が近くにいたら歩道橋に近寄らないように!
924デフォルトの名無しさん:2007/01/20(土) 19:45:28
>評価関数を変更することにしました
最強じゃなかったら評価関数を変更するんじゃなくて人間やめるんじゃなかったの?
925デフォルトの名無しさん:2007/01/20(土) 20:01:59
>>1が無能でFA

埋め
926デフォルトの名無しさん:2007/01/20(土) 21:19:28
全探索は計算が可能な問題に適用するのであれば最強だが、
オセロに於いては手の数が増えすぎて計算不可能だから悪いアルゴリズムで、
少ない計算量で全探索にできるだけ近い結果を出すのが良いアルゴリズム。
927デフォルトの名無しさん:2007/01/20(土) 21:40:11
たまには斜めも思い出してください。
928デフォルトの名無しさん:2007/01/20(土) 21:59:02
強いと思った理由

俺が作るから最強

でFA?
929デフォルトの名無しさん:2007/01/20(土) 22:40:01
> 評価関数を変更することにしました
> 枚数×2 + 空白の数
> では、指せる手の数が増えすぎて幾らアルゴリズムが良くても計算不可能なようです
> 指し手の可能数と、マスの位置による点数を使うことにします

評価関数がすでにダメで、指せる手の数がすでに多すぎていたのに、
アルゴリズムは良いものであるとおっしゃるのか?


>>1が言ってる考え出した最強のアルゴリズムって何を示しているの?
930デフォルトの名無しさん:2007/01/20(土) 22:44:36
言ってる事を纏めれば>>928でFAだと思うが。
論理はチャチだしお花畑思考すぎるしで呆れるばかりだ。
931デフォルトの名無しさん:2007/01/20(土) 22:56:40
オセロなんて将棋よりかなり規模が小さい思うが…
将棋は取った駒を盤面に打てるんだぜ?
どうやって枝刈するつもりだったんだ?

囲碁はもっと大変どこにでも打てるんだよ。
囲碁のは宇宙。

1には絶対最強のプログラムなんて作れない
932デフォルトの名無しさん:2007/01/20(土) 23:09:14
>>931
>>1は問題点を言われただけじゃ理解できないけど
実際に作ってみたら気づいたようだし
王道により近い手法を使うようにはなって行ってるから
ある程度強いのは作れるようになるかもしれないよ。
933デフォルトの名無しさん:2007/01/20(土) 23:25:53
>>932
でも王道に近づいて行くのって本末転倒だよなwwwww
934デフォルトの名無しさん:2007/01/20(土) 23:29:58
信じてるぜー
がんばれ
9351:2007/01/20(土) 23:50:28
非常に小さい数を扱いんだけど、扱えない...
例えば、3手づつ分岐したとして初めで1/3になり、次に1/9になり
と繰り返すと15手先で、1 / 14348907くらいになりダブルでも計算が0になったりする
どうしたらいいですか?
936デフォルトの名無しさん:2007/01/20(土) 23:51:39
固定少数点数で計算するとか。
937デフォルトの名無しさん:2007/01/21(日) 00:02:54
>>935
高々「1 / 14348907」くらいでdoubleが表現できないと申されるか。
ご自分の能力のなさを棚に上げるのも大概になされよ。
#どうせ、printf("%f", 1 / 14348907);とでもして0だとほざいているのだろうけれど。
938デフォルトの名無しさん:2007/01/21(日) 00:03:15
キャスト出来てないだけだろどうせ。
1.0f / 14348907.0fとか
static_cast<double>(1) / static_cast<double>(14348907)とか
939デフォルトの名無しさん:2007/01/21(日) 00:05:16
>>937
初心者はまずここで躓くから仕方ないんじゃね?
int同士の割り算がint返すとは思わんでしょ
940デフォルトの名無しさん:2007/01/21(日) 00:05:34
>>935
たったそのくらいで 0 になるなんておかしいと思って検証してみた。

bash% ./a
1/3^1: 0.3333333333333333148296162562473909929394720000000000000000
1/3^2: 0.1111111111111111049432054187491303309798240000000000000000
1/3^3: 0.0370370370370370349810684729163767769932750000000000000000
     (略)
1/3^14: 0.0000002090751581287690209449910442793263420000000000000000
1/3^15: 0.0000000696917193762563359033670811436278480000000000000000
1/3^16: 0.0000000232305731254187797373631771185795160000000000000000
     (略)
1/3^49: 0.0000000000000000000000041788667072956152410000000000000000
1/3^50: 0.0000000000000000000000013929555690985384140000000000000000
平気っぽいが。
941デフォルトの名無しさん:2007/01/21(日) 00:09:29
やっぱりゴミだなw
942デフォルトの名無しさん:2007/01/21(日) 00:10:20
>>935
そういう用途なら、有理数型がいいよ。
9431:2007/01/21(日) 00:10:47
すみません
printfの表示桁が駄目だったようです
944デフォルトの名無しさん:2007/01/21(日) 00:13:07
計算の種類によっては、有理数型のほうがdouble型よりも速いかもしれない。
945デフォルトの名無しさん:2007/01/21(日) 00:14:09
確率で重み付けするのか。
オカルトですか?
946デフォルトの名無しさん:2007/01/21(日) 00:19:21
くだスレ化してきたな。
947デフォルトの名無しさん:2007/01/21(日) 00:27:39
やっぱ1が痛いだけじゃみんなも飽きてくるさ
948デフォルトの名無しさん:2007/01/21(日) 00:42:22
>>1
C/C++の宿題スレより、「オセロプログラムの作り方」

560 デフォルトの名無しさん sage 2007/01/20(土) 23:57:28
>>557
http://hp.vector.co.jp/authors/VA015468/platina/algo/
949デフォルトの名無しさん:2007/01/21(日) 00:45:25
それ前に貼られてなかった?
それかオセロのスレ貼ってあったところから行けるとこじゃね?
950デフォルトの名無しさん:2007/01/21(日) 00:50:15
>>25
いまさら人の意見聞く奴じゃない。
無駄だろ。
951デフォルトの名無しさん:2007/01/21(日) 01:10:34
%fじゃなくて%gで表示しろよ。
952デフォルトの名無しさん:2007/01/21(日) 01:50:21
最強のオセロマーダー?
953デフォルトの名無しさん:2007/01/21(日) 02:31:05
>>1の言葉の端々に"責任転嫁"が感じられるなぁ。
自分の能力が低い事をどうしても認めたくないんだろうね。
954デフォルトの名無しさん:2007/01/21(日) 04:47:04
>>1が初心者なら、誰かごくごく基本的な最低限オセロが出来るプログラムをここに貼って、
それを改良させたほうがいいとおもうんだがどうだろう。
あとはミニ四駆のようにどんどん自分で調べ強くしていけば>>1の才能しだいで最強にプログラムが出来るんじゃないだろうか
955デフォルトの名無しさん:2007/01/21(日) 04:53:23
>>954
本人乙
956デフォルトの名無しさん:2007/01/21(日) 04:53:35
>>954
基本的?最低限?じゃあ>>890
957デフォルトの名無しさん:2007/01/21(日) 05:28:13
>>890は最低限過ぎるだろwww
958デフォルトの名無しさん:2007/01/21(日) 05:29:10
もはや改良の余地がないな
9591:2007/01/21(日) 07:48:07
今日中に最強を突破して、次にボナンザを倒す!24時まで待ってて下さいね
960デフォルトの名無しさん:2007/01/21(日) 08:58:17
>>830
>バグは有りすぎるんですけど、あとちょいでうまく行きそうな予感がします

>>879
>本質に関わりないと思うところは無視してますが。

誘導。
プログラマーが1度は口にする言葉
http://pc10.2ch.net/test/read.cgi/prog/1149393575/

この会社辞めようと思ったソースコード#15
http://pc10.2ch.net/test/read.cgi/prog/1167117526/

【どこまでも】使えない新人 0x11
http://pc10.2ch.net/test/read.cgi/prog/1159175153/
961デフォルトの名無しさん:2007/01/21(日) 10:01:21
バグの多さ=無能さ
962デフォルトの名無しさん:2007/01/21(日) 10:02:12
2007 の4つの数字の並べ替えで出来る最大の数から最小の数を引く
-> 7200 - 0027 = 7173
同様に
-> 7731 - 1377 = 6354
-> 6543 - 3456 = 3087
-> 8730 - 0378 = 8352
-> 8532 - 2358 = 6174
-> 7641 - 1467 = 6174
963デフォルトの名無しさん:2007/01/21(日) 17:44:14
>>890って実際どうなの?まともなプログラム?
俺ちょっと他ごとにこれ使いたいんだけど、強く出来るかな?
964デフォルトの名無しさん:2007/01/21(日) 17:59:05
>>963
まともな方のソースあげるって書いてあるよ
965デフォルトの名無しさん:2007/01/21(日) 18:07:44
トリッキーの1ってやつがサイト持ってるからそこにあるんじゃね?
七行プログラミングの過去スレとかにはってあったはず
966デフォルトの名無しさん:2007/01/21(日) 20:30:38
ミニ四駆で一番効果があったのはモーターのエナメル線巻きなおしだったなぁ。
リバーシのプログラムで言うならCPUのクロックアップ?
967デフォルトの名無しさん:2007/01/21(日) 21:10:54

どうなの?
968デフォルトの名無しさん:2007/01/21(日) 21:13:44
>>1も身の程を知ったろう
世の中そんなに甘くはねーのじゃ
969デフォルトの名無しさん:2007/01/21(日) 21:23:00
Cの文法勉強して、参考書の例題プログラム以外で初めて作ってみた。
リバーシ簡単に見えて結構奥が深いんだな。
定石とかググったら大量に出てきてビビタ


で、それを踏まえると>>890が神に見える。。。
俺のソース300行オーバー orz
未だAIなんて一番左上から順に探索してるのに……
970デフォルトの名無しさん:2007/01/21(日) 21:57:04
七行オセロは神レベルだよ。
971デフォルトの名無しさん:2007/01/21(日) 22:10:40
>>969
乙。
定石は今では人間よりも上質なのをコンピュータが大量に自動生成させる事もできるしね。
名前が付いてる定石はコンピュータが弱かった時代から使われてたのが多い。
そのプログラムは公開しないの?
>>1のより強いかもしれない。
972デフォルトの名無しさん:2007/01/21(日) 22:18:03
行数削るために3項演算やifやforの使い方がトリッキーになってる。
表示も上手いことやってるな。
t-2って面白い。
973デフォルトの名無しさん:2007/01/21(日) 22:45:12
ここで7行オセロをほめてる奴等、約5年半前の作品とはいえ、本当にすごいと思うのなら
ちゃんと七行プログラミングスレにも感想を書き込んでやってくれ。
974デフォルトの名無しさん:2007/01/21(日) 22:45:53
>>890って起動後、何を入力すればいいの?
975デフォルトの名無しさん:2007/01/21(日) 22:48:18
976デフォルトの名無しさん:2007/01/21(日) 22:52:38
俺は7行スレで10行程度のオセロしか作れなくてたたかれまくったけどなwww
977デフォルトの名無しさん:2007/01/21(日) 22:56:25
>>975
サンクス。
動いた。^^
978デフォルトの名無しさん:2007/01/22(月) 00:06:22
そういや日付が変わってた。
>>1はまた嘘をついたなぁ。
979デフォルトの名無しさん:2007/01/22(月) 00:09:42
てか、決めた日付にプログラム完成されられるほど
プログラミングレベルねーじゃん
980デフォルトの名無しさん:2007/01/22(月) 00:18:56
>959は偽者だろ?
981デフォルトの名無しさん:2007/01/22(月) 00:23:22
なんでそう思うの?
俺は本物っぽい気がするけど
982デフォルトの名無しさん:2007/01/22(月) 00:51:10
1 は数字はきっちり半角で書く人だったのに、急に全角数字になってる
あたりとか怪しい。
983デフォルトの名無しさん:2007/01/22(月) 01:02:23
なるほど。鋭いね。
言われてみれば偽者っぽい気がしてきた
984デフォルトの名無しさん:2007/01/22(月) 01:40:33
ていうか
>>1なんてそもそも最初から存在しなかったんだよ
985デフォルトの名無しさん:2007/01/22(月) 02:37:35
>>969
300行でもよほど間抜けな内容じゃないかぎりちょっといじればすぐに30行以内に縮めれるよ。
まだのこってるんならそのプログラムうpしてみ
986デフォルトの名無しさん:2007/01/22(月) 05:45:25
まじめに作ろうと思ってる奴誰かおらん?
居たら酉付けて立候補してくれ。
俺はプログラミングできないけどオセロはハンゲで永世名人。
987デフォルトの名無しさん:2007/01/22(月) 05:46:59
>ハンゲで永世名人

いつもお世話になっていますw
988デフォルトの名無しさん:2007/01/22(月) 05:48:30
>>986
かぶってたらアレだけど
こっちの方がまともなのあがってきてる
http://pc10.2ch.net/test/read.cgi/tech/1164168601/
989デフォルトの名無しさん:2007/01/22(月) 05:53:11
990デフォルトの名無しさん:2007/01/22(月) 05:54:21
991986:2007/01/22(月) 05:58:16
おー
でもiアプリか。
俺の携帯auなんだよな...
992デフォルトの名無しさん:2007/01/22(月) 06:02:46
993デフォルトの名無しさん:2007/01/22(月) 06:04:02
ところで次スレたてないの?
994986:2007/01/22(月) 06:06:47
>>992
vsOthaは使ってみた事がある。ありがとう。
でもNTestとかWZebraより強いのが欲しい...
995デフォルトの名無しさん:2007/01/22(月) 06:10:37
runoth
booby
とかはそんな強くないですか?
996デフォルトの名無しさん:2007/01/22(月) 06:13:56
997デフォルトの名無しさん:2007/01/22(月) 06:15:26
runothとboobyとvsOthaの強さの順番はよくわからないけど、
NTestやWZebraに比べたら弱いのは確か...
NTestはWZebraより強いと言う人も居るけど大差ないと思う。
998デフォルトの名無しさん:2007/01/22(月) 06:18:50
>>996
999デフォルトの名無しさん:2007/01/22(月) 06:20:35
梅が咲いてる
1000デフォルトの名無しさん:2007/01/22(月) 06:22:54
1000get!!!!!!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。