おまいら最強のリバーシプログラムしてみろよ part2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/01/22(月) 06:13:18そして世界最強っぽいリバーシプログラム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
0002デフォルトの名無しさん
2007/01/22(月) 06:19:51乙get
0003デフォルトの名無しさん
2007/01/22(月) 06:24:17おまいら最強のリバーシプログラムしてみろよ
http://pc10.2ch.net/test/read.cgi/tech/1166749119/
0004デフォルトの名無しさん
2007/01/22(月) 06:25:15´ ̄`ヽ.| r/:::::::::::::| // / / /-‐/、 }
<.´\ | /ノ 〉::::::|// __ / / /_..-‐/、ヽ!
::::::::\ Y「/:::::∠/ l⌒'⌒ヽ. i / ,' __/ ∨
:::::::::::: / /.::://| ヽ ||/ /⌒,> |''" /'ヽ/
:::::::::::/ //(二二二.._'''ー-----つ_ノ_|.// ノ ___|ノ// この映像をよーく見てほしい
:::::::::///:::::::::::::|  ̄/`フ ̄/''r―┴<二二ニヽ¬'∨ お気づきだろうか?
::::::./!/;:ヘ:::::::::::::| // /⌒!ヽ ..丶_.....\ / |ヽ
:::::/ / 〈,/::::::::::::| ヽ`ヽ、⊃く-┘/´ 厂 〈 | | / ̄`ヽ-、,r'
/∠/:::::::::::::::::::| _____>∠/ / l⌒l / ヽjノ '⌒ ̄ ̄ ̄`!|
/⌒´::::::::::::::::::::::|/ ̄ ̄ ̄\_,r' 、/ヽ レ′ / ̄`ヾ} そう葉っぱそっくりに
::::::::::::::::::::::::::::::::/ ─ ─ \.|ヽ_/ /''"´ ̄ソノ 擬態したやる夫が
::::::::::::::::::::::::::/ (●) (●) \. . __,/ ' 隠れているのである。
:::::::::::::::::::::::::| (__人__) | . . ,. ‐..二ニ ---一'′
::::::::::::::::::::::::.\ ` ⌒´ / //
::::::::::::::::::::::. . |-‐/ / / / // そこで今夜はこのような
:::::::::::::::::::::::::. ∨ 〈 ヽ/ /| / ./ 驚くべき能力を持った生き物たちの
:::::::::::::::::::::::::::::. ` ̄|`ー'"´ / ,' | ,// ,. ‐''" ̄ ̄`ヽ 世界へ皆さんを招待しよう
0005デフォルトの名無しさん
2007/01/22(月) 06:25:16終了
0006デフォルトの名無しさん
2007/01/22(月) 06:26:12これ以上くそスレ増やすなヴォケが
0007デフォルトの名無しさん
2007/01/22(月) 06:39:44ttp://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm
ttp://hp.vector.co.jp/authors/VA015468/platina/algo/
ttp://uguisu.skr.jp/othello/index.html
ttp://fujitake.dip.jp/sealsoft/thell/algorithm.html
ttp://ray.sakura.ne.jp/search_problem/
ttp://vivi.dyndns.org/rrdo/rrdo.php
コンピュータオセロ界にブレイクスルーをもたらしたBuro氏の論文
ttp://www.cs.ualberta.ca/~mburo/publications.html
オセロの試合結果は何通りか?@Wiki-関連スレ
ttp://www9.atwiki.jp/othello/pages/1.html
海外製強豪プログラム(ダウンロード可・ソースコードあり)
ttp://www.cs.ualberta.ca/~mburo/log.html
ttp://radagast.se/othello/zebra.html
ttp://othellogateway.com/ntest/Ntest/index.htm
ttp://cassio.free.fr/
海外製強豪プログラム(ダウンロード可・ソースコード無し)
ttp://abulmo.club.fr/edax/
ttp://xoomer.virgilio.it/romanobenedetto/Saio.htm
ttp://www.herakles.tournavitis.de/
和製強豪プログラム(ダウンロード可・ソースコードあり)
ttp://www.kitsunemimi.org/vsotha/algorithm.html
ttp://fujitake.dip.jp/sealsoft/thell/
和製強豪プログラム(ダウンロード可・ソースコード無し)
ttp://www.amy.hi-ho.ne.jp/okuhara/
ttp://www2t.biglobe.ne.jp/~RUN/
0008デフォルトの名無しさん
2007/01/22(月) 06:44:37オセロに関して自分が分かる範囲ならできるだけサポートするよ。
おまいら期待してるぜ...
0009デフォルトの名無しさん
2007/01/22(月) 07:30:180010デフォルトの名無しさん
2007/01/22(月) 09:18:360011デフォルトの名無しさん
2007/01/22(月) 10:08:10誰か理解できる人居る?
0012デフォルトの名無しさん
2007/01/22(月) 10:08:15乙
0013デフォルトの名無しさん
2007/01/22(月) 10:23:15ロジステロは変数名がドイツ語・・?
0014デフォルトの名無しさん
2007/01/22(月) 11:37:410015デフォルトの名無しさん
2007/01/22(月) 11:43:58言語はできればC(C++無し)で・・
0016デフォルトの名無しさん
2007/01/22(月) 12:10:56一緒に何やるの?
0017デフォルトの名無しさん
2007/01/22(月) 12:16:460018デフォルトの名無しさん
2007/01/22(月) 12:21:38変じゃないか。
短いだろ。
0019デフォルトの名無しさん
2007/01/22(月) 12:24:26やってくれの間違いだろ
0020デフォルトの名無しさん
2007/01/22(月) 12:27:46その方法じゃ遅いとか、変数名がわるいとか。
for使うなとかw
0021デフォルトの名無しさん
2007/01/22(月) 12:37:030022デフォルトの名無しさん
2007/01/22(月) 15:49:35インターフェイスを決めていおいて、思考する関数は各人が書くと。
0023デフォルトの名無しさん
2007/01/22(月) 15:59:490024デフォルトの名無しさん
2007/01/22(月) 16:01:53ヘルパルーチンはそろってるし
00251
2007/01/22(月) 19:17:45昨日はすみませんでした
寝てしまい間に合いませんでした
今日中も無理かもしれないですがいい出来になってきました
大改造に踏み切りました
全部グローバル変数にして重複して使いまわす事にしました
なぜならば、いい変数はコンパイラがCPUレジスタにセットしてくれるからです
その都度、生成するとメモリ上に変数が乗る可能性が高いです
00261
2007/01/22(月) 19:20:140027デフォルトの名無しさん
2007/01/22(月) 19:26:1300281
2007/01/22(月) 19:34:38メモリ上の変数でも、レジスタ上の変数を使っても大して速度に違いは出ないんでしょうけど
でも、もしかしたら何度も使う部分が一回あたり0.001秒くらい縮んだとすれば10万回呼んだとして
100秒短縮出来ることになります
00291
2007/01/22(月) 19:39:315つ入っているんでけど
マイクロソフト2005の無料版と、ボーランド2006の無料版と
VC++ver.6pro.とインテル無料版とボーランド5.5の無料版が入ってます
いつもは、快適動作のボーランド5.5を使っています
0030デフォルトの名無しさん
2007/01/22(月) 19:46:24前から指摘されている通り、あんたの偏った頭で考えるよりもコンパイラの方が賢い。
最適化なぞ気にせずに先ずは動くものを作れ。
0031デフォルトの名無しさん
2007/01/22(月) 20:51:16前スレの1だろうが。
0032デフォルトの名無しさん
2007/01/22(月) 20:52:05また愚かなことを…
ローカル変数だろうがグローバル変数だろうが、コンパイラが利用計画を立てた上で
上手くレジスタにキャッシュするから、アクセス速度は違わないと思われ。
グローバル使い回しなんてやってもバグだらけになるだけで、百害あって一利なし。
>>28
1ループ1秒とすると、1日と3時間46分40秒が1日と3時間45分に短縮されるわけですね(w
0033デフォルトの名無しさん
2007/01/22(月) 21:20:06前スレの1は動くものができるまで書き込まないでくれ。
”動くものができるまで”、だ。
0034デフォルトの名無しさん
2007/01/22(月) 21:24:240035デフォルトの名無しさん
2007/01/22(月) 21:30:150036デフォルトの名無しさん
2007/01/22(月) 21:31:46アルゴリズムの解説してほしい。
それは公開しないの?
0037デフォルトの名無しさん
2007/01/22(月) 21:34:35単にちょっと強いと言うのならともかく、最強争いに加わろうと言うのなら、
才能、それもきわめて稀有で突出した才能を持つ『たった一人』が必要。
正直、人の力を結集してどうにかなる問題ではないと思う。
0038デフォルトの名無しさん
2007/01/22(月) 21:40:17才能より研究への情熱があれば蓄積された情報を活かして
かなりのところまでいけると思う。
現最強を最強たら占めているのは、才能とは思えんのだがどうなんだろう?
0039デフォルトの名無しさん
2007/01/22(月) 21:42:43蓄積された情報なんて今さら漁ってどうすんの
本当の最強を目指すなら既成概念なんて百害あって一利無しだろう
必要なのは天災のひらめきだけで十分だ
0040デフォルトの名無しさん
2007/01/22(月) 21:43:47>1 の事ですか?
0041デフォルトの名無しさん
2007/01/22(月) 21:49:01あなたはどんなところに「強さ」を感じますか?
私はじっくり長考した上で最善の手を打たれるよりも
さくっと秒殺で決定打を放ってくれる方が強さを感じます
0042デフォルトの名無しさん
2007/01/22(月) 21:51:25今更あさるも何も膨大な記録を活かすって流れもないから何ともいえないんじゃね?
真の最強が完成したら、完全先読み初手投了になるだろうがそこに達するのが目標だろ?
本当に”最強”を目指すなら 定石探索、最善手探索、完全先読み、終盤解析のうち
一つ目と四つ目は意味がなくなるから、確かに圧倒的なひらめきも必要だと俺も思うが。
FTP archive at NEC
いくつかの文献とともに、IOS でプレイされたすべての棋譜(約500,000)と
コンピュータプログラムのLogistelloとKittyの対戦の棋譜(約100,000)を含む
棋譜データベースがある。
これらの棋譜データベースは強い評価関数を作るのに役立つ。
0043デフォルトの名無しさん
2007/01/22(月) 21:52:52>完全先読み初手投了になるだろうが
引き分けになることが証明されているそうですが
0044デフォルトの名無しさん
2007/01/22(月) 21:54:13まじで?ソースある?
0045デフォルトの名無しさん
2007/01/22(月) 21:55:06証明されてませんよ。
引き分けの可能性が高いだけです。
0046デフォルトの名無しさん
2007/01/22(月) 22:11:27問題を解決しようとすれば"蓄積された情報"を思いついてしまうから
"蓄積された情報"を避けるためにそれを知る事は重要。
天才ってのは知らずに運よくそれを避けられる人の事じゃないんだろ?
0047デフォルトの名無しさん
2007/01/22(月) 22:22:48から飛べるような文献を適当に当たりながら流し読みしてみたが
オセロはやはり蓄積された情報を解析して手を打つのが全て。
強いプログラムを組むのには”発想”の余地があるかもしれないが、”強い”と”最強”は異なる。
複雑化した○×ゲームと考えると残るのは解析するための”効率”であり
前スレ1の時短縮はもっとも大事な因子である、やはり天才。
0049デフォルトの名無しさん
2007/01/22(月) 22:27:27だから馬鹿って言われるんだね
0050デフォルトの名無しさん
2007/01/22(月) 22:32:54前スレ1が居なくなれば俺作るよ
0051デフォルトの名無しさん
2007/01/22(月) 22:36:50∩___∩ ?
| ノ\ ヽ |
/ ●゛ ● | ? |
| ∪ ( _●_) ミ .J
彡、 |∪| |
/ ∩ノ ⊃ ヽ
( \ / _ノ | |
.\ “ /__| |
\ /___ /
0052デフォルトの名無しさん
2007/01/22(月) 22:37:54全部グローバル変数にしたら遅くなるよ。
ローカル変数は、スタックポインタからの相対位置で表せるので、
ポインタを介してアクセスするグローバル変数より速いのだ。
たとえレジスタにセットしてくれても、プログラム全域で保持すると
他の部分で遅くなってしまう。
0053デフォルトの名無しさん
2007/01/22(月) 22:41:29スタックポインタからの相対アクセスもポインタアクセスだと思うが。
と言うかそれ以前にどのCPUの話?
0054デフォルトの名無しさん
2007/01/22(月) 22:42:05すまん、ずーっと英語の文章を読んでいたので変な日本語になってしまった
結局は次の二つのことが言いたかった。
・最強=全ての事象を探索するしかない、
・強いプログラムと最強のプログラムはまったく違う。
0055デフォルトの名無しさん
2007/01/22(月) 22:51:261の開発環境はWindowsだと思うのでx86。
スタックポインタの場合、[esp-8]などと一発でアクセスできるが、
そうでない場合[eax]とアクセスする前にeaxにポインタを格納する手間が要る。
もしくは、eaxをポインタに占有されて使えるレジスタが減ってしまう。
0056デフォルトの名無しさん
2007/01/22(月) 22:52:43ローカル変数なら最初から最後までレジスタに置いておけるけど
グローバルだとそうはいかん(メモリに書き戻す)から必ず遅くなる
0057デフォルトの名無しさん
2007/01/22(月) 22:54:03その通りだが、俺が何か変なこと言ったか?
0058デフォルトの名無しさん
2007/01/22(月) 22:56:210059デフォルトの名無しさん
2007/01/22(月) 23:02:03http://pc10.2ch.net/test/read.cgi/tech/1084676298/l50
スレ違いだからこっちでやれ。
0060デフォルトの名無しさん
2007/01/22(月) 23:08:00例えば mov edx,[MemAddress] と言う形式の指定方法があるので、
わざわざアドレスをレジスタにロードする必要は無い。
00611
2007/01/22(月) 23:09:14書き換えたらバグだらけになったので、元のまあまあ動いたところからやり直すことにする
明日やることにする
0062デフォルトの名無しさん
2007/01/22(月) 23:11:3800641
2007/01/22(月) 23:15:30メモリの呼び出し速度が遅いってことなんだけど
より遅いのはハードディスクだけど
例えば、int型のデータ読むのに
メモリ100ms
ハードディスク1000ms
レジスタ5ms
とかかかるならレジスタを何度も繰り返し使った方がいいとおもうけど
00651
2007/01/22(月) 23:17:590066デフォルトの名無しさん
2007/01/22(月) 23:19:37スピードを気にするなら、アセンブラで組めよ
0067デフォルトの名無しさん
2007/01/22(月) 23:20:41おいおい、世界初のCPUだってメモリ1アクセスに100ms もかからんよ。
0068デフォルトの名無しさん
2007/01/22(月) 23:21:050069デフォルトの名無しさん
2007/01/22(月) 23:27:39レジスタを何度も繰り返し使った方がいいのは確かだ。
ただし、レジスタは少ないのでメモリアクセスは必ず必要になってしまうのだ。
なるべくメモリを使わないようにするという目的のために、
「全部グローバル変数にする」というアプローチは間違っていると言いたいわけ。
0070デフォルトの名無しさん
2007/01/22(月) 23:30:41最適化も自分でやりたいの?
そういうのはやってやる、もしくはコンパイラがやるって言ってるのに。
0071デフォルトの名無しさん
2007/01/22(月) 23:30:530072デフォルトの名無しさん
2007/01/22(月) 23:39:46オーソドックスに書かなければコンパイラの最適化を阻害する
0073デフォルトの名無しさん
2007/01/22(月) 23:40:08007456
2007/01/22(月) 23:40:45生温く見守っていようと思ってたんだが,我慢できなかった
今は反省してる
>>64
レジスタのアクセス速度は100ps(pは10^-12)のオーダー
メモリだと一次キャッシュにヒットすれば大差ないが
そうじゃないと大雑把に言って十倍〜百倍程度は遅くなる
ディスクなんて論外.使わないで済むようにコーディングしり
>>65
関数分けないと再帰呼び出しができないから
終盤の読み切りが書けなく(正確に言うとかなり書き/読み難く)なる
これは強いゲームプログラムを作るには必須っつーか常識レベルの
ハードウェアの知識だから>>1はもっと勉強汁
00751
2007/01/22(月) 23:47:02再帰で深くいくと鈍くなったり動作不安定になりそうな気がするので
0076デフォルトの名無しさん
2007/01/22(月) 23:53:230077デフォルトの名無しさん
2007/01/23(火) 00:01:33>鈍くなったり
探索数が深度の指数関数的に増加するんだから当たり前。浅いうちから
鈍るならアルゴリズムが良くないのでは。
>動作不安定
バグが原因。バグの原因となってるものは前スレで散々言われたはず。
今までの調子で書いてる限り改善しないだろうね。
007855
2007/01/23(火) 00:05:03そうか。こっちこそ早とちりスマソ。
1のプログラミングスタイルはかつての俺で(笑)、共感は少しするが、
もうちょっと謙虚にスレ住人から情報を吸収して勉強するとか、
最適化を語るなら、速度も実測するなりして研究してからにしてくれ。
0079デフォルトの名無しさん
2007/01/23(火) 00:15:32都合の悪い質問をスルー
0080デフォルトの名無しさん
2007/01/23(火) 00:19:09終盤の読みきりをどうコーディングするつもりなんだ?
深さは固定じゃないし,ループで書くと再帰よりぐちゃぐちゃした
コードになるぞ(自分でスタック管理しなくちゃならなくなるから)
再帰で書いて鈍く(これ意味が分からんが)なったり動作が不安定になる
なんてことは(バグがない限り)絶対無いから安心して再帰使え
再帰が今一つ理解できないんだったらもっと頭の汗をかけ
論理的な思考ができる人間なら必ず理解できるからガンガレ
0081デフォルトの名無しさん
2007/01/23(火) 00:26:20まずは正しく動くのを作るのが最初だろ。
動作確認しやすいように関数分けたり、処理を簡素化したプロトタイプ作れば更に良し。
0082デフォルトの名無しさん
2007/01/23(火) 00:36:38それはさんざん言ってきたんだが無視されるんだよ
0083デフォルトの名無しさん
2007/01/23(火) 00:54:18殴ってしまいそうだww
0084デフォルトの名無しさん
2007/01/23(火) 01:41:40それから全部捨ててデータ構造から速度が出る様に設計し直すのが
思考ゲームで強いソフト作る時の最短コース(急がば回れ)だ
0085デフォルトの名無しさん
2007/01/23(火) 01:57:57プログラムであーだこーだやって、早いだの遅いだのやるんじゃなくて、
(グローバル変数がなんだのレジスタが何だのそういう件はいらない)
プログラムについてはここのスレの意見を聞いて、
アルゴリズムをちゃんと完成させろよ。
今の>>1がプログラムについてなんか言っても、ここの人間には価値がない。
そもそもおまいはアルゴリズムが強いって言い出したんだから、そこを主張しろ。
0086デフォルトの名無しさん
2007/01/23(火) 02:07:56アルゴリズムを完成させるも何も>>1は1ビットたりともアルゴリズムを変更する気はないと言ってる
0087デフォルトの名無しさん
2007/01/23(火) 02:19:39評価関数を変更することにしました
枚数×2 + 空白の数
では、指せる手の数が増えすぎて幾らアルゴリズムが良くても計算不可能なようです
指し手の可能数と、マスの位置による点数を使うことにします
評価関数はアルゴリズムのうちに入らないのかな?
前スレ1は他人と違う言語をしゃべってるようだ。
0088デフォルトの名無しさん
2007/01/23(火) 02:25:180089デフォルトの名無しさん
2007/01/23(火) 02:47:58ああ、なるほど。そう考えるとしっくりくるね。
でも最適化技術をとことん使っても解けるような問題じゃないのにね。
00901
2007/01/23(火) 06:57:30スタック管理をパソコンにまかせて自動処理させると危険なんです
予め必要なメモリ領域を確保しておいてループで書くのが王道でしょ
0091デフォルトの名無しさん
2007/01/23(火) 07:02:22そんな事は、無い。
当然だが、スタック管理は人間よりPCにまかせたほうが、安全
なるだけ難しいとこは、PCにまかせて、シンプルで保守しやすい
コードを書くことこそが、真の王道
0092デフォルトの名無しさん
2007/01/23(火) 07:10:550093デフォルトの名無しさん
2007/01/23(火) 07:28:38>1の偏りきった脳味噌から。きっと>1はいつも斜めに傾いで座っているのだろう。
0094デフォルトの名無しさん
2007/01/23(火) 07:31:10再帰でも問題は無いよ
0095デフォルトの名無しさん
2007/01/23(火) 07:36:06お前のようなカスが書いたプログラムが危険なんです
無知は無知らしく識者の言うことを聞くのが王道でしょ
00961
2007/01/23(火) 08:04:44最大500手くらいあったらどうなんでしょうか?
再帰呼び出し
ある種の複雑な問題を解くコードをシンプルに記述できる場合があるが、
再帰による入れ子の数に応じて占有するメモリが増加する上、
実行速度も効率的とは言えず、非再帰的に記述できるならそうすべきである。
http://e-words.jp/w/E5868DE5B8B0E591BCE381B3E587BAE38197.html
0097デフォルトの名無しさん
2007/01/23(火) 08:09:35お前じゃない
00981
2007/01/23(火) 08:10:19関数呼び出しのオーバーヘッドがかかるんです だから鈍い
0099デフォルトの名無しさん
2007/01/23(火) 08:13:01>再帰は確実にインライン展開が出来ず、
ループもインライン展開できないとか書いてただろ、お前
だいたいループにするって言っても、どうやるの?
自分でスタック用意するのか?
01001
2007/01/23(火) 08:15:28手数と、読みの深さごとに必要な領域を確保しています
パスも含めて128手分とってあります
0101デフォルトの名無しさん
2007/01/23(火) 08:17:29だからどうした?
何が言いたい?
0102デフォルトの名無しさん
2007/01/23(火) 08:17:4101031
2007/01/23(火) 08:42:19でもとにかくループがいいんです
わかってください
0104デフォルトの名無しさん
2007/01/23(火) 08:50:58sageちゃ駄目なんだ
01051
2007/01/23(火) 09:27:14今日はしばらくパソコン触れないのでうpしてみる
まだ変数名とかプログラムはわかりにくいままですが
http://up2moe.moe.hm/img/q480.txt
0106デフォルトの名無しさん
2007/01/23(火) 09:34:040107デフォルトの名無しさん
2007/01/23(火) 09:34:15どうなればいいのかも言わずに何言ってんの。
01081
2007/01/23(火) 09:37:21今の時点では、強いかどうかではなく同じ探索を繰り返さないようにしたいんです
0109デフォルトの名無しさん
2007/01/23(火) 09:48:20そんなんでよく再帰がどうのとかいえるな
0110デフォルトの名無しさん
2007/01/23(火) 10:00:43それがたった一部の悪い所にもかかわらず、よい部分を知ることもなく
検討もしない。
すべて自分の思い込みで、自分がいいと感じた(たまたま最初にいいと思った)
方法しか使わない。
再帰が遅いとかいって使わないし、読みにくくなるだけなのにグローバル変数乱用したがるし。
プログラムの王道はわかってないようだな。
そもそもそんな馬鹿みたいにメモリ使うプログラムが速いとは思えないが。
スラッシングで遅くなるぞ
0111デフォルトの名無しさん
2007/01/23(火) 10:04:09直ったよー
0112デフォルトの名無しさん
2007/01/23(火) 10:20:59仕事はえぇぇええええw
俺もやってたが、foreの展開までしかいけんかったww
0113デフォルトの名無しさん
2007/01/23(火) 10:23:53remove()とcupu()は関数にするだけじゃだめだ。ビルドしてないだろおまい
0114デフォルトの名無しさん
2007/01/23(火) 10:30:200115デフォルトの名無しさん
2007/01/23(火) 10:30:2301161
2007/01/23(火) 10:35:340117デフォルトの名無しさん
2007/01/23(火) 10:36:09プリプロセッサ通してコードフォーマットかけた
>>113
はい、やってません。
0118デフォルトの名無しさん
2007/01/23(火) 10:43:21アンカー>>112だった。
>>113
コンパイル通した。
remove()とcupu()はとりあえずマクロに戻した。
http://up2moe.moe.hm/img/q483.txt
0119デフォルトの名無しさん
2007/01/23(火) 11:05:40「でも」「とにかく」
これダメプログラマの言い訳の典型だな
大昔のFORTRANじゃあるまいし,再帰の利点が理解できないんじゃ
アルゴリズムの良し悪しが云々できるレベルじゃない
きちんとしたプログラミングの教育を受けてないみたいだが
取り敢えずプログラミング作法とプログラミング書法辺りは読んどけ
後,雑誌の記事とか友人から得た知識は捨てろ
0120デフォルトの名無しさん
2007/01/23(火) 11:08:20いや・・>>103は偽者だから・・
でも言ってることは正しい
0121デフォルトの名無しさん
2007/01/23(火) 11:10:42プログラムの最適化に関しても勘違いがある
プログラムの実行時間の90%以上はコードの極一部に集中する
だからそこだけ頑張って他は読み易さ/改良のし易さを優先する
全体をインライン展開しようなんてのはアホのやること 1%も変わらん
兎に角,お前が考え出したアルゴリズムの正しさの確認が最優先だろ?
そのためにプログラムにして実際に動かすんだから
正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ
0122デフォルトの名無しさん
2007/01/23(火) 11:13:22まぁどっちでもいいや
0123デフォルトの名無しさん
2007/01/23(火) 11:14:22はやく何とかしないと
>>121
>正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ
俺もそう思う
0124デフォルトの名無しさん
2007/01/23(火) 11:18:12http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji
0125デフォルトの名無しさん
2007/01/23(火) 11:21:040126デフォルトの名無しさん
2007/01/23(火) 11:22:26俺もそれ見たことある
それに出てくる悪い例でも1のに比べたらはるかにいいと思う
0127デフォルトの名無しさん
2007/01/23(火) 11:24:180128デフォルトの名無しさん
2007/01/23(火) 11:25:55hashtable の初期化が面倒なだけじゃね?あれはC++と言ってもほとんどCだ。
0129デフォルトの名無しさん
2007/01/23(火) 11:26:57今は(未だ)そういうレベルじゃないよ。
処で、>1の使っている糞コンパイラは配列のインデックスにcharを使っても警告出さないの?
アセンブル出力見れば判るが凄く無駄なコードを出力する原因になっているんだけど。
0130デフォルトの名無しさん
2007/01/23(火) 11:30:53動くコードができたら、アルゴリズムを考え直しましょう
アルゴリズムを考え直したら、書き直しましょう
その連続です。
最適化はコンテストの直前にするものです。
0131デフォルトの名無しさん
2007/01/23(火) 11:44:27MTDって亜流がいっぱいあるんだけど、どれを参考にしたの?
0132デフォルトの名無しさん
2007/01/23(火) 11:48:39serch()、何このtypo。
mtd()、ddが未使用。
adress()、xhは未初期化でアクセスされることない?
0133デフォルトの名無しさん
2007/01/23(火) 11:49:07char i,bnn[64];
for(i=0;i<64;i++){
if(bt[wb[t][i/8][0]][i%8]==1)printf("●");
if(bt[wb[t][i/8][1]][i%8]==1)printf("○");
else printf(" ");
if(i%8==7)puts("");
//初期化しておく
bnn[i]=0;
if(bt[wb[t][i/8][2]][i%8]==1)bnn[wz[i]]=1;
}
puts("");
for(i=0;i<64;i++){
if(bnn[i]==0)printf(" ");
else printf("*");
if(i%8==7)puts("");
}
puts("");
}
グローバル変数が何の目的で使われてるのかわからんのが多すぎ。
0134デフォルトの名無しさん
2007/01/23(火) 12:02:06inline void serch(char w)
{
if (w == 97)
{
z = 97;
goto EE;
}
中略...
z = 97;
EE:
;
}
return; 使えよw
0135デフォルトの名無しさん
2007/01/23(火) 12:08:56mode[tsu[1]] = 0;
mode[tsu[1] + 1] = 1;
goto GG;
}
if (hash[x].a <= g) {
if (g <= hash[x].b) {
GG:
;
if (kar[tsu[1] + 1] < 1) {
if (kt == 0) {
hmove();
}
move();
goto BB;
}
}
}
すげぇ、ifブロックに飛び込んでる。
0136デフォルトの名無しさん
2007/01/23(火) 12:18:41gotoしている先が別のforループの中だと知って諦めた。
0137デフォルトの名無しさん
2007/01/23(火) 12:20:402重以上のループからでるとき以外go toは使うなと
指導すべきタイプの人やね。
0138デフォルトの名無しさん
2007/01/23(火) 12:24:33リアルだと絶対に関わりたくないタイプの人だよ。
01391
2007/01/23(火) 12:30:40待ってて下さい!
0140デフォルトの名無しさん
2007/01/23(火) 12:45:11bt[a][b]
意味: a の、下から b ビット目の値
代替記法: ((a >> b) & 1)
wb[t][y][c]
意味: ビット詰めされた盤面
c は色で 0:黒 1:白 2:何もおかれていない
y は盤面の縦座標(0〜7)
t は不明
zw[x+y*8]
意味: 座標で指定された手の優先度。ban の写し。
wz[n]
意味: nで指定された優先度の手の座標。zwの逆引き
we[n]
意味: 3のn乗
ch[n]
意味: 0:黒、1:白として、色の入れ替え。もしくは論理反転。
代替記法: (1-n)
F
意味: たぶん現在の手番???
zi[p]
意味: 縦座標(y)の値。
代替記法: (p/8)
zj[p]
意味: 横座標(x)の値。
代替記法: (p%8)
>1 は、最低限これらを全て分かりやすい名前に書き換えるべし。
0141デフォルトの名無しさん
2007/01/23(火) 12:49:23待て。
俺たちが手直しするまで何もするな。
手直しが終わってからそれを元に書け。
0142デフォルトの名無しさん
2007/01/23(火) 12:51:270143デフォルトの名無しさん
2007/01/23(火) 13:00:43これ、10010で割るのは整数でいいの?
0144デフォルトの名無しさん
2007/01/23(火) 13:04:13引退した爺さんプログラマーがネタで
ドキュソを演じてるんじゃないかなぁ
0145デフォルトの名無しさん
2007/01/23(火) 13:05:43余計なことすんな。
書き換えとかしなくていい。今のおまいのレベルじゃ読みやすくなる保証は皆無
どういうものを作りたいのか俺たちに教えてくれればいいんだぜ
0146デフォルトの名無しさん
2007/01/23(火) 13:26:050147デフォルトの名無しさん
2007/01/23(火) 13:43:09酷いのはグローバル変数とも名前がぶつかっていたり。
取り敢えず、レガシースタイルは諦めて「使う場所での宣言」にしないとどうしようもない。
最低限、グローバル変数は一文字名前禁止だな。
0148デフォルトの名無しさん
2007/01/23(火) 13:49:12lp、li、lj、ba の意味が分からないので解説頼む。
0149デフォルトの名無しさん
2007/01/23(火) 13:55:55//周囲のマスとのインデックス差
char lp[8] = {1, 9, 8, 7, -1, -9, -8, -7};
//周囲のマスとの縦座標の差
char li[8] = {0, 1, 1, 1, 0, -1, -1, -1};
//周囲のマスとの横座標の差
char lj[8] = {1, 1, 0, -1, -1, -1, 0, 1};
だと思う
ba ってあったっけ?banの事なら
//コマのおいてあるところは1
unsigned char ban[64]=
{
0, 48, 12, 4, 5, 13, 49, 1,
55, 56, 40, 32, 33, 41, 57, 50,
19, 47, 28, 20, 21, 29, 42, 14,
11, 39, 27, 64, 64, 22, 34, 6,
10, 38, 26, 64, 64, 23, 35, 7,
18, 46, 31, 25, 24, 30, 43, 15,
54, 59, 45, 37, 36, 44, 58, 51,
3, 53, 17, 9, 8, 16, 52, 2
};
この順番で着手を試すらしい。
0150デフォルトの名無しさん
2007/01/23(火) 13:57:48この関係式が成り立つっぽ
0151デフォルトの名無しさん
2007/01/23(火) 13:59:54よくわからん。
01521
2007/01/23(火) 14:02:20+が現在位置としてlが下の番号のときに
lp(l) は、z (=8*x+y)での移動位置
li(l)、lj(l)は (x,y)座標での移動位置
567
4+0
321
baはテンポラリでbf()()を生成するときに使用
bf(番号0)(z) zに対して通常の座標を返す
bf(番号1)(z) zに対して左右反転の座標を返す
bf(番号2)(z) zに対して左に90度回転した座標を返すなど
0153デフォルトの名無しさん
2007/01/23(火) 14:03:41�dクス
0154デフォルトの名無しさん
2007/01/23(火) 14:10:56MTDの解説サイト教えて。
お前が見たところ。
01551
2007/01/23(火) 14:14:24Research Re: search & Re-search
http://www.cs.vu.nl/~aske/Papers/abstr-ks.html
01561
2007/01/23(火) 14:16:03MTD(f), a minimax algorithm faster than alpha-beta
alpha-beta法の改良の1つであるMTD(f)についてのページ。
MTD(f)の他、置換表付alpha-betaの実装についても書かれています。
また、彼のPh.D ThesisであるResearch Re: search & Re-searchは
様々なゲーム木探索の手法について詳しく述べたもので、一読の価値があります。
http://fujitake.dip.jp/sealsoft/thell/bibliography.html
0157デフォルトの名無しさん
2007/01/23(火) 14:24:54前にざっと読んだ事ある。
01581
2007/01/23(火) 14:30:13>>135の部分ですが、
a <= 予測値 <= bならば確率が残っている範囲で指し進めるモードと、
確率が残っていたら指し進めてあとでa <= 予測値 <= bのチェックを行う
2つのモードがあります 深さでは探索を終わりにはしません
01591
2007/01/23(火) 14:34:250160デフォルトの名無しさん
2007/01/23(火) 14:38:46rは何の意味?
01611
2007/01/23(火) 14:40:25r = 局面の予測された実現確率
f = 局面の予測された評価値
01621
2007/01/23(火) 14:43:360163デフォルトの名無しさん
2007/01/23(火) 14:48:52なるほど。
やりたいことは大体わかった。
0164デフォルトの名無しさん
2007/01/23(火) 15:53:500165デフォルトの名無しさん
2007/01/23(火) 15:54:220166デフォルトの名無しさん
2007/01/23(火) 16:17:211にそういうことを言っても無駄だと思う。
なぜそうした方がいいのかを何とかして理解させる必要がある。
自分が間違っていると思わない限り、1はいつまでも我が道を行くだろう。
0167デフォルトの名無しさん
2007/01/23(火) 16:17:400168デフォルトの名無しさん
2007/01/23(火) 16:22:490169デフォルトの名無しさん
2007/01/23(火) 19:12:34スレ立てて騒ぐ奴に限ってろくなものを出さない
0170デフォルトの名無しさん
2007/01/23(火) 22:25:03煽りじゃないよ。
会社でも1人で突っ張ってんの?
これが正しいんですとか言ってたらだめだよ。
0171デフォルトの名無しさん
2007/01/23(火) 22:25:59わかりやすくするんなら、オブジェクト指向じゃなくて構わないので
関数の分割と、変数名の変更と、利用すべきところでの再帰の利用
をして欲しい。
0172デフォルトの名無しさん
2007/01/23(火) 22:28:140173デフォルトの名無しさん
2007/01/23(火) 22:33:41ヒント 小学生
0174デフォルトの名無しさん
2007/01/23(火) 22:36:12ヒント:覚えたての知識をひけらかしたい
0175初心者
2007/01/23(火) 22:42:27mode[tsu[1]] = 0;
mode[tsu[1] + 1] = 1;
funcA();
}
else if (hash[x].a <= g && g <= hash[x].b) {
funcA();
}
funcA()
{
if (kar[tsu[1] + 1] < 1 && kt == 0) hmove();}
move();
goto BB//糞;
}
0176デフォルトの名無しさん
2007/01/23(火) 23:29:380178デフォルトの名無しさん
2007/01/24(水) 00:04:10根拠の無い自信でつっぱねるだろうが
0179デフォルトの名無しさん
2007/01/24(水) 00:36:330180デフォルトの名無しさん
2007/01/24(水) 01:14:36実現確率が正確に求まるとは到底思えない。矛盾してないかい。
自分的には確率使うなら囲碁のモンテカルロ法とかのが
ずっと良さそうな気がする。
ttp://www.geocities.jp/hideki_katoh/ (加藤さんの翻訳)
0181デフォルトの名無しさん
2007/01/24(水) 01:59:10お願いだから将棋に帰ってください。
これ以上リバーシを冒涜しないでください。
http://pc10.2ch.net/test/read.cgi/tech/1109307327/
01821
2007/01/24(水) 02:35:27根本的にまともに動作してないのに、体裁だけ整えてあとは他人に任せるとかは駄目でしょ?
まともに動作したらより良くするために意見をどんどん取り入れますよ
>>175
if (hash[x].a <= g && g <= hash[x].b) は、ifを分割した方が速度が出るとおもいますよ
>>180
実現確率を正確に求めてないんです
評価値順に手を並び替えて一手目50%、二手目25%とか半分づつにしているんです
評価値の高いものを深く読むということに使っているんです
0183デフォルトの名無しさん
2007/01/24(水) 02:40:18実際出るかどうかだろ?
0184デフォルトの名無しさん
2007/01/24(水) 02:43:39>一手目50%、二手目25%
適当にこんな数字決めてないでMPC使えばいいじゃん
01851
2007/01/24(水) 02:44:27if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため
速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
01861
2007/01/24(水) 02:47:050187デフォルトの名無しさん
2007/01/24(水) 02:49:12http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0188デフォルトの名無しさん
2007/01/24(水) 02:50:07http://www.cs.ualberta.ca/~mburo/publications.html
0189デフォルトの名無しさん
2007/01/24(水) 02:53:010190デフォルトの名無しさん
2007/01/24(水) 02:53:35まず動かすための、プログラムを見易くするためのアドバイスが多いと思うんだけど、
まともに動かせるように助言してくれてるのに、あえて無視してるのか?まぁなんてことでしょう!
0191デフォルトの名無しさん
2007/01/24(水) 02:55:13>速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
そう思うのは勝手ですが、そんなゴミを垂れ流さないでください。
A && B と書いたとき、Aが偽だとBは評価されません。
つまり、 A && B はif (A) B と概ね等価になります。
>187のリンク先の下の方を参照してください。
0192デフォルトの名無しさん
2007/01/24(水) 02:59:1401931
2007/01/24(水) 03:00:51ありがとう読んでみます
ifはわからないのでrand()を使って実験してみる
0194デフォルトの名無しさん
2007/01/24(水) 03:01:21「>>1の考えるアルゴリズム積んだリバーシを動かすこと」
(WZebraを倒すとかは取り敢えず後回し)
「アルゴリズムは完成した」 (前スレ>>190での、>>1の発言)
「考えているアルゴリズムに変更の余地はない。その動作を正確に実現するコードを作るだけ」 (前スレ>>806での、>>1の発言)
現状として、
>>1はコーディングが出来ない (または、限りなく下手)
そして、このスレには>>1のアルゴリズムは知らないが、コーディングを出来る人が揃っている。
何故>>1が 「アルゴリズムの概念だけを公開して、コーディングは他人に任せよう」
と思いつかないのか、そしてそれを指摘されても無視し続けるのか、理解出来ない。 (←以前誰かが指摘してた気がする
「数学やってる」っていってるくせに、三段論法とか知らないのかな?
まあ論理学出来てる人にも見えないが……
0195デフォルトの名無しさん
2007/01/24(水) 03:41:36てきとーに測定してみた。
a=0, b=0: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks
a=0, b=1: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks
a=1, b=0: if(a && b): 2.0 clocks, if(a) if(b): 2.0 clocks
a=1, b=1: if(a && b): 4.0 clocks, if(a) if(b): 4.0 clocks
どっちも同じだね。
01961
2007/01/24(水) 03:59:40実験では同速度だったけど
分岐予測を当てやすくさせるためにはまとめた方がよさそう
0197デフォルトの名無しさん
2007/01/24(水) 04:10:28バグを含んだまま機能の追加変更すんな
0198デフォルトの名無しさん
2007/01/24(水) 04:13:03やれと言えばやらない
どうしようもないな
0199デフォルトの名無しさん
2007/01/24(水) 07:46:01mtd()がどうにもならなすぎるのでもう飽きた。
せめてループ制御変数を使い回すのを何とかしないとデバッグどころじゃないぞ、と。
0200デフォルトの名無しさん
2007/01/24(水) 07:50:09そろそろ飽きてきてるかな……
クマー
0201デフォルトの名無しさん
2007/01/24(水) 09:38:100202デフォルトの名無しさん
2007/01/24(水) 09:39:12○以外
0203デフォルトの名無しさん
2007/01/24(水) 09:49:42中略
}
if(i==126){
ここは実行されることがあるのか
}
0204デフォルトの名無しさん
2007/01/24(水) 09:51:57韓国人だなww
0205デフォルトの名無しさん
2007/01/24(水) 09:52:50wwwwwwwwwww
0206デフォルトの名無しさん
2007/01/24(水) 09:58:56そんなにスピードが気になるならC++なんぞ使うんじゃない
0207デフォルトの名無しさん
2007/01/24(水) 10:07:30これ動かなくね?
延々と
「実現確率=0.50000 count=1 手数=4 指し手=19 読み深さ=0 予想値=0 a=65 b=65」が繰り返されてる
0208207
2007/01/24(水) 10:10:330209デフォルトの名無しさん
2007/01/24(水) 10:18:050210デフォルトの名無しさん
2007/01/24(水) 10:21:11> うまく動かないのは、mtd()だけであとは正常動作をしていると思われます
mtd()だけって…>>1のソースの大半はmtd()関数だろ。
0211デフォルトの名無しさん
2007/01/24(水) 10:59:36ヘボさが見え隠れしてるw
0212デフォルトの名無しさん
2007/01/24(水) 11:11:30プログラムに知識のダメ出しをされてるんだよ。
0213デフォルトの名無しさん
2007/01/24(水) 11:25:46モンテカルロ法は囲碁には適用できるが、リバーシには適当とは言えないよ
0214デフォルトの名無しさん
2007/01/24(水) 11:46:54着手可能箇所数とか偶奇性とかその他独自のフィーチャーを加えて
教師あり学習をさせるのがいい。
探索はPVSとかMTD(f)あたりで置換表やMPCを併用する。
0215デフォルトの名無しさん
2007/01/24(水) 12:07:24>>1がどんなことやろうとしてるのかまったくわかんないし、そのせいでソースも読めないんだよな。
minmax法とかαβ法くらいなら理解できるんだけど、英語の論文とかまったく知識ないから理解できない。
ちょっとでもかじってればわかるんだろうけど。
0216デフォルトの名無しさん
2007/01/24(水) 12:14:52http://ray.sakura.ne.jp/search_problem/null_window.html
その先はそれほど大きな違いは無いよ
0217デフォルトの名無しさん
2007/01/24(水) 12:19:450218デフォルトの名無しさん
2007/01/24(水) 12:22:410219デフォルトの名無しさん
2007/01/24(水) 12:43:29�d
読んでみるよ
0220デフォルトの名無しさん
2007/01/24(水) 13:18:2467108914ってなんだろう
バイト数でいうなら67108914=64MB+50B
0221デフォルトの名無しさん
2007/01/24(水) 14:18:00indentって標準かな?
0222デフォルトの名無しさん
2007/01/24(水) 14:45:12ここにもバグがありそう
>>前スレ1
変数名・関数名が何の省略かを全て書いてよ
0223デフォルトの名無しさん
2007/01/24(水) 16:43:37140 デフォルトの名無しさん sage 2007/01/23(火) 12:45:11
とりあえず分かった範囲だけ書いてみる。
bt[a][b] 意味: a の、下から b ビット目の値 代替記法: ((a >> b) & 1)
wb[t][y][c] 意味: ビット詰めされた盤面
c は色で 0:黒 1:白 2:何もおかれていない
y は盤面の縦座標(0〜7)
t は不明
zw[x+y*8] 意味: 座標で指定された手の優先度。ban の写し。
wz[n] 意味: nで指定された優先度の手の座標。zwの逆引き
we[n] 意味: 3のn乗
ch[n] 意味: 0:黒、1:白として、色の入れ替え。もしくは論理反転。 代替記法: (1-n)
F 意味: たぶん現在の手番???
zi[p] 意味: 縦座標(y)の値。 代替記法: (p/8)
zj[p] 意味: 横座標(x)の値。 代替記法: (p%8)
>1 は、最低限これらを全て分かりやすい名前に書き換えるべし
152 1 2007/01/23(火) 14:02:20
>>lp、li、lj、ba
+が現在位置としてlが下の番号のときに
lp(l) は、z (=8*x+y)での移動位置
li(l)、lj(l)は (x,y)座標での移動位置
567
4+0
321
baはテンポラリでbf()()を生成するときに使用
bf(番号0)(z) zに対して通常の座標を返す
bf(番号1)(z) zに対して左右反転の座標を返す
bf(番号2)(z) zに対して左に90度回転した座標を返すなど
0224デフォルトの名無しさん
2007/01/24(水) 17:33:450225デフォルトの名無しさん
2007/01/24(水) 17:37:3402261
2007/01/24(水) 17:37:560227デフォルトの名無しさん
2007/01/24(水) 17:54:09おまいはホントに誰の話しも聞いてないんだな
02281
2007/01/24(水) 18:14:57なんでよ?224の話の通りだよ
0229デフォルトの名無しさん
2007/01/24(水) 18:16:4402301
2007/01/24(水) 18:18:57普通のCでも
オブジェクト指向が鈍いっていう事はない
関数の分割単位をわかりやすくする目的がある
0231デフォルトの名無しさん
2007/01/24(水) 18:23:480232デフォルトの名無しさん
2007/01/24(水) 18:29:49Cでオブジェクト指向的なコーディングができることぐらい、
ここにいる主要な人達のほとんどが知っていることだよ。
それでも、オブジェクト指向的に書くならC++の方が良いと言っているということは、
やはりCでは強引に書かないとできないという事なんだよ。
0233デフォルトの名無しさん
2007/01/24(水) 18:45:03>>1が作り直すのは絶対に止めた方が良い。
0234デフォルトの名無しさん
2007/01/24(水) 18:59:19オブジェクト指向とまでいかなくても構造化してくれるならそれで充分
0235デフォルトの名無しさん
2007/01/24(水) 19:26:030236デフォルトの名無しさん
2007/01/24(水) 19:36:000237デフォルトの名無しさん
2007/01/24(水) 19:44:260238デフォルトの名無しさん
2007/01/24(水) 19:59:09>>1の溢れんばかりの素質が皆を引きつけてるんだよ。
0240デフォルトの名無しさん
2007/01/24(水) 20:02:34吹いた
0241デフォルトの名無しさん
2007/01/24(水) 20:11:45そこらへんの本や入門サイトにはgotoなんて載ってないよね?
もしgotoの記述があっても、それによってもたらされる害についての説明だと思うのだけど
0243デフォルトの名無しさん
2007/01/24(水) 21:06:310244デフォルトの名無しさん
2007/01/24(水) 21:11:52自分の思考パターンをそのまま当てはめればいいわけでそんなに難しくないんじゃないか?
どんなアルゴリズムでも癖があるから万能ではなくてもただ1つに勝つだけなら単純だ
BearRevとやらはやってみたが弱すぎてアルゴリズム考えるのも馬鹿馬鹿しいんだが
Wzebraはなんかエラーでて動きませんw
0245デフォルトの名無しさん
2007/01/24(水) 21:20:020246デフォルトの名無しさん
2007/01/24(水) 21:20:30そんな人間は存在しない
0247デフォルトの名無しさん
2007/01/24(水) 21:24:27コンピュータに負けたゲームだった記憶がある。
0248デフォルトの名無しさん
2007/01/24(水) 21:25:370249デフォルトの名無しさん
2007/01/24(水) 21:25:58これだと弱い。
オセロではそれよりはるかにいい方法が発明されてるから
ルールを知っている程度の人でも世界チャンピオン以上のプログラムが作れる
0250デフォルトの名無しさん
2007/01/24(水) 21:35:54彼より前のチャンピオン達はプログラムとの対戦から逃げてると言われてて
彼が対戦した頃には既に大差だったらしい
0251デフォルトの名無しさん
2007/01/24(水) 21:46:300252デフォルトの名無しさん
2007/01/24(水) 21:57:35挑発はされてたかもしれんね
0253デフォルトの名無しさん
2007/01/24(水) 22:20:150255デフォルトの名無しさん
2007/01/25(木) 01:52:27プログラムもろくに書けない
なにこいつw
0256デフォルトの名無しさん
2007/01/25(木) 02:19:16ヒント:小学生
0257デフォルトの名無しさん
2007/01/25(木) 06:44:23シッタカが使うとこうなるんだなぁ
0258デフォルトの名無しさん
2007/01/25(木) 07:05:5102591
2007/01/25(木) 07:25:1624バイトのコピーのみ
0260デフォルトの名無しさん
2007/01/25(木) 07:48:551の使い方だとむしろ遅くなる原因では
0261デフォルトの名無しさん
2007/01/25(木) 08:41:420262デフォルトの名無しさん
2007/01/25(木) 11:28:19確かに,普通では考えられない知識の偏り
実経験の無さ,そして思い込みの強さなど
小中学生辺りと考えるのが妥当か
0263デフォルトの名無しさん
2007/01/25(木) 11:43:340264デフォルトの名無しさん
2007/01/25(木) 11:49:04期限が守れていないということから、自己管理もできていない。
プライドの高さからおそらく大人なのだろう。
それも、子供のような未熟な大人。
ニートか?
0265デフォルトの名無しさん
2007/01/25(木) 12:39:09開発者が凄まじいスキルを持ってるか言われたとおり素直に従ってスキルアップするかのどちらかだ
0266デフォルトの名無しさん
2007/01/25(木) 12:53:160267デフォルトの名無しさん
2007/01/25(木) 13:32:470268デフォルトの名無しさん
2007/01/25(木) 13:44:090269デフォルトの名無しさん
2007/01/25(木) 16:56:230270デフォルトの名無しさん
2007/01/25(木) 17:36:390271デフォルトの名無しさん
2007/01/25(木) 19:56:36座標だけでも標準の棋譜に変換しとかないとな。
0272デフォルトの名無しさん
2007/01/25(木) 20:31:15白も黒も乱数でコマを置くようにしたら、白の方が常に数パーセント勝率がいい。
0273デフォルトの名無しさん
2007/01/25(木) 20:37:03そうらしいね
どこかでそんな話題を目にしたと思って探してみた
http://science5.2ch.net/test/read.cgi/sim/1090548999/383
http://science5.2ch.net/test/read.cgi/sim/1090548999/385
0274デフォルトの名無しさん
2007/01/25(木) 20:42:30多分、白のほうが辺、角を取れる確率が高いからだと思う。
(と、小学生の頃、思ってて、密かに必勝法の一種だと思ってたけど、
本当かどうか知らない)
0275デフォルトの名無しさん
2007/01/25(木) 20:51:25モンテカルロ法になるのかな?
その方法だと白が有利のような結果がよく出るんだけど、
ゲーム木のDBを構築すると引き分けの確率が高いっていう結果が出る。
この違いはなんなんだろう?
0276デフォルトの名無しさん
2007/01/25(木) 21:14:23勝ってる局面だったら、勝ちの手が黒より多くあるってことじゃない
逆に白が一旦間違えて負けの局面にした場合、黒はそのまま勝ちを維持できる手が白より少ないとかで
0277デフォルトの名無しさん
2007/01/25(木) 21:16:18人同士の対局でも白ほ方が勝率いいんだね。
モンテカルロ法っていうのが何なのか分かりません。^^;
どういうやり方がいいのか全然わからないんだけど、自分がしたのは、
1.コマが置ける場所(候補)を探す
2.その全候補に0(ゼロ)から順に整数を割り振る
3.候補数を最大値として乱数を発生させる(0〜候補数で乱数発生)
4.発生した乱数にコマを置く
0278デフォルトの名無しさん
2007/01/25(木) 21:34:46こういうのはモンテカルロとは言わないだろ^^;
0279デフォルトの名無しさん
2007/01/25(木) 21:40:38こっち黒先手
中盤で全部黒くなったんだがw
0280デフォルトの名無しさん
2007/01/25(木) 21:44:15この手の人は逆に囲い込ませてるつもりがどんどん追い詰められてることに気づかず
一気に埋められるというミスをしやすい
どうもこのアルゴリズムもこの手の人間の思考パターンのようだw
0281デフォルトの名無しさん
2007/01/25(木) 21:48:48オセロってのは定石が逆に不利になるような戦法もあるんだから
そういうアルゴリズム組めば大抵勝てると思うがね
0282デフォルトの名無しさん
2007/01/25(木) 22:30:19プログラムの間では独自のフィーチャーや定石システムの分で差がついてる。
パターンでも一部で独特のとり方を採用してるものはあるけどね。
この2種類のセットが最もよく使われてるかな。
http://fujitake.dip.jp/sealsoft/thell/algorithm.html
http://www.kitsunemimi.org/vsotha/algorithm.html
あー色々試したい・・・
0283デフォルトの名無しさん
2007/01/26(金) 00:50:34強いかどうかは別として面白そうだったので、試しにランダムに打っていって
勝率の期待値を計算し、期待値が高い手を選ぶプログラムを作ってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3520.cpp
ちなみに相当弱い。
0284デフォルトの名無しさん
2007/01/26(金) 00:55:42乙。動かしてみる。
0285デフォルトの名無しさん
2007/01/26(金) 02:07:40白番のほうが最後の石を置けることが多いから
って昔の本で読んだことがある。
ランダムな着手を仮定するとなおさらそんな気がする。
>>275
引き分けの確率は高いかもしれないが、今は白と黒だとどっちがどのぐらい
勝ち越すかの話では。
>>273
シミュレート板なんてあったのか。知らなかった。
0286デフォルトの名無しさん
2007/01/26(金) 02:40:52人間向けの戦略で言えば偶数理論、
評価関数のフィーチャーで言えばパリティで考慮されてる。
盤全体で空きの偶奇をフィーチャーにしてるもの(1bit)もあれば、
盤を四つのエリアに分けてそれぞれに含まれる空きの偶奇をフィーチャーにしてるもの(4bit)も有る。
0287デフォルトの名無しさん
2007/01/26(金) 09:38:38余計なモノを沢山積んでみたら、かなり読めなくなって来た……('A`)
俺もランダムに打って勝敗カウントしてみましたが、イマイチ自作AIなんで自信が無い
(先手黒) 209勝 274敗 17分
(先手黒) 225勝 249敗 26分
(先手黒) 236勝 244敗 20分
(先手黒) 215勝 260敗 25分
(先手黒) 211勝 260敗 29分
(先手黒) 220勝 267敗 13分
(先手黒) 225勝 258敗 17分
(先手黒) 225勝 258敗 17分
(先手黒) 238勝 244敗 18分
(先手黒) 233勝 248敗 19分
44.7% 51.2% 4.0%
なんか白が圧倒的に強いんですが……
これも偶数理論でおkですかね?
0288デフォルトの名無しさん
2007/01/26(金) 10:09:190289デフォルトの名無しさん
2007/01/26(金) 10:13:110290デフォルトの名無しさん
2007/01/26(金) 10:52:15大体σ≒0.7%で、3σ以上ずれているので、99%有意な差がある。
0291デフォルトの名無しさん
2007/01/26(金) 11:59:12自分も1万回ぶん回してみた。
結果が似ているので、多分、あっていると思う。
10,000回の試行の結果
黒の勝ち数:4499・・・44.99%
白の勝ち数:5089・・・50.89%
引き分け.. : 412・・・ 4.12%
0292デフォルトの名無しさん
2007/01/26(金) 15:03:31乱数に素性の良いメルセンヌツイスターを使って千万回試行してみた。
黒勝 45.459±0.016 %
白勝 50.378±0.016 %
引分 4.163±0.006 %
白は50%より微妙に良いらしい。
0293デフォルトの名無しさん
2007/01/26(金) 15:12:470294デフォルトの名無しさん
2007/01/26(金) 15:35:090295デフォルトの名無しさん
2007/01/26(金) 15:44:360296デフォルトの名無しさん
2007/01/26(金) 16:04:01必勝じゃないじゃん
0297デフォルトの名無しさん
2007/01/26(金) 16:08:030299デフォルトの名無しさん
2007/01/26(金) 16:28:59stdlib.h に入ってる rand() 使いました。
何度か10,000回試行やってみた。
黒 白 引分
4476 5141 383
4534 5013 453
4467 5093 440
やっぱり傾向としては間違ってないようですね。
レスくれた人�dクス
× 白が圧倒的に強い
○ AIがランダムなら、後手有利
という所ですかね。。。
0300デフォルトの名無しさん
2007/01/26(金) 16:59:33>>299
10万回してみた。
自分はRubyプログラミングの練習で作った。
乱数は、Ruby標準を使用。
10万回にすると、>>292さんの数字にかなり近くなった。
100,000回の試行の結果
黒の勝ち数:45513・・・45.513%
白の勝ち数:50354・・・50.354%
引き分け.. : 4133・・・ 4.133%
0301デフォルトの名無しさん
2007/01/26(金) 17:38:40>287
σ(概算) 0.7%、 基準との差 黒 -0.8% 白 +0.8%
>291
σ(概算) 0.5%、 基準との差 黒 -0.47% 白 +0.51%
>299 (三回合計)
σ(概算) 0.29%、 基準との差 黒 -0.53% 白 +0.45%
>300
σ(概算) 0.158%、 基準との差 黒 +0.054% 白 -0.024%
差はいずれも標準偏差から大きく離れていないので、
どの結果にも矛盾は無いと考えてよさそうだね。
0302デフォルトの名無しさん
2007/01/26(金) 17:46:30白の一手目で黒と駒が並行になるように取ると白の不利になるらしい。
●●● ←このパターンは白不利らしい
○○○
このパターンを意識的にはじいたら
確率はどうなるんだろ?
0303デフォルトの名無しさん
2007/01/26(金) 17:48:310304デフォルトの名無しさん
2007/01/26(金) 17:56:430305デフォルトの名無しさん
2007/01/26(金) 18:01:380306デフォルトの名無しさん
2007/01/26(金) 18:02:04アルゴリズム部分はVBScriptかJavaScriptのエンジンを乗っけて外部ファイルの記述できるようにする
でそれらをサーバー上で管理してスクリプトを自由にアップダウン出来るようにしとくのだ
自分の作ったスクリプトもソフト上からボタン一発で登録できるようなのがいい
サーバ上にあるスクリプトから自由に対戦相手をダウンロードして自分のスクリプトを戦わせることで
スクリプトの有効性を検証する
定期的に誰かがサーバー上にあるスクリプトから優秀なものをピックアップして対戦させて
トップ10を集計表示する
そんな子供の集計やってる暇があったらこれくらい作れるだろw
0307デフォルトの名無しさん
2007/01/26(金) 18:09:240308デフォルトの名無しさん
2007/01/26(金) 18:12:22遅杉却下。
0309デフォルトの名無しさん
2007/01/26(金) 18:14:270310デフォルトの名無しさん
2007/01/26(金) 18:23:270311デフォルトの名無しさん
2007/01/26(金) 18:29:09Windows専用ならDLL、>>213
他のOSも考えるならプロトコル作ってネットワーク対戦
0312デフォルトの名無しさん
2007/01/26(金) 18:30:28各10万回試行(MT)
手: 黒勝/白勝/引分
d3 c3: 44531/51376/4093
d3 c5: 45592/50180/4228
d3 e3: 45622/50182/4196
0313デフォルトの名無しさん
2007/01/26(金) 18:32:400314デフォルトの名無しさん
2007/01/26(金) 18:53:48お前のほうが釣りにしか見えないんだがw
わざわざ対戦させるためにGUIから実装を始めてプロトコルのお勉強までするのか?
誰がそんな暇なことするんだ?
JSとかVBSなら基礎的なプログラム知識のある人ならほとんどの人が使えるし
新たに環境を構築する必要がない
メモ帳でも作れる
0315デフォルトの名無しさん
2007/01/26(金) 18:54:03正直、俺はそんな環境より
子供の集計のほうに興味がある。
0316デフォルトの名無しさん
2007/01/26(金) 19:01:44>JSとかVBSなら基礎的なプログラム知識のある人ならほとんどの人が使えるし
JSはまあわからんでもないがVBSはなあ・・・
DLLって言ってるのになんでGUIの話が出てくるのかもわからんし
プロトコルのお勉強って・・・?
0317デフォルトの名無しさん
2007/01/26(金) 19:10:04お前だけ釣りだろ?www
0318デフォルトの名無しさん
2007/01/26(金) 19:12:410319デフォルトの名無しさん
2007/01/26(金) 19:19:56ふいんき(ry が変わってきたね。
テンプレ再考の余地が……って思ったけど、
そもそも次スレが不要なのかな。
0320デフォルトの名無しさん
2007/01/26(金) 19:29:41お前は不要
0321デフォルトの名無しさん
2007/01/26(金) 19:36:38>>312
Ruby だから遅い。
各1万回試行。
(1)のパターンが一番、勝率が悪いみたい。
d3 c3 とかの記号の意味がわからん。。。
手: 黒勝 / 白勝 / 引分
(1) 45.78% / 50.21% / 4.01%
(2) 44.37% / 51.26% / 4.37%
(3) 44.82% / 50.98% / 4.20%
(1)
○●
○●●
○
(2)
○●
●○●
__○
(3)
○○○
●●●
0322デフォルトの名無しさん
2007/01/26(金) 19:50:240323デフォルトの名無しさん
2007/01/26(金) 20:12:331・・・・・・・・
2・・・・・・・・
3・・・・・・・・
4・・・○●・・・
5・・・●○・・・
6・・・・・・・・
7・・・・・・・・
8・・・・・・・・
↑notepadなんかにコピペすると見易いです
d3 c3 → (2)
d3 c5 → (1)
d3 e3 → (3)
だよね?
0324デフォルトの名無しさん
2007/01/26(金) 20:23:48合ってる。
0325デフォルトの名無しさん
2007/01/26(金) 20:43:14あー、なるほど、そういう座標形式なのか。
サンクス。
03261
2007/01/26(金) 20:48:38開発は進行してますが、別のことに興味が出てきてしまい
ソースのうpが遅れています
手書きのものでは、今まで指摘してもらった箇所は修正でき
関数の分割も出来ています
序盤からproof number search(の改良版)で思考できたら最強っぽいのですが
0327デフォルトの名無しさん
2007/01/26(金) 20:57:130328デフォルトの名無しさん
2007/01/26(金) 20:58:300329デフォルトの名無しさん
2007/01/26(金) 20:59:07また新機能つけようとした挙句、別なことに興味って…
0330デフォルトの名無しさん
2007/01/26(金) 20:59:46オセロの場合、どの手選んでも基本的に一律に60手目で終了するから
03311
2007/01/26(金) 21:06:31手数が決まっているほどproof number searchは意味を持ちますよ
例えば、あと40手以内に玉を詰められると予測できたなら全力で
proof number searchをすればいいんです
詰まない場合は、意味がなくなって思考時間を消費するだけになります
03321
2007/01/26(金) 21:07:310333デフォルトの名無しさん
2007/01/26(金) 21:12:13待ってる。頑張れ
0334デフォルトの名無しさん
2007/01/26(金) 21:12:14>例えば、あと40手以内に玉を詰められると予測できたなら全力で
予測ってどうやるんだい?
0336デフォルトの名無しさん
2007/01/26(金) 22:03:25で何手ってどうやって出すの?
0337デフォルトの名無しさん
2007/01/26(金) 22:53:26またどっかで聞いてきた事をそのまま言う
0338デフォルトの名無しさん
2007/01/27(土) 00:11:11お前の宣言は破られるものだと構えてる
0339デフォルトの名無しさん
2007/01/27(土) 00:17:01末端ノードが試合結果じゃなくて評価関数だと正しく動いてるか分からないでしょ。
0340デフォルトの名無しさん
2007/01/27(土) 00:41:32これだと物凄く収束が遅くて使いものにならないことが分かってる
少なくともUCT↓使わないと
ttp://zaphod.aml.sztaki.hu/papers/ecml06.pdf(UCTの論文,英語)
MoGoではさらに読む手を絞り込んで強くしてる
ttp://www.geocities.jp/hideki_katoh/RR-6062-v3-jp.pdf(MoGoのレポートの和訳)
0341デフォルトの名無しさん
2007/01/27(土) 00:47:57おもしろそうだと言って作った奴に対して、なぜ「それは遅い」っていうレスになるんだ?
0342デフォルトの名無しさん
2007/01/27(土) 00:50:110343デフォルトの名無しさん
2007/01/27(土) 00:55:12MTD(f,r)とかいうアルゴリズムか。
rって簡易な前向き枝刈りだからMTD(f)とPCやMPCなどの併用に相当する。
まずr無しのMTD(f)を終盤で動かしてごらん。
>>342
終わりません
0344デフォルトの名無しさん
2007/01/27(土) 01:01:020345デフォルトの名無しさん
2007/01/27(土) 01:04:49別に貶したいわけじゃないだろうし
ああいう除法にも興味持つかもしれないからいいじゃん。
関係ありそうな情報はどんどん出して欲しいと思うよ。
0346デフォルトの名無しさん
2007/01/27(土) 01:11:31なんか>>340みたいなやつは、本意を読み取らずに無意識に自分より知識がないと
思った奴に対して、上から見てバカにしているように思えたんだよな。
レスを読まずにソースだけ読んだんだろうけどさ。
すっごくくだらない人間に見えた。
0347デフォルトの名無しさん
2007/01/27(土) 01:22:020348デフォルトの名無しさん
2007/01/27(土) 01:40:250349デフォルトの名無しさん
2007/01/27(土) 04:08:05上を見るんだ。
0350340
2007/01/27(土) 13:39:43「収束が遅い」から「弱い」と書いたつもりなんだが,誤解されたか
確率的じゃないゲームでモンテカルロ法が使い物になったのはUCTのお陰と言っても過言じゃないので
その辺りを(他の人にも)きちんと知って貰いたかったのがあのレスを付けた一番の理由
書き方がぶっきら棒だったとは思うがあのソースは俺にも参考になったし
暇ができたら俺もMC/UCTでオセロのプログラムを書いてみようと思ってるし
>283を貶める意図は毛頭ない
今読み直すと,最初にTHX位入れておくべきだったと思う.長文スマソ
03511
2007/01/27(土) 14:14:26囲碁、将棋の中盤以降がかなり強くなる
そして世界の頂点に立つ
03521
2007/01/27(土) 14:15:50タコスの人のところへ持っていったらいいですかね?
0353デフォルトの名無しさん
2007/01/27(土) 14:18:250354デフォルトの名無しさん
2007/01/27(土) 14:25:26論文出すときは数字で実績出さないといけないよ。
妄想だけじゃダメ。
03551
2007/01/27(土) 14:33:290356デフォルトの名無しさん
2007/01/27(土) 14:34:520357デフォルトの名無しさん
2007/01/27(土) 15:16:32将棋に行くふりして逃げるのか?
0358デフォルトの名無しさん
2007/01/27(土) 15:21:07明日中には、MTD(f,r)をうpしますから待ってて下さい!
0359デフォルトの名無しさん
2007/01/27(土) 15:22:40このはてしなく遠いオセロ坂をよ…
0360デフォルトの名無しさん
2007/01/27(土) 15:24:39しばらくたってからやっぱり定石DBは必要ですねとか言い出しそう。
0361デフォルトの名無しさん
2007/01/27(土) 15:29:23最近はもうソースも読んでなかったし。
0362デフォルトの名無しさん
2007/01/27(土) 15:36:120363デフォルトの名無しさん
2007/01/27(土) 15:41:530364デフォルトの名無しさん
2007/01/27(土) 15:42:25って何人かソースうpした人居たよね
その後はどうなってるんだろ?
改良続けてるのかな?
0365デフォルトの名無しさん
2007/01/27(土) 15:45:22ttp://sig-gi.c.u-tokyo.ac.jp/
情報処理学会のゲーム情報学研究会が一番敷居が低い
0366デフォルトの名無しさん
2007/01/27(土) 15:47:06何故強い、最強との言い切れるのか説明してないし、する気もないみたい。
疑似科学と変わらん。
想像だと波動アルゴリズム理論か?
0367デフォルトの名無しさん
2007/01/27(土) 16:12:150368デフォルトの名無しさん
2007/01/27(土) 16:19:16アメリカ合衆国の懐疑論者マーティン・ガードナーは
その著書『奇妙な論理〈1〉』ISBN 4150502722
(原題 Fads and Fallacies in the Name of Science)において、
疑似科学者の傾向として以下の5項目が上げられるとしている。
1.自分を天才だと考えている。
2.仲間たちを例外なく無知な大馬鹿者と考えている。
3.自分は不当にも迫害され差別されていると考えている。
4.もっとも偉大な科学者や、もっとも確立されている理論に
攻撃の的を絞りたいという強迫観念がある。
5.複雑な専門用語を使って書く傾向がよく見られ、多くの場合、
自分が勝手に創った用語や表現を駆使している。
今のところ1のみ?
0369デフォルトの名無しさん
2007/01/27(土) 18:44:570370デフォルトの名無しさん
2007/01/27(土) 18:50:15うまいこと言った?
うまいこと言ったつもりなんだね?
0371デフォルトの名無しさん
2007/01/27(土) 18:52:54誰がうまいことを言えと
とか言われたいのか?そうなのか?
03721
2007/01/27(土) 18:53:380373デフォルトの名無しさん
2007/01/27(土) 18:55:42凡人は所詮凡人にしか相手にしてもらえないだろ。
何考えてるんだ?
0374デフォルトの名無しさん
2007/01/27(土) 18:59:19>>368
0375デフォルトの名無しさん
2007/01/27(土) 19:05:32確かに。
今の状態で理解できる奴がいたら天才かもしれんな。
0376デフォルトの名無しさん
2007/01/27(土) 19:05:390378デフォルトの名無しさん
2007/01/27(土) 19:22:01>>372は>>1だと思ってた…
0379デフォルトの名無しさん
2007/01/27(土) 19:27:01句点があるから
0380デフォルトの名無しさん
2007/01/27(土) 19:28:5103811
2007/01/27(土) 20:34:464も該当だろ。「最強の」と言ってるんだから。
0382デフォルトの名無しさん
2007/01/27(土) 21:59:59本物:>>25-26,28-29,96,98,100,105,108,116,152,155-156,158-159,161-162,182,185-186,193,196,326,331-332,352,377
本物?:>>90,139
偽物?:>>61,64,226,259,355
偽物:>>103,228,230,351,372,381
0383デフォルトの名無しさん
2007/01/27(土) 22:07:01何で鳥付けないの?
0384デフォルトの名無しさん
2007/01/27(土) 22:11:310385デフォルトの名無しさん
2007/01/28(日) 00:04:030386デフォルトの名無しさん
2007/01/28(日) 00:17:2403871
2007/01/28(日) 00:46:04眠くなって一休憩したら0時45分になってた
今から頑張る まっててくれ
0388デフォルトの名無しさん
2007/01/28(日) 01:58:100389デフォルトの名無しさん
2007/01/28(日) 04:08:210390デフォルトの名無しさん
2007/01/28(日) 05:11:30自分の考えの表現であるソースコードはめちゃくちゃだし
MTD(f)+MPCの改悪でしかないのにMTD(f,r)なんて言葉作ってるし
0391デフォルトの名無しさん
2007/01/28(日) 05:47:17比較的流れだけは速いのに
成果物は全然あがってこないんですね
0392デフォルトの名無しさん
2007/01/28(日) 06:12:38君が出してもいいんだよ?
0393デフォルトの名無しさん
2007/01/28(日) 09:15:57出すときは名前欄に「1」と書いておくことがこのスレの唯一のルール。
0394デフォルトの名無しさん
2007/01/28(日) 09:20:2703951
2007/01/28(日) 11:05:37わかりません><
0396デフォルトの名無しさん
2007/01/28(日) 11:26:07>>104
03971
2007/01/28(日) 12:03:04アルゴリズムもちゃんと完成しましたし、オブジェクト指向で書き直しました。
バグがなくなれば最強なリバーシをお見せすることが出来るのですが、どうもうまくいきません。
こうですか?
わかりません><
0398デフォルトの名無しさん
2007/01/28(日) 12:06:360399デフォルトの名無しさん
2007/01/28(日) 12:07:370400デフォルトの名無しさん
2007/01/28(日) 12:13:51そこは学部生・院生の練習場・・・
04011
2007/01/28(日) 13:04:22惜しいな、句点は書かないんだ
0402デフォルトの名無しさん
2007/01/28(日) 13:38:320403デフォルトの名無しさん
2007/01/28(日) 19:30:230404デフォルトの名無しさん
2007/01/28(日) 20:26:360405デフォルトの名無しさん
2007/01/28(日) 20:35:5804061
2007/01/28(日) 20:46:41だが動かしてはいない
http://up2moe.moe.hm/img/q534.txt
0407デフォルトの名無しさん
2007/01/28(日) 20:49:31しかし読む気は無い。
0408デフォルトの名無しさん
2007/01/28(日) 20:54:40まったく読む気起きない
IDE使ってるのに何故インデントしない?
アホか
0409デフォルトの名無しさん
2007/01/28(日) 20:58:40そして関数呼び出し部をコメントアウトしろ。
0410デフォルトの名無しさん
2007/01/28(日) 21:14:250411デフォルトの名無しさん
2007/01/28(日) 21:23:26問題点1. 変数名が意味不明。kd とか cn とかじゃ意味分からん。
意味の分かる変数名に変更汁。指摘したのに全然改善されてない。
問題点2. インデントもせず、詰め込みまくった団子のようなスタイル。
一行に命令(式)一つを厳守した上でインデント汁。
問題点3. コメントが無い。
必ずコメントを入れる事。それも命令自体の説明ではなく、動作の意図を判りやすく書く。
問題点4. 凶悪マクロ。
そのまま関数に書き換えられないようなマクロは論外。
0412デフォルトの名無しさん
2007/01/28(日) 21:26:160413デフォルトの名無しさん
2007/01/28(日) 21:34:36C++ と言ってもほとんど C だからまだいい。
むしろJavaだろうがC#だろうが、積極的にOOP使われるとえらい事になりそうだ。
0414デフォルトの名無しさん
2007/01/28(日) 21:53:51コンパイルして実行してもすぐ終了するのですが…?
main()内のコメントをはずしたらコンパイルエラー…???
0415デフォルトの名無しさん
2007/01/28(日) 21:55:3804161
2007/01/28(日) 22:01:38っていううpですから...まだ動作確認していません
0417デフォルトの名無しさん
2007/01/28(日) 22:08:220418デフォルトの名無しさん
2007/01/28(日) 22:20:56変数名は恥ずかしい名前しか付けられないに7ペンス
0419デフォルトの名無しさん
2007/01/28(日) 23:24:410420デフォルトの名無しさん
2007/01/28(日) 23:58:260421デフォルトの名無しさん
2007/01/29(月) 02:04:42改善されたソースが出されてたのにそれらを破棄して
自分のオリジナルに変更を加えて行ってるんでしょ
0422デフォルトの名無しさん
2007/01/29(月) 02:40:01小学生が冬休みの宿題として作ってもここまでひどいソースは書かないと思うんだが。
1が何者なのかが気になって眠れない。
0423デフォルトの名無しさん
2007/01/29(月) 02:42:47#define aa 256
#define bb 1024
#define cc 1500
これとか
0424デフォルトの名無しさん
2007/01/29(月) 02:55:01MPCの論文読んだ?
04251
2007/01/29(月) 06:03:15英語を勉強してから読みます
日本語の論文は無いですかね?
04261
2007/01/29(月) 10:13:56どこか数式の見方とか載ってるサイト教えてください
0427デフォルトの名無しさん
2007/01/29(月) 11:31:240428デフォルトの名無しさん
2007/01/29(月) 12:07:290429デフォルトの名無しさん
2007/01/29(月) 12:41:160430デフォルトの名無しさん
2007/01/29(月) 13:12:410431デフォルトの名無しさん
2007/01/29(月) 15:08:550432デフォルトの名無しさん
2007/01/29(月) 18:36:37日本語のもあるけどオリジナルを読むほうがいいんじゃない?
04331
2007/01/29(月) 19:31:24四手浅く読むのに使う手間を、無くせば四倍の局面が読める
0434デフォルトの名無しさん
2007/01/29(月) 19:38:48わからんのか
0435デフォルトの名無しさん
2007/01/29(月) 19:41:53偽者だろ?
0436デフォルトの名無しさん
2007/01/29(月) 19:50:0004371
2007/01/29(月) 19:58:39こうですか?わかりません><
04381
2007/01/29(月) 19:58:550439デフォルトの名無しさん
2007/01/29(月) 20:01:39もっと勉強しろよ
0440デフォルトの名無しさん
2007/01/29(月) 20:04:29MPCを理解してない証拠
04411
2007/01/29(月) 20:09:57今日における最強のオセロプログラムはすべて、何らかの形で選択的探索を行っている。
ほとんどの局面で、明らかな悪手が多数存在し、それらは悪手であることが確認できるだけ読めば十分である。
深さ12の探索(12手読み)を行うとき、プログラムは深さ4まではすべての可能な手を評価した上で、
本当に悪いと思われる手を排除する。残った手を深さ12まで探索する。
この手続きは Multi Prob-Cut (Michael Buro の考案)と呼ばれ、
上記の例は「カットペア 4/12」になる。もちろん他のカットペアを使うこともでき、
多くのプログラムは複数のカットペアを使っている。
http://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm
0442デフォルトの名無しさん
2007/01/29(月) 20:12:2104431
2007/01/29(月) 20:25:43一手進むごとに、毎回、浅い読みをしなければ深く読めるんだよ
0444デフォルトの名無しさん
2007/01/29(月) 20:27:54端折りすぎてて実装するには情報が全く不十分なんだよね
勝手に脳内補完して勘違いしてる人も実際いるし
0445デフォルトの名無しさん
2007/01/29(月) 20:29:11もっと80倍ぐらいじゃないか?
04461
2007/01/29(月) 20:29:37だから実装はしないんだってば
0447デフォルトの名無しさん
2007/01/29(月) 20:31:100448デフォルトの名無しさん
2007/01/29(月) 20:44:21しないじゃなくてできないと言う方が正確だな.
0449デフォルトの名無しさん
2007/01/29(月) 21:00:580450デフォルトの名無しさん
2007/01/29(月) 23:18:070451デフォルトの名無しさん
2007/01/30(火) 13:15:23読むのにかかる時間をきちんと(定量的に)計算すればどっちが得か分かるはず
0452デフォルトの名無しさん
2007/01/30(火) 16:24:05攻撃の的を絞りたいという強迫観念があるらしい
04531
2007/01/30(火) 16:51:09未だに読みにくくてすみません
開発だけはしてますよっていううpのため、デバックや改良してもらう事をのぞんで
いる(いた)わけではかったんです
しかし、わからないのでうpします
04541
2007/01/30(火) 16:51:44ここです
http://up2moe.moe.hm/img/q546.txt
0455デフォルトの名無しさん
2007/01/30(火) 17:01:1104561
2007/01/30(火) 17:01:37なぜでしょうか?
z=te[5*x+3+cn]; //指し手34番が入力される
situ(); //取れるコマを出す
hmove(); //次局面のハッシュ値を計算する
adress(); //次局面のアドレスをpにセットする
if(z==34){fn(s);printf("ハッシュ値=%d 指し手=%d 深さ=%d %f\n",p,z,u,kar[u+1]);}
//ここで毎回アドレスが変わってしまいます
0457デフォルトの名無しさん
2007/01/30(火) 17:04:39恥ずかしい間違い多いね
0458デフォルトの名無しさん
2007/01/30(火) 17:06:36相変わらずコメントは入ってないし、変数名も意味不明。
お前が何を考えているかみんなわかっているような聞き方だけど、
そのソースを読んでやりたいことを理解して、その上で丁寧なアドバイスをしてくれるような
物好きはいないと思うよ。
とりあえずadress();消してみればいいんじゃね?
0459デフォルトの名無しさん
2007/01/30(火) 17:09:070460デフォルトの名無しさん
2007/01/30(火) 17:12:390461デフォルトの名無しさん
2007/01/30(火) 17:15:4604621
2007/01/30(火) 17:19:59コメントつけたとしても、それで伝わるとは限らないんですよ
全体をまんべんなく伝えきらなければ伝わらないと思うんです
0463デフォルトの名無しさん
2007/01/30(火) 17:21:35人に伝えるのがそんなに面倒か?
04641
2007/01/30(火) 17:22:32ちょっとまってて下さい
0465デフォルトの名無しさん
2007/01/30(火) 17:23:13まずはそれからだ
0466デフォルトの名無しさん
2007/01/30(火) 17:29:40と言っても3%くらいだけど。
まずはハッシュの計算以外の関数をコメントアウトしろ。
それでハッシュ値が正しかったら、コメントアウトしたとこに原因がある。
徐々にコメントアウトを解除していって、絞り込んでいけ。
04671
2007/01/30(火) 17:31:02BB: //ラベル
s=t+u; // s = 現在の指し手 + 読みの深さ
x=ad[s]; // 読み位置のアドレス
if(te[5*x]<=128){z=64;te_add();} //手が壊れいたら新規に登録
tu=te[5*x+3]; //指し手の記録総数
if(tu==0){ 指し手が0ならば
if(td==1){ ・・・ } 2度指し手が0なら勝敗を記録
else{ ・・・ } 1度指し手が0ならパスで指し進める
}
cn=te[5*x]&63; //現在の手の読み位置
z=te[5*x+3+cn]; //現在の手
situ(); //取れるコマを出す
if(sit[0]==masu[s][ch(F)]){ ・・・ } //すべてのコマが取れるなら勝敗を記録
if((masu[s][0]+masu[s][1])>=63){ ・・・ } //残りのマスが1つだけなら勝敗を記録
if(ha[u]==1){ ・・・ } //手を戻してやってきたとき
hmove();adress(); //手を進めてやってきたとき
FF:;
if(te_deteru)w=tu-1; else w=tu+3; //現局面の手がすべて出ているとき
kar[u+1]=kar[u]+rt[w][cn-1]; //確率の計算(対数を使う)
if((kar[u+1]<0) && (kar[u+1]<lg*(hash[p].k-1))){ //確率が残っていて、まだ指し進めていないとき
hash[p].k=1+(int)(kar[u+1]/lg);move();goto BB;}
0468デフォルトの名無しさん
2007/01/30(火) 17:35:0904691
2007/01/30(火) 17:38:13LL:; //ラベル
if(hash[p].b==N){gote_hyoka();hash_bset(p,y);y=N+1-y;} //後手の評価が未登録ならば評価関数を使って値を記録
else{y=N+1-hash[p].b; //後手の評価が計算済みならばそれを使う
if(y==N+1){・・・} yがN+1ならば先手の勝ち、勝敗を記録する
}
if(y>te_max(x))te_change(); yが記録されている最大値より大きいならば手を交換して値を記録する
if(cn>=tu){ //手のカウントが、手の総数以上のとき
te_add(); //手を追加する
if(z==97){y=te_max(x);hash_bset(x,y);te[5*x]=129;remove();}} //手が追加出来ないときは最大値を、上のルートに記録して手を戻す(βカットというもの?)
if(y>g){if(y>hash[x].a)hash_aset(x,y);te[5*x]++;remove();} //yが予想評価値を超えたなら、それを上のルートに記録して手を戻す(αカットというもの?)
cn++;te[5*x]=128+cn;z=te[5*x+3+cn];situ();hmove();adress();goto FF; //αカット、βカットもおこらないならば次の手を調べる
}
0470デフォルトの名無しさん
2007/01/30(火) 17:41:260471デフォルトの名無しさん
2007/01/30(火) 17:42:020473デフォルトの名無しさん
2007/01/30(火) 17:42:4204741
2007/01/30(火) 17:47:53フローチャート書いてみます
0475デフォルトの名無しさん
2007/01/30(火) 17:52:47小学生の相手してても仕方ねーべ。
04761
2007/01/30(火) 18:28:060477デフォルトの名無しさん
2007/01/30(火) 18:38:47こんな馬鹿なコメントは無いぞw
盤面の初期化とかもっとブロックを表すにふさわしいコメントつけろよw
0478デフォルトの名無しさん
2007/01/30(火) 18:39:271.ラベルのコメントは、そこからどんな処理をするルーチンが始まるのかを示せ。「//ラベル」は無意味。
2.概要として「αカット、βカットも…」の様な書き方は構わないが、変数名や定数が何を意味しているか分からないのでその詳細が不明。
3.何度もいわれていることではあるが、文ごと(ザックリ言うと;ごと)に改行すべし。
4.変数の使い回しみたいにコメント中の「差し手」も複数の意味で使い回してる?
0479デフォルトの名無しさん
2007/01/30(火) 18:41:26箇条書きの日本語に流れを書け!
いまはこちらが主流。
0480デフォルトの名無しさん
2007/01/30(火) 18:42:39var = 1 + 1;//計算したものをvarに代入
とか意味の無いコメントw
まぁ、必ず通る道だと思うけどな
0481デフォルトの名無しさん
2007/01/30(火) 18:44:38べつにそこまでちゃんと書かなくていい。
コメント書かないならどういう流れで処理をしたいのか、それがわかればいいんだから、
手書きで紙に書いてうpでもいいくらい。
とりあえず処理を順番に箇条書きで
0482デフォルトの名無しさん
2007/01/30(火) 18:57:18とあるので、上のif文見たけど分岐してない?
よく見るとremove()内で分岐している…
このような書き方は避けるべきだ。
制御構造が分かりづらい。
0483デフォルトの名無しさん
2007/01/30(火) 18:59:050484デフォルトの名無しさん
2007/01/30(火) 19:42:30まずはアルゴリズムとか処理の流れを日本語で説明するんだ。
04851
2007/01/30(火) 19:53:21if((hash[x].h==y) && (k==w)){ad[s+1]=p;break;}
ではなくて
if((hash[p].h==y) && (k==w)){ad[s+1]=p;break;}
でした
0486デフォルトの名無しさん
2007/01/30(火) 19:53:560487デフォルトの名無しさん
2007/01/30(火) 20:01:040488デフォルトの名無しさん
2007/01/30(火) 20:04:160489デフォルトの名無しさん
2007/01/30(火) 20:07:13いつまでたっても〆切が来ないぞ
0490デフォルトの名無しさん
2007/01/30(火) 22:03:21ttp://www0.us.ioccc.org/main.html
0491デフォルトの名無しさん
2007/01/31(水) 00:17:320492デフォルトの名無しさん
2007/01/31(水) 00:50:371はそれで失敗してるんじゃなかったっけ?
0493デフォルトの名無しさん
2007/01/31(水) 00:58:290494デフォルトの名無しさん
2007/01/31(水) 01:11:08イメージをつかむため、
ダイアグラムなどを使ってマインドストーミングして、
仕様を日本語で書き、
仕様記述言語で書き、
プログラムを書き、
検証ソフトを使って検証するんだよ
0495デフォルトの名無しさん
2007/01/31(水) 02:18:320496デフォルトの名無しさん
2007/01/31(水) 04:57:480497デフォルトの名無しさん
2007/01/31(水) 05:16:12がんばってかき回してくれ
0498デフォルトの名無しさん
2007/01/31(水) 06:55:03君のような人が現れるのを待ってた
応援するよ
0499デフォルトの名無しさん
2007/01/31(水) 11:31:49日本語で書いたアルゴリズムを、このスレで後悔しろと言っているんだよ
0500デフォルトの名無しさん
2007/01/31(水) 12:10:060501デフォルトの名無しさん
2007/01/31(水) 12:14:13↓
アルゴリズムとかかけ
↓
バグ直りました
この流れから、アルゴリズムとか書けって言われたのは、バグ直すためだとおもってるんじゃね?
だから書かないんじゃね
0502デフォルトの名無しさん
2007/01/31(水) 12:27:12人とコミュニケーションが全くできない
自分の間違いを指摘されても正さない
人を見下している
平気で嘘をつく
1を見てるとイライラするね
0503デフォルトの名無しさん
2007/01/31(水) 12:29:21大目に見てやれよ
0504デフォルトの名無しさん
2007/01/31(水) 12:35:18とりあえず公の場でやると宣言したからには必ずやり遂げてもらわないと。
公の場で発言することの重要性を身をもって知ってもらわないとね。
とりあえず、>>1は毎日進行状況を全員に解るように報告しなさい。
0505デフォルトの名無しさん
2007/01/31(水) 12:44:58本気ならトリ付きで。
0506デフォルトの名無しさん
2007/01/31(水) 13:00:191と同じ事されるのはごめんだけどやめても別に責めないよ
ところでC言語はどれくらい勉強したの?
0507デフォルトの名無しさん
2007/01/31(水) 13:00:410508デフォルトの名無しさん
2007/01/31(水) 13:02:52論文教えても見なかった前科があるし
0509デフォルトの名無しさん
2007/01/31(水) 13:13:08http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF)
http://homepage2.nifty.com/cat-chy/cp/how_to_write_comment.html
コメントの書き方でとりあえずこの辺りは参考になると思う
0510デフォルトの名無しさん
2007/01/31(水) 17:12:44プログラムも人間性もカスじゃんww
0511デフォルトの名無しさん
2007/01/31(水) 17:21:59アルゴリズム・理論もね
0512デフォルトの名無しさん
2007/01/31(水) 22:51:460513デフォルトの名無しさん
2007/01/31(水) 23:44:340514デフォルトの名無しさん
2007/02/01(木) 01:22:37goto多用、変数不明、コメントなしのスパゲッティ→
>>502な>>1を温かく見守るスレ
0515デフォルトの名無しさん
2007/02/01(木) 05:18:410516デフォルトの名無しさん
2007/02/01(木) 09:09:460517デフォルトの名無しさん
2007/02/01(木) 14:46:590518デフォルトの名無しさん
2007/02/01(木) 16:21:140519デフォルトの名無しさん
2007/02/01(木) 16:22:040520デフォルトの名無しさん
2007/02/01(木) 17:01:420521496 ◆8VT5lt6VLs
2007/02/01(木) 22:27:06ありがとう。期待に沿えるかわからないが。
>>505
いまのところ本気。
>>506
どう答えればいいのかな・・・。1のソースが理解できないぐらい。
0522デフォルトの名無しさん
2007/02/01(木) 22:33:151のソースは読まないほうがいいよ。
あれは悪い例だから決して真似しちゃだめだよ。
0523デフォルトの名無しさん
2007/02/01(木) 22:35:23何か読んでる本とかサイトはある?
変数宣言とか条件分岐やループはわかる?
キーボードやファイルの入出力は?
0524496 ◆8VT5lt6VLs
2007/02/01(木) 22:57:41了解しますた。
>>523
制御文、ポインタ、関数、構造体あたりは理解できます。
逆にキーボードやファイルの入出力が怪しい・・・。
よく見るサイトは
ttp://wisdom.sakura.ne.jp/
0525デフォルトの名無しさん
2007/02/01(木) 23:07:20そこのC言語入門は一通り読み終えたのかな?
じゃあまず8x8マス分の黒・白・空の情報を持つ盤と
座標を引数として渡せば盤の石を返す関数を作ってみて。
まずは正しく動くように気をつけて書く
0526デフォルトの名無しさん
2007/02/02(金) 01:35:55がんがれ>>496
0527デフォルトの名無しさん
2007/02/02(金) 03:34:500528496 ◆8VT5lt6VLs
2007/02/02(金) 12:03:56http://ud.gs/300hs
パスは鳥
0529デフォルトの名無しさん
2007/02/02(金) 12:07:50おつ。
言われた以上の事をやってるな。
けっこうできるんじゃん。
0530デフォルトの名無しさん
2007/02/02(金) 13:01:22なんだか読んだ事がありそうっていうか多少知識がありそうな書き方だね。
0531デフォルトの名無しさん
2007/02/02(金) 13:11:21パス付きはやめれ
http://up2moe.moe.hm/img/q564.zip
0532デフォルトの名無しさん
2007/02/02(金) 13:19:26なぜパス付きはだめ?
このスレ見てればわかるのに
0533デフォルトの名無しさん
2007/02/02(金) 13:26:32逆になんでパス無しではだめ?
0534デフォルトの名無しさん
2007/02/02(金) 13:44:420535デフォルトの名無しさん
2007/02/02(金) 13:54:04特に理由が無いなら >533 とかの事情もあるし、配慮してくれればうれしいのだけど。
05361
2007/02/02(金) 13:58:590537デフォルトの名無しさん
2007/02/02(金) 14:03:59本人に聞けよ
0538デフォルトの名無しさん
2007/02/02(金) 14:08:59いずれにしても直リン禁止のアップローダが多いと思うのだけど。
それはさておき、このまま>1が「最強の嗜好ルーチン」とやらを完成させるのと、
>496がみんなの支援を受けつつ充分強いプログラムを完成させるのと、
どっちが見込みある……かは>536が本人かどうかに関わらず明らかだね。
0539デフォルトの名無しさん
2007/02/02(金) 14:33:03お前もうイラネ
0540デフォルトの名無しさん
2007/02/02(金) 16:02:21なかなかいいね
この調子で頑張って
0541デフォルトの名無しさん
2007/02/02(金) 16:10:42探索をするためには盤面を戻す操作も必要だから次はまずこれを実装してね。
ここでコピー方式と差分方式がある。差分がいいと思うけど。
既にやってたりもっと行けそうだと思ったりしたら進みたいとこまで進んでいいよ。
0542デフォルトの名無しさん
2007/02/02(金) 16:14:130543デフォルトの名無しさん
2007/02/02(金) 16:18:27別人でしょ。
05441
2007/02/02(金) 17:45:16始めに作ることにする
0545デフォルトの名無しさん
2007/02/02(金) 17:47:01誤爆?
0546デフォルトの名無しさん
2007/02/02(金) 18:13:12一つ一つの関数を検査する時には仕様どおりに動いても、グローバル変数を使い回す限り、
他の関数と組み合わさった時に認識困難で追跡困難、修正困難なバグがいくつも出てくるよ。
0547デフォルトの名無しさん
2007/02/02(金) 18:33:420548デフォルトの名無しさん
2007/02/02(金) 18:47:570549496 ◆8VT5lt6VLs
2007/02/02(金) 19:02:09ありがとう。そう言ってもらえるとうれしい。
>>530
>>1,7の日本語のページはどれも読んだことあります。英文はどんどん後回しに・・・。
ソースは Thell と Zebra をちらっと見た程度でつ。
>>531
このスレ見てない人に見られるのはちょっと抵抗が・・・。
>>538
そのためにはまだ知識不足なもよう(´・ω・`)
>>541
いま作ってる方法だと、1回分の着手場所と差分を記録するだけで10ワードにもなるんだ。
このどんぶり勘定が後々響いてきそうな悪寒。もっかい検討してみます。
>>542,543
スレへの出現の仕方とか似てますね。いや、別人ですが。
0550デフォルトの名無しさん
2007/02/02(金) 19:35:02着手場所と、それぞれの方向への反転個数だけ記録すればでいいのでは。
どの方向も0〜6までの値しかとらないので、構造体にしてビットフィールド指定すれば
3bit*(8+2)=30bit = 1dword で済む気がする。
0551デフォルトの名無しさん
2007/02/02(金) 21:07:150552デフォルトの名無しさん
2007/02/02(金) 21:32:51うpろだ死んでる?
0553デフォルトの名無しさん
2007/02/02(金) 21:34:440554デフォルトの名無しさん
2007/02/02(金) 21:39:30>>531 にコピーがある
0555デフォルトの名無しさん
2007/02/02(金) 22:24:38サンクス。
落とせた。
0556デフォルトの名無しさん
2007/02/02(金) 23:58:45Core2は同時に使用するレジスタ数が少ないと非常に高いパフォーマンスを発揮する。
しかしレジスタ数が増えるとパフォーマンスは劇的に低下する。
整数レジスタが3個+メモリ参照が1個+条件分岐命令が1個の場合、5命令同時に
1クロックで実行を完了する。しかし整数レジスタへのアクセスが1つ増えると処理に
かかるクロックが1クロック増加する(すなわち性能が半分になる)。
0557デフォルトの名無しさん
2007/02/03(土) 00:04:26その手の話題はこちらへどうぞ
x86命令の所要クロック計測スレPart3
http://pc10.2ch.net/test/read.cgi/tech/1168399966/
05581
2007/02/03(土) 00:53:47作ってやるぜ!これでみなさん作成がらくになりますよ
05591
2007/02/03(土) 00:55:410560デフォルトの名無しさん
2007/02/03(土) 01:39:07最適化の前に、まずは動くものを作るべきだろ
0561デフォルトの名無しさん
2007/02/03(土) 09:46:07Minimax法とNegamax法の違いは理解してる?
αβ法をそれぞれの方式で書ける?
0562デフォルトの名無しさん
2007/02/03(土) 21:36:57俺も作ってみるか
0563デフォルトの名無しさん
2007/02/03(土) 22:28:55作る人はトリ付けてね
がんばれ
0564496 ◆8VT5lt6VLs
2007/02/04(日) 03:39:38良い案ありがとう。
色々考えたけど、縦型探索時に記録するのはそれまでの枝の評価値の最大値と、その枝
への経路(差分)のみであって、全ての枝への経路を記録するは必要ないという結論に。
したがってある1経路の記憶容量が多少多くても全体への影響はないと思われます。
横型探索だとそうもいかない気がしますが、当面はこの方向で行こうかと。
もしかしてアホなこと言ってたら訂正願います・・・。
>>556
ガリガリチューンは一番面白そうなとこですが、プログラムがもう少し形になってからで・・・。
>>560
ごもっともです(´・ω・`)
>>561
わかります。ただ書けるかどうかとは別問題だと思うんで、考えながら書いてみまつ。
>>562
作る人が何人か出てきて、対戦させたりすると面白そう。おれが言うのもなんだが、がんばれ。
0565デフォルトの名無しさん
2007/02/04(日) 04:16:17探索部分にバグがあるのかなぁ
0566565
2007/02/04(日) 04:19:11難しいことはまだ取り入れてませんが・・・
0567デフォルトの名無しさん
2007/02/04(日) 05:48:50と思ったんだけど需要はあるのかな?
各オセロプログラムはdllで作ってもらって、
コンボボックスか何かで選択可能みたいな形で…。
0568デフォルトの名無しさん
2007/02/04(日) 06:51:14使ったことないからわからんけど
もしGUI作ってくれるならオープンソースがいいな
0569デフォルトの名無しさん
2007/02/04(日) 08:48:2205701
2007/02/04(日) 10:17:290571デフォルトの名無しさん
2007/02/04(日) 14:15:26ちゃんと人間やめとけよ
0572デフォルトの名無しさん
2007/02/04(日) 18:50:37かわいそうと思ってもみんなが迷惑します
0573デフォルトの名無しさん
2007/02/04(日) 18:54:51僕もそれ読んだことがあります。
次は「リバーシプログラムの作り方」っていうシェアウェアを読もうと思ってます。
まだ序盤のサンプルしか読んでませんけど、パターン評価やMPCについては
こっちのほうが詳しそうなので送金して全部読むつもりです。
一応紹介。
http://hp.vector.co.jp/authors/VA015468/platina/index.html
0574デフォルトの名無しさん
2007/02/04(日) 22:59:34持ってたらうpして欲しいんだけど
0575デフォルトの名無しさん
2007/02/04(日) 23:09:240576デフォルトの名無しさん
2007/02/04(日) 23:10:04ttp://makimo.to/cgi-bin/ffind/ffind2.cgi?/2ch/pc10_tech/1166/1166749119.html
0577デフォルトの名無しさん
2007/02/04(日) 23:13:530578デフォルトの名無しさん
2007/02/04(日) 23:16:55今から読む
0579デフォルトの名無しさん
2007/02/04(日) 23:27:540580デフォルトの名無しさん
2007/02/04(日) 23:50:03トップレベルのプログラムを作るには情報が足りないんだよな
壁を越えるにはBuroの論文は必読
0581デフォルトの名無しさん
2007/02/05(月) 05:11:55同じ馬鹿でも偉ぶった馬鹿ほど鼻持ちならないものはない。
普通の馬鹿なら話もできるし、助けてやることもできよう。
しかし自分の馬鹿さ加減を隠すため、
偉そうなでたらめを並べ立てて人を恐れ入らせようとするようなもったいぶった馬鹿だけは、
僕は絶対に我慢できない!
普通の馬鹿はいかさま師ではない。
正直な馬鹿は結構だ。
だが不正直な馬鹿となると始末におえない。
このスレで見たのは、この種の威張り腐った馬鹿どもの群れなのだから僕はすっかり頭にきてしまった。
だからもう決してこのスレを見ないつもりだ。
0582デフォルトの名無しさん
2007/02/05(月) 05:37:070583デフォルトの名無しさん
2007/02/05(月) 08:00:57逃げたの?
0584デフォルトの名無しさん
2007/02/05(月) 08:26:480585デフォルトの名無しさん
2007/02/05(月) 12:28:13読んだらレビューよろ
0586デフォルトの名無しさん
2007/02/05(月) 18:47:46ttp://boss.noppo.org/~inouetom/memo/20061118.html
に乗ってる本?の改変。つまり誰かのねた。
0587デフォルトの名無しさん
2007/02/05(月) 19:05:06子供っぽいw
0588デフォルトの名無しさん
2007/02/05(月) 19:25:570589デフォルトの名無しさん
2007/02/05(月) 19:48:55http://www.spacepark.city.koriyama.fukushima.jp/events/Science/2005/1015/img01.jpg
0590デフォルトの名無しさん
2007/02/05(月) 19:49:460591デフォルトの名無しさん
2007/02/05(月) 20:06:14才能があったら大人っぽくしなくてもいいんだよ。
凡人が子供っぽくしてたら…
0592デフォルトの名無しさん
2007/02/05(月) 20:07:28バカと天才は紙一重と言われる所以はスタイルが似ているからです。
大人っぽいスタイルは凡庸な人です。
0593デフォルトの名無しさん
2007/02/05(月) 20:13:410594デフォルトの名無しさん
2007/02/05(月) 20:25:280595デフォルトの名無しさん
2007/02/05(月) 20:33:160596デフォルトの名無しさん
2007/02/05(月) 21:10:11今日送金しました。ライセンスキーが来てないのでまだ読んでませんけど。
レビューですか・・そういうの苦手なんですけど・・。
作者は日本のコンピュータオセロ界で3本の指には入る
実力の持ち主なので間違いなく良いだろうと思います。
僕は彼がトップだと思ってるんですけどね。
でもこんな風に考えてる僕ですから
レビューもバイアスが掛かったものになるかもしれません。
0597デフォルトの名無しさん
2007/02/06(火) 03:03:05バイアス上等。楽しみに待ってるよ。
0598デフォルトの名無しさん
2007/02/06(火) 12:59:32下から2行目を実現するにはどうしたらいいですか?
class board {
unsigned char bd[2][8];
public:
board(){for(int i=0;i<2;i++)for(int j=0;j<8;j++)bd[i][j]=0;bd[0][3]=16;bd[0][4]=8;bd[1][3]=8;bd[1][4]=16;}
board& operator=(board& x){for(int i=0;i<2;i++)for(int j=0;j<8;j++)bd[i][j]=x.bd[i][j];return *this;}
int operator()(int z){int m,n;m=z/8;n=z-8*m;return (((bd[0][m]>>n)&1)+2*((bd[1][m]>>n)&1));}
};
main(){
board bord;
printf("%d\n",bord(27));
// bord(27)=1; 0は空 1は黒 2は白
}
05991
2007/02/06(火) 13:00:2206001
2007/02/06(火) 13:05:49これに括弧を付けるにはどうしたら?
0601デフォルトの名無しさん
2007/02/06(火) 15:32:340602デフォルトの名無しさん
2007/02/06(火) 15:32:35boardクラスにset()関数でも作ってみては?
board& set(int index, char color) { bd[…]=color; }
こんなの。
あと、変数名が訳分からんのが昔のままだからそこも直しておくれ。
0603デフォルトの名無しさん
2007/02/06(火) 15:37:51かわいそうと思ってもみんなが迷惑します
06041
2007/02/06(火) 19:06:09わかりました!そうしてみます
0605デフォルトの名無しさん
2007/02/06(火) 19:29:43誰も読む気がしないだろ。
インデント覚えろカス。
0606デフォルトの名無しさん
2007/02/06(火) 19:58:500607デフォルトの名無しさん
2007/02/06(火) 20:00:47お前らスルー憶えろ。
06081
2007/02/06(火) 20:41:44598だと
0609デフォルトの名無しさん
2007/02/06(火) 20:46:43このスレみてみろ。
http://pc10.2ch.net/test/read.cgi/tech/1153542424/
誰もお前みたいな書き方してないぞ。
このスレ見て勉強しろ。
0610デフォルトの名無しさん
2007/02/06(火) 21:09:32はかどってますかー?
どんな感じー?
0611デフォルトの名無しさん
2007/02/06(火) 21:10:27強くなったかいー?
0612デフォルトの名無しさん
2007/02/06(火) 21:43:19まずはこれ読んでみようと思う
0613デフォルトの名無しさん
2007/02/06(火) 21:45:44なんで二重ループとか単純でないメンバ関数を一行で書くかなこの人は。
06141
2007/02/06(火) 21:50:49どこまでがひとつの関数(処理)なのかが一目瞭然だよ?
0615デフォルトの名無しさん
2007/02/06(火) 21:57:460617496 ◆8VT5lt6VLs
2007/02/06(火) 22:09:58作成の話題が出たと思ったら、すでに漏れの斜め上を進んでおられるようでつね・・・(´・ω・`)
>>567
面白そう。DLLをみんなで何パターンか作れれば良いと思うがどうだろう。
>>610
あんましはかどってないです。とりあえずαβ法を実装したところです。
いまは序中盤の評価関数のことで頭がいっぱい・・・。問題の解がないぶん、終盤よりはるかに難しいです。
あと今日の時点のソースでつ。変な部分にはどうか突っ込みお願いします。
ttp://ud.gs/300kc
パスは前回と同じで、鳥です。
0618デフォルトの名無しさん
2007/02/06(火) 22:13:22あれを規範に、リバーシもGUIだけ誰かつくらないものか。
06191
2007/02/06(火) 22:14:53BearRev Professional は高機能リバーシです。
以下の特徴があります
対局者は DLL として自作可能
デザインや音はカスタマイズ可能
http://www20.pos.to/~sleipnir/software/bearreversi/index.html
0620デフォルトの名無しさん
2007/02/06(火) 22:27:55ああ、すごくいいじゃないか。
1に書いてあったな。それはすまなかった。
1は意外なところで役に立ったな。
0621デフォルトの名無しさん
2007/02/06(火) 22:30:53おつ。
ざっと見たけどいい感じ。
素直な実装だね。
次は中盤評価関数か終盤解析?
0622デフォルトの名無しさん
2007/02/06(火) 23:28:410623496 ◆8VT5lt6VLs
2007/02/06(火) 23:37:25ありがとう。
とりあえず間に合わせで序中盤の評価関数を書いておき、一定の水準で思考できるようになったあたりで
いろいろと手を広げてみようかなと。
終盤は今の状態に、さらに序中盤の評価関数で使うネタを加味しようと思っています。
ネタ? これから考えますorz
0624デフォルトの名無しさん
2007/02/07(水) 00:02:14ttp://up2moe.moe.hm/img/q599.txt
06251
2007/02/07(水) 00:15:13ありがとう
でもよくわからないので今までのソースでいく
0626デフォルトの名無しさん
2007/02/07(水) 00:17:51\(^o^)/モウダメポ
0627デフォルトの名無しさん
2007/02/07(水) 00:18:12(・д・)ポカーン
0628デフォルトの名無しさん
2007/02/07(水) 00:28:39これはさすがにネタ or 偽者だろ
0629デフォルトの名無しさん
2007/02/07(水) 00:30:48お前はまだC++に手出すのは早い
Cでどんなコードが出るのか,C++だとどうなのか,
自分の眼で確かめられるだけのハードの知識を付けてからに汁
0630デフォルトの名無しさん
2007/02/07(水) 05:19:590631デフォルトの名無しさん
2007/02/07(水) 05:40:02思わせるのに徹しているのかも知れない。だとしたら1は天才!!
本当はただの天然なんだろうけどよ('A`)
0632デフォルトの名無しさん
2007/02/07(水) 05:55:20見本のようなヤツだ
0633デフォルトの名無しさん
2007/02/07(水) 06:10:29馬鹿な1を演じているんじゃないかとか勘ぐってしまった。
0634デフォルトの名無しさん
2007/02/07(水) 12:14:360635デフォルトの名無しさん
2007/02/07(水) 13:58:34DLできなかったので>>634からDL
int Search( ---, int mover, int rival, --- ) としておいて、
相手番を探索する時は
tmp = Search( ---, rival, mover, --- ); で呼ぶのはどうだろう?
あるいは、
#define EDGE (3)
rival = mover ^ EDGE;
出来るだけ「色を意識しない」つくりのほうがいいと思う。
>>634
.zipの中に.zipがあるみたいで、同フォルダで解凍すると上書きして壊してしまうみたい。
0636デフォルトの名無しさん
2007/02/07(水) 14:22:310637デフォルトの名無しさん
2007/02/07(水) 15:01:36rival = getRival(mover);
int getRival(int mover){
if(mover == BLACK) rival = WHITE;
else rival = BLACK;
}
0638デフォルトの名無しさん
2007/02/07(水) 15:39:49if(mover == BLACK)
return WHITE;
return BLACK;
}
0639デフォルトの名無しさん
2007/02/07(水) 15:43:510640デフォルトの名無しさん
2007/02/07(水) 15:50:340641デフォルトの名無しさん
2007/02/07(水) 17:00:49http://www.tournavitis.de/herakles/engines.htm
0642デフォルトの名無しさん
2007/02/07(水) 18:59:38今は問題ないけどSearch関数内のtmp=-1ってのが気になった
それとNegaMaxにした方が場合分けが無くなっていいかなと
0643496 ◆8VT5lt6VLs
2007/02/07(水) 22:02:58うpろだドットネットはたまに落ちてるときありますね・・・。
短縮URLを使ってるので、そのときに(たぶん)発生するリダイレクトが原因で見れないのかも。
もふもふろだはパス付きzipが不可な点が気になりまつ。zipの中にパス付きzip入れときゃ良い気もしますが。
>>635
EDGE などの定数の実際の値は、まだ考慮の余地がある気がするので、とりあえず
rival = mover ^ (BLACK ^ WHITE) としとけば良いでしょうか?
>>642
NegaMax法良いでつね。移行してみます。
tmp = -1; だと、もしやまずい点が?
mover のパスの処理について良い案が浮かばず、このようになってしまいますた・・・。
0645デフォルトの名無しさん
2007/02/07(水) 22:17:180646デフォルトの名無しさん
2007/02/07(水) 22:32:45同意
0647496 ◆8VT5lt6VLs
2007/02/07(水) 22:37:47そうします。
0648デフォルトの名無しさん
2007/02/07(水) 22:39:28Zebra(ttp://radagast.se/othello/)の
Writing an Othello program ページの下のほうに
Some source code の Basic endgame solver欄があって、
終盤解析のソースが2つDLできるよ(endgame.c と、リンク先にsolver.1-4.zip)。
すでにDL済みなら、ゴメン。
0649648
2007/02/07(水) 22:42:43ttp://radagast.se/othello/
リンクに括弧がくっついちゃった。
0650デフォルトの名無しさん
2007/02/08(木) 00:51:28これに同梱されてるプログラムは強化学習を使っていて
自動対局・学習でどんどん強くなるんですね。
文章はこのプログラムのソースコードの解説が基本ですが
最初はシンプルな実装で動くものを作る所から始めて
後から機能を追加したり書き換えたりする構成で
よく系統立てられていると思います。
内容的にも必要な基本技術が一通りそろっていますが、
個人的には置換表を導入するところも解説してほしかったですね。
評価関数の作成で強化学習を適用しているところと各所での高速化の手法や
MPCの部分がとても勉強になりました。
MPCについてはここまで詳しく解説している日本語文献は無いと思います。
さらに改善可能な箇所も挙げられていて各人で工夫する余地が示されています。
皆さんもこれを読む事をお勧めします。
これからまたじっくり読みます。
0651デフォルトの名無しさん
2007/02/08(木) 15:19:59シンプルな実装から始めていき、機能を追加する構成になっています。
基本技術が一通り説明されていますが置換表の解説はありません。
強化学習により評価関数を作成する部分と各所の高速化の手法、MPCの部分が勉強になりました。
0652デフォルトの名無しさん
2007/02/08(木) 19:19:26でもなぜ2回・・・
0653デフォルトの名無しさん
2007/02/08(木) 19:47:29>>650が黒番
>>651が白番
0654デフォルトの名無しさん
2007/02/08(木) 20:06:20誰かが書き直したものでしょう
0655デフォルトの名無しさん
2007/02/08(木) 21:17:230656デフォルトの名無しさん
2007/02/08(木) 22:01:57int base[] =
{0,14,5,1,19,8,16,24,32,54,37,33,67,48,64,80,
96,110,101,97,131,104,128,136,160,198,165,161,227,192,224,2464,
256,270,261,257,275,264,272,280,320,342,325,321,387,336,384,400,
448,462,453,449,515,456,512,520,576,646,581,577,707,640,704,7744,
768,782,773,769,787,776,784,792,800,822,805,801,899,816,896,912,
928,942,933,929,1027,936,1024,1032,1056,1158,1061,1057,1187,1152,1184,2432,
1280,1294,1285,1281,1299,1288,1296,1304,1408,1430,1413,1409,1539,1424,1536,1552,
1664,1678,1669,1665,1795,1672,1792,1800,1920,2054,1925,1921,2179,2048,2176,2304,
2560,2574,2565,2561,2579,2568,2576,2584,2592,2614,2597,2593,2627,2608,2624,2640,
2656,2670,2661,2657,2819,2664,2816,2824,2848,2886,2853,2849,2915,2880,2912,7456,
3072,3086,3077,3073,3091,3080,3088,3096,3136,3158,3141,3137,3331,3152,3328,3344,
3392,3406,3397,3393,3587,3400,3584,3592,3648,3846,3653,3649,3907,3840,3904,7680,
4096,4110,4101,4097,4115,4104,4112,4120,4128,4150,4133,4129,4355,4144,4352,4368,
4384,4398,4389,4385,4611,4392,4608,4616,4640,4870,4645,4641,4899,4864,4896,7424,
5120,5134,5125,5121,5139,5128,5136,5144,5376,5398,5381,5377,5635,5392,5632,5648,
5888,5902,5893,5889,6147,5896,6144,6152,6400,6662,6405,6401,6915,6656,6912,7168};
この配列は2つの1バイトのビットパターン b,w (b&w == 0) に対して
(int) r = base[b|w]+b (or base[b|w]+w)
を重複なく定める.
可能なパターン数3^8=6561に対して,rのとりうる値は[0, 7872)なので
濃度は83%強.もっと圧縮する方法があるのかもしれないが,俺にはもうムリポ
あと,単純なリバーシを作ってみたんだけど,zip貼るのに適したロダってある?
0657デフォルトの名無しさん
2007/02/08(木) 22:27:25パスとか暗号とか言い出さなければ、もふろだでいいんじゃね?
ttp://up2moe.moe.hm/upload.php
C/C++のソースなら、元々ソースコード用の↓でもいいし。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
どちらも直リンが通り、過負荷でDL出来なかった経験がない所がありがたい。
0658デフォルトの名無しさん
2007/02/08(木) 22:37:45よくわからんのだが、これはbitboardにして辺の評価に使うんか?
0659デフォルトの名無しさん
2007/02/08(木) 22:53:49どこでもいんじゃね?見る側がとやかく言うこともないだろ。好きなとこでいいよ
>>658
ハッシュじゃないか?違うかもしれんが
0660656
2007/02/08(木) 23:50:37まだ単純なαβと寄せ集めの評価関数を実装したレベル(処理量の都合で6手読みまで)
ttp://up2moe.moe.hm/img/q669.zip
LinuxでGNU makeがあればmakeでいけるはずだけど,色々怪しい動きをしてるから
問題があるかもしれない.
最悪全てのソース(.cc),ヘッダ(.hh)を一ヶ所に集めてまとめてC++コンパイラに
かければ大丈夫だと思う.拡張子がマイナーなのは申し訳ない.
>658,659
一応ハッシュの一種.
単射性を損ねずにどこまで処理量と空間量を削れるかに挑戦してた.
(まだ試してないけど)
0661デフォルトの名無しさん
2007/02/09(金) 00:05:47落ちてる?DLできないんだが
0662デフォルトの名無しさん
2007/02/09(金) 00:32:32普通に開けたけど。
0663デフォルトの名無しさん
2007/02/09(金) 00:45:060664661
2007/02/09(金) 00:50:58サンクス!今試したらDLできた
しかし解凍してもファイルが出てこんぞ。。。当方+Lhaca1.20使用
ちなみにエラーは出てない
0665デフォルトの名無しさん
2007/02/09(金) 00:53:38.zipにリネームしたら更に解凍出来た。
Lhaplus1.52使用
0666デフォルトの名無しさん
2007/02/09(金) 00:55:48% file q669.zip
q669.zip: gzip compressed data, from Unix
% mv q669.zip q669.gz
% gzip -d q669.gz
% file q669
q669: Zip archive data, at least v1.0 to extract
%
0667デフォルトの名無しさん
2007/02/09(金) 01:05:19解凍できた
06691
2007/02/09(金) 11:14:09http://up2moe.moe.hm/img/q670.txt
06701
2007/02/09(金) 11:16:12関数はほとんど値渡しにしました
でもまだ、動かない
0671デフォルトの名無しさん
2007/02/09(金) 12:30:550672デフォルトの名無しさん
2007/02/09(金) 12:44:06落とせないです><
0673デフォルトの名無しさん
2007/02/09(金) 13:34:04例の二重圧縮に引っかかってるのでは?
0674デフォルトの名無しさん
2007/02/09(金) 14:31:04ざっとしか見てないけど読みやすい
1にも読んで欲しい
0675デフォルトの名無しさん
2007/02/09(金) 15:41:000676デフォルトの名無しさん
2007/02/09(金) 17:32:17すぐにまた書き始めても同じようなものができるだけ。
その前にもっと勉強すべき。
目的だけでなく手段も。
努力が足りなすぎる。
0677デフォルトの名無しさん
2007/02/09(金) 17:53:380678デフォルトの名無しさん
2007/02/09(金) 18:15:01その上で書き直すよう助言しても殆どの場合が無視。これじゃ手伝えないがな。
せめて1の考えてるアルゴリズムが理解できればコーディングはやってみるのだが。
0679デフォルトの名無しさん
2007/02/09(金) 18:16:20今後このスレで大会とかしたら面白いかもね
0680デフォルトの名無しさん
2007/02/09(金) 18:18:55おまえログ見てないor理解してないだろ
0681デフォルトの名無しさん
2007/02/09(金) 18:45:18ところでこれどうやって遊ぶの?
メイクはできたんだけど
0682デフォルトの名無しさん
2007/02/09(金) 18:57:140683デフォルトの名無しさん
2007/02/09(金) 19:19:56slideTopLeft() とかって何ですか
0685デフォルトの名無しさん
2007/02/09(金) 19:27:04他のやつらにやる気を出させてるだろ
0686デフォルトの名無しさん
2007/02/09(金) 19:40:14O turn
moves: D3 C4 F5 E6
ここでF5とかf5とか56とか打っても何もならないんだけど
0687660
2007/02/09(金) 20:01:24すまないがちょっと理由が思い付かない.文字関連かも
とりあえず,HumanPlayer.ccの87行目の strToIndex(...) 内の
return r;
の直前に
cout << r << endl;
を挿入してコンパイルした後,F5と入力したときの出力を教えてほしい.
>>683
盤面の斜めラインを縦に並べるための操作.
verticalScan()で全8列の縦方向の着手可能点を一気に求めているので,
それに合わせるために使います.
Boardクラスは遊び半分でやってみた部分が多いので近々書き直すかも
0688デフォルトの名無しさん
2007/02/09(金) 20:12:10-1075227799
こんなだった
0689デフォルトの名無しさん
2007/02/09(金) 20:14:49int r; を int r = 0; とするか
r += 8*(str[1]-'1'); を r = 8*(str[1]-'1');
とすればいいんだ
これで打てた
0690660
2007/02/09(金) 20:30:04普通にバグだったか…orz
ただこの辺はワイド文字とかに対応してないから書き直した方がいいな
06911
2007/02/10(土) 04:38:53http://up2moe.moe.hm/img/q671.txt
0692デフォルトの名無しさん
2007/02/10(土) 04:44:49期待通りに動かないのは正常。
0693デフォルトの名無しさん
2007/02/10(土) 05:00:40その手段を手段として使えておらずにむしろ足元をすくわれている
0694デフォルトの名無しさん
2007/02/10(土) 05:04:01問題点を指摘してあげるよ。
06951
2007/02/10(土) 05:11:44どうかよろしくお願いします
http://up2moe.moe.hm/img/q673.txt
06961
2007/02/10(土) 05:15:39Fの手番で検索します
0番目から順に8方向探索して、
torerusuが1以上ならばそこにおけると判定します
int serch(board bord ,int z, int F){
int w,l;
for(w=z+1;w<64;w++){
fore(l,8)if(torerusu(bord,w,F,l)>0)break;
if(l<8)return w;}return 64;}
0697デフォルトの名無しさん
2007/02/10(土) 05:16:36説明すれば言ってることと書いてることの違いはわかるけど?
0698デフォルトの名無しさん
2007/02/10(土) 07:46:180699デフォルトの名無しさん
2007/02/10(土) 07:52:08(lp[] を作る意図が不明なので「気がする」という表現にしておく.)
考えていることもろくに説明もせずに「誰かわかりますか?」って(ry
0700デフォルトの名無しさん
2007/02/10(土) 09:35:4311 名前:デフォルトの名無しさん[sage] 投稿日:2007/01/18(木) 19:19:37
質問するときに
〜したいのですが、上手くいきません。
〜したときにエラーが出ます。
という書き方はイクナイ。
何も書いてないのと同じ☆
〜したいのですが、〜で〜が失敗します。
〜したときに〜エラーが出ます。
隠さずくわしくかきましょう
0701デフォルトの名無しさん
2007/02/10(土) 09:42:33出し惜しみしてんじゃないよ。
コード見たりコンパイルするきないけど、
症状からだけでも判断できる場合がある。
0702デフォルトの名無しさん
2007/02/10(土) 09:49:49制御構造が一目(言いすぎか?)で分かる。
0703デフォルトの名無しさん
2007/02/10(土) 09:59:57ちゃんと書かれたソースに関しては、言い過ぎではない。
但し、制御構造さえも置き換えるようなマクロを多用した糞コードでは殆ど無意味。
0704701
2007/02/10(土) 10:03:50あと関係ないけど、
if(torerusu(bord,w,F,l)>0)break;は
if(torerusu(bord,w,F,l))break;でいいんじゃないのか?
serchって取れるかどうかの判断結果だけ返すんだね。
なんか無駄っぽい。
0705デフォルトの名無しさん
2007/02/10(土) 10:11:110706701
2007/02/10(土) 10:15:170707デフォルトの名無しさん
2007/02/10(土) 10:26:25でも、変な英語よりはずっといいでしょ。
0708デフォルトの名無しさん
2007/02/10(土) 10:37:38ついでに改行を適度に入れることの効用.
デバッガで1行毎に動きを追いかけて動作確認できる.
動作確認しているようなことは伝わってはくるが,
デバッガを使い出したら,あの書き方ではろくに動作確認できんと気が付くはず.
また,下手なマクロを書くとせっかくデバッガがあっても無駄になる.
かえって解りにくく,追いかけにくなるようなマクロを書いてどうするんだと
散々指摘されてるんだけどねぇ.
0709デフォルトの名無しさん
2007/02/10(土) 11:10:280710デフォルトの名無しさん
2007/02/10(土) 11:39:00n=z-8*m;
は
n=z % 8;
0711デフォルトの名無しさん
2007/02/10(土) 12:05:307行オセロのソースを見ろよ。
0712デフォルトの名無しさん
2007/02/10(土) 12:10:32これで大丈夫なのか?
0713デフォルトの名無しさん
2007/02/10(土) 12:19:47で正常に1手目は出た。
llp[]の意味するところがわからんから後はどうなるかわからん。
ごみを生産するんじゃない。
0714デフォルトの名無しさん
2007/02/10(土) 12:24:28if(z<64)printf("\n着手可能 %d %d",z/8+1,z%8+1);
0715デフォルトの名無しさん
2007/02/10(土) 12:37:18それはcharだとデバッガで文字として出てくるから。
0716デフォルトの名無しさん
2007/02/10(土) 12:43:38int serch(board bord ,int z, int F)
{
int w,l;
for(w=z+1;w<64;w++)
{
fore(l,8)
{
if(torerusu(bord,w,F,l)>0)return w;//break;なんなの?
}
//if(l<8)return w;これなんだ?
}
return 64;
}
0717デフォルトの名無しさん
2007/02/10(土) 13:11:45mtのfor(;;)for(;;){
って意味あるの?
0718デフォルトの名無しさん
2007/02/10(土) 13:31:44continueを知らないだけだ!
0719デフォルトの名無しさん
2007/02/10(土) 13:44:10break など使うものか!意地でも goto を使うんだ!
という意志の表れと見た。
0720デフォルトの名無しさん
2007/02/10(土) 13:48:05continueしらないだけ。
0721デフォルトの名無しさん
2007/02/10(土) 14:18:570722デフォルトの名無しさん
2007/02/10(土) 14:38:090723デフォルトの名無しさん
2007/02/10(土) 14:46:100724デフォルトの名無しさん
2007/02/10(土) 14:54:560725デフォルトの名無しさん
2007/02/10(土) 14:56:3207261
2007/02/10(土) 17:40:47>>699>>713
lpは、周囲のマスを表すんです -9,-8,-7,-1,1,7,8,9となっていればOKなんですが
ここが、間違っていますかね?
>>704
if()は中身が正だったら真なんですか 1だけだと思ってました
>>708
マクロ使う理由は、関数に出来ないからなんですよ
breakとかreturnを使うと呼び出した関数側でリターンしてしまいます(remove()とか)
>>710
%を使うとやたらに鈍くなる可能性があります そこはz&7にした方がいいですね
>>716
すぐにリターンした方がいいですね
>>722
わかりました PASSにします
07271
2007/02/10(土) 17:49:16差し手の生成上手くいきました
fore(l,8){ if(l>3)i=l+1;m=i/3-1;n=i%3-1;lp[l]=8*m+n;}の部分を
fore(l,8){ if(l>3)i=l+1; else i=l;m=i/3-1;n=i%3-1;lp[l]=8*m+n;}
に変更したら上手くいきました
http://up2moe.moe.hm/img/q678.txt
0728デフォルトの名無しさん
2007/02/10(土) 17:52:410729デフォルトの名無しさん
2007/02/10(土) 17:58:590730デフォルトの名無しさん
2007/02/10(土) 18:03:07問題外のソースの断片を貼らないでください。
07311
2007/02/10(土) 18:30:51下のfnc内で他のメンバ関数(ここでは (z,F)ですが) を使いたいんですけど
(z,F)と書けば、呼び出せますか?またAAA()の場合もそのままかけるんでしょうか?
class board {
unsigned int bd[3][2];
public:
int operator()(int z, int F){int m;m=z>>5;z=z&31;return (bd[F][b]>>z)&1;}
int AAA(){}
void fnc() { ・・・}
};
0732デフォルトの名無しさん
2007/02/10(土) 18:32:4907331
2007/02/10(土) 18:42:33なぜでしょうか?
24を表示してほしいのですが、4となります
#include <stdio.h>
class board {
int a;
public:
int operator()(int x, int y, int z){return x*y*z;}
int fnc(){return (3,2,4);}
};
main(){
board x;
printf("%d\n",x.fnc());
}
07341
2007/02/10(土) 18:43:510735デフォルトの名無しさん
2007/02/10(土) 18:45:080736デフォルトの名無しさん
2007/02/10(土) 18:48:010737デフォルトの名無しさん
2007/02/10(土) 18:49:08そういう内容ではなかったのね
0738デフォルトの名無しさん
2007/02/10(土) 18:49:51だから一行にまとめてしまってるんだし
0739デフォルトの名無しさん
2007/02/10(土) 18:50:19int fnc(){return (*this)(3,2,4);}
0740デフォルトの名無しさん
2007/02/10(土) 18:50:57前>>1は、いったいいつになったら日本語でアルゴリズムを書けるようになるんだろうな。
07411
2007/02/10(土) 18:51:42ここです
関数呼び出し演算子
http://homepage2.nifty.com/well/Operator.html#paren
>>736
他のメンバ関数の呼び出し方を知りたいんですが
07421
2007/02/10(土) 18:53:57わかりました!ありがとうございます
*thisは省略できるものだと思っていたのですがつけないと駄目みたいですね
0743デフォルトの名無しさん
2007/02/10(土) 18:55:4907441
2007/02/10(土) 18:58:55727の10行目で使ってますよ
0745デフォルトの名無しさん
2007/02/10(土) 19:01:37C++ってこんなクソ仕様があるんだ・・・
こんなの使ったら、ホントに作ったやつじゃねーと解読できない
プログラムになっちゃうよ・・・・
とくに、>>1みたいな初心者が、無意味に多用したがるからな
0746デフォルトの名無しさん
2007/02/10(土) 19:08:020747デフォルトの名無しさん
2007/02/10(土) 19:24:220748デフォルトの名無しさん
2007/02/10(土) 19:37:53lpは各方向のマスへのオフセットだろ。
ifでの真偽は、0で偽それ以外で真。
removeにbreakを入れないほうがイイ。
場合によってcontinueとbreakの使いわけができるようになる。
わけの分からんforを省ける。それとfor(;;cnt++)。
あとremoveの2つ目のreturnの判定は不要じゃないか?
よく分からんけど
0749デフォルトの名無しさん
2007/02/10(土) 19:40:150750デフォルトの名無しさん
2007/02/10(土) 19:50:510751デフォルトの名無しさん
2007/02/10(土) 19:52:410752デフォルトの名無しさん
2007/02/10(土) 19:55:32あと board bordとかも。
0753デフォルトの名無しさん
2007/02/10(土) 19:55:460754デフォルトの名無しさん
2007/02/10(土) 19:58:12gameクラスにグローバル変数ぶちこんで、susumu、removeも関数に直した。
gotoは直してないけどな…
printfがあちこちにぶち込んであるからぼろぼろだけどな。
0755デフォルトの名無しさん
2007/02/10(土) 20:01:060756デフォルトの名無しさん
2007/02/10(土) 20:05:46これって関数風に使う場合だしな。
[ ]のほうがあってると思うけどな。
0757デフォルトの名無しさん
2007/02/10(土) 20:48:10serch()が普通に近づいたってことだろ
0758デフォルトの名無しさん
2007/02/10(土) 21:01:190759デフォルトの名無しさん
2007/02/10(土) 21:06:460760デフォルトの名無しさん
2007/02/10(土) 21:07:48>よりオブジェクト指向で書き直すことにしました ちょっと待っててくださいね
それよりも SourceForge あたりにプロジェクト作ってみ?
と言ってみるテスト.
0761デフォルトの名無しさん
2007/02/11(日) 16:23:040762デフォルトの名無しさん
2007/02/11(日) 16:26:340763デフォルトの名無しさん
2007/02/11(日) 16:49:210764デフォルトの名無しさん
2007/02/11(日) 16:57:28まだ結果は出てないし
0765デフォルトの名無しさん
2007/02/13(火) 16:36:150766デフォルトの名無しさん
2007/02/13(火) 17:05:19文字をランダムに出力してシェイクスピアのオセロが完成する確率よりは遥かに大きい確率で勝てるものが作れる
0767デフォルトの名無しさん
2007/02/13(火) 17:36:050768デフォルトの名無しさん
2007/02/13(火) 17:47:43打てる中で一番多くひっくり返せる手を選ぶようにした。
思考に数秒かかる。
こんなんでも、それなりに面白い。
0769デフォルトの名無しさん
2007/02/13(火) 17:50:180770デフォルトの名無しさん
2007/02/13(火) 17:52:090771デフォルトの名無しさん
2007/02/13(火) 18:30:100772デフォルトの名無しさん
2007/02/13(火) 21:02:000773デフォルトの名無しさん
2007/02/13(火) 21:03:510774デフォルトの名無しさん
2007/02/13(火) 21:18:42アドレス計算が高速,
関数の値として返せる,
引数の個数が減る,
位かな.絶対有利と言っていいと思う
0775デフォルトの名無しさん
2007/02/13(火) 22:00:54なるほど。
初めて作ったんだけど、>>496さんのを見て、1次元配列だったからちょっとびっくりした。
0776デフォルトの名無しさん
2007/02/13(火) 22:23:178x8なら絶対有利と言うほどはないんじゃないかなぁ。
まあ10x10とかの手法使ってるなら絶対有利かもしれんが。
0777デフォルトの名無しさん
2007/02/13(火) 22:54:54関数にポインタ渡すときの宣言が嫌い
0778デフォルトの名無しさん
2007/02/13(火) 23:06:490779デフォルトの名無しさん
2007/02/13(火) 23:30:200780デフォルトの名無しさん
2007/02/13(火) 23:47:400781769
2007/02/14(水) 00:37:59http://555.sytes.net/up/img/414.zip
0782デフォルトの名無しさん
2007/02/14(水) 00:55:210783デフォルトの名無しさん
2007/02/14(水) 00:59:04いい感じですね。
0784デフォルトの名無しさん
2007/02/14(水) 01:04:43dllの追加について何かヒントきぼん
0785デフォルトの名無しさん
2007/02/14(水) 01:26:02.net系の言語でプロジェクトの参照にRevPlugin.dllを追加、
RevPlugin.dll内にあるRev.IPlayerを実装したクラスを一つ以上作る、
それdllにしてPluginフォルダにぶちこむ、
でOKです。
SampleAIプロジェクトのRandomAI.csとかを参考にしてください。
0786デフォルトの名無しさん
2007/02/14(水) 01:26:46Interfaces.csにインターフェースが定義されてるから
これ実装すればいいんじゃない?
てかソース見てみよう。
0787デフォルトの名無しさん
2007/02/14(水) 01:28:50もまいらがんばってくれ
0788デフォルトの名無しさん
2007/02/14(水) 01:30:55思考部分を Unix でコンパイルするにはどうすれば?
0789デフォルトの名無しさん
2007/02/14(水) 01:32:20C#ていう言語。
monoで使えるかも?
0790デフォルトの名無しさん
2007/02/14(水) 01:34:12C# と mono ですか。調べてみます。�d
0791デフォルトの名無しさん
2007/02/14(水) 01:40:13独自のGUIも既にありますけど、
これに対応すれば他の人が作ったのと対戦しやすそうですね。
0792デフォルトの名無しさん
2007/02/14(水) 01:46:41AIは適当に作った物なのでコンパイルする価値無いかも・・・
0793デフォルトの名無しさん
2007/02/14(水) 02:12:42初期化エラーになります><
0794デフォルトの名無しさん
2007/02/14(水) 02:27:520795デフォルトの名無しさん
2007/02/14(水) 07:53:42dllならC++で作って読ませることもできるかな?
0796デフォルトの名無しさん
2007/02/14(水) 12:42:22これ良いですね。
MinMaxAIに勝てないし、昔自作したオセロプログラムで対戦しても歯が立たないorz
出来れば、のお願いが2つ。
・初期配置を逆にしてほしい。
・直前手を表示してほしい。(印を付けるとか)
オセロルールでは初期配置が逆なので上記のようにソフトを2つ並べて
手動で対戦するときにそのほうが都合が良いので。
勝手言ってすまん。
0797デフォルトの名無しさん
2007/02/15(木) 00:10:130798デフォルトの名無しさん
2007/02/15(木) 00:19:000799デフォルトの名無しさん
2007/02/15(木) 00:27:310800デフォルトの名無しさん
2007/02/15(木) 00:51:560801デフォルトの名無しさん
2007/02/15(木) 02:50:08>>799
0802デフォルトの名無しさん
2007/02/15(木) 14:35:040803デフォルトの名無しさん
2007/02/15(木) 14:37:25置けるコマの数?
0804デフォルトの名無しさん
2007/02/15(木) 14:55:36全ての評価要素には係数を掛けて和を取る。
この係数は、局面と教師信号を大量に用意して評価値と
教師信号の誤差が最小になるように最小二乗法で求める。
0805デフォルトの名無しさん
2007/02/15(木) 15:03:21う〜ん、難しそう。
0806デフォルトの名無しさん
2007/02/15(木) 15:29:36ttp://fujitake.dip.jp/sealsoft/thell/algorithm.html
このページの下のほうに評価関数についての説明があるよ。
>>804
問題は、データの多さなんだよね。
強さを求めるには仕方のないことかもしれないけど、
思考部分のプログラムが(高速化のために展開していたとしても)数百KB程度に対して、
評価用のデータが10MB↑とかになるのがね...
0807デフォルトの名無しさん
2007/02/15(木) 15:44:12サンクス
0808デフォルトの名無しさん
2007/02/15(木) 16:42:53「リバーシプログラムの作り方」に入ってるプログラムは
比較的コンパクトで精度のいい評価関数だと思う。
標準的なパターン(ロジステロとかの)より小さくて最大で8マス分なのと
ゲームの段階によってステージ分けしてないので小さくしてる。
0809デフォルトの名無しさん
2007/02/15(木) 17:06:10できる人頼む
0810デフォルトの名無しさん
2007/02/15(木) 17:26:110811デフォルトの名無しさん
2007/02/15(木) 17:32:19最後までいかんのがなあ
08121
2007/02/15(木) 18:09:40待っててください
0813デフォルトの名無しさん
2007/02/15(木) 18:11:32もういいよ
0814デフォルトの名無しさん
2007/02/15(木) 18:14:10なんの目的でオブジェクト指向にするのかもう一度聞かせてくれ
08151
2007/02/15(木) 18:20:0408161
2007/02/15(木) 18:27:160817デフォルトの名無しさん
2007/02/15(木) 18:38:22プログラムがわかりにくいのは、それがオブジェクト指向でないから
となる。
しかし、これは明らかにおかしい
ゆえに1は明らかにおかしい
完
0818デフォルトの名無しさん
2007/02/15(木) 18:57:330819デフォルトの名無しさん
2007/02/15(木) 21:01:07単純なはずのベルトコンベアさえ迷路状態にしてしまう >1 が、あろう事かピタゴラ
装置にまで手を出せば、もっと手の付けられないものが出来上がるのは明らか。
0820デフォルトの名無しさん
2007/02/15(木) 21:12:020821デフォルトの名無しさん
2007/02/15(木) 21:15:19理解してもらえないとでも思ってるんだろ
0822デフォルトの名無しさん
2007/02/15(木) 21:39:330823デフォルトの名無しさん
2007/02/15(木) 21:40:41よくわかりました
0824デフォルトの名無しさん
2007/02/15(木) 21:41:23そう言えば、昔AppleJapanのコピーで「小学生になろう」ってのがあったな。
0825デフォルトの名無しさん
2007/02/15(木) 21:51:34どこかで見聞きした事をそのまま言うのはできるんでしょ
0826デフォルトの名無しさん
2007/02/15(木) 22:23:42ルーブ・ゴールドバーグ・マシン (Rube Goldberg machines)っていったらわかる?
バック・トゥ・ザ・フューチャーの最初のシーンみたいなやつ。
0827デフォルトの名無しさん
2007/02/15(木) 22:47:51けどググったらわかった
なるほど確かにそんな感じだね
0828デフォルトの名無しさん
2007/02/15(木) 22:57:31しかもどれが何のスイッチか一切分からない。
0829デフォルトの名無しさん
2007/02/15(木) 23:24:51むしろ分からなくなった
0830デフォルトの名無しさん
2007/02/15(木) 23:31:36対偶を勉強しなおせ
0831デフォルトの名無しさん
2007/02/15(木) 23:46:33例えば、何らかの誤作動を直したり
一部を拡張しようとした場合
スイッチだけが出ていれば、押す順番なんて簡単に変えられる
だが、スイッチの順番を変える為だけに
ドミノをひたすら並び替え直す必要があったり
スイッチを押す順番によって動作が変わってしまったり
そもそも何のスイッチか分かりにくかったり
0832デフォルトの名無しさん
2007/02/15(木) 23:52:24つttp://flowmachine.free.fr/wiiflow/wii4/lunchtime.swf
0833デフォルトの名無しさん
2007/02/15(木) 23:53:450834デフォルトの名無しさん
2007/02/16(金) 00:05:080835デフォルトの名無しさん
2007/02/16(金) 00:05:26どっかに車の部品でやるやつもあったな
0836デフォルトの名無しさん
2007/02/16(金) 00:16:54これだった
スレ違いだがな
0837デフォルトの名無しさん
2007/02/16(金) 00:58:15学習量増やしたら弱くなっちゃった。
過学習ってやつ?
0838デフォルトの名無しさん
2007/02/16(金) 01:33:470839デフォルトの名無しさん
2007/02/16(金) 08:41:290840デフォルトの名無しさん
2007/02/16(金) 15:13:160841デフォルトの名無しさん
2007/02/16(金) 15:33:52探索の深さで決まるってこと?
だとすると、1はその中で何をしているの?
0842デフォルトの名無しさん
2007/02/16(金) 15:43:380843デフォルトの名無しさん
2007/02/16(金) 15:47:01面白いんだがw
0844デフォルトの名無しさん
2007/02/16(金) 15:50:49評価関数がデタラメだから意味の無い局面だけ深い探索をしてる
0845デフォルトの名無しさん
2007/02/16(金) 16:14:42ヒント:ベンチマーク
0846デフォルトの名無しさん
2007/02/16(金) 17:43:150847デフォルトの名無しさん
2007/02/16(金) 17:59:380848デフォルトの名無しさん
2007/02/16(金) 18:24:44ゼブラとはオセロプログラムの事ですよ。
http://www.radagast.se/othello/download.html
0849デフォルトの名無しさん
2007/02/16(金) 22:48:51って奴か。
次はゼブラゾーンから取って 横断歩道という名前はなしですか。
なしです。
0850デフォルトの名無しさん
2007/02/17(土) 12:38:490851デフォルトの名無しさん
2007/02/17(土) 15:18:02後継サーバであるGGSの棋譜はあります。
http://www.cs.ualberta.ca/~mburo/GGS/game-archive/Othello/
こっちのほうが質も量も優れていると思います。
ただ人間の棋譜や試合中で途切れている棋譜なども含まれているので
一定の条件で抽出したほうがいいと思います。
0852デフォルトの名無しさん
2007/02/17(土) 15:34:53GGSの方にはIOSの棋譜がマージされてるんかな?
とりあえずいろいろいじってみるよ
0853デフォルトの名無しさん
2007/02/17(土) 16:44:21あと評価関数作りにはこの棋譜も役立つと思います。
http://abulmo.club.fr/resources/base.htm
0854デフォルトの名無しさん
2007/02/17(土) 22:11:350855デフォルトの名無しさん
2007/02/17(土) 22:36:4408561偽
2007/02/17(土) 22:40:0108571
2007/02/17(土) 23:03:020858デフォルトの名無しさん
2007/02/17(土) 23:11:350859デフォルトの名無しさん
2007/02/19(月) 16:52:020860デフォルトの名無しさん
2007/02/19(月) 16:56:090861デフォルトの名無しさん
2007/02/19(月) 17:11:410862デフォルトの名無しさん
2007/02/19(月) 20:17:520863デフォルトの名無しさん
2007/02/19(月) 20:39:290864デフォルトの名無しさん
2007/02/19(月) 20:49:4408651偽
2007/02/19(月) 21:00:450866デフォルトの名無しさん
2007/02/19(月) 22:26:280867デフォルトの名無しさん
2007/02/19(月) 22:42:000868デフォルトの名無しさん
2007/02/19(月) 22:59:010869デフォルトの名無しさん
2007/02/19(月) 23:25:440870デフォルトの名無しさん
2007/02/19(月) 23:58:32とりあえずの目標は781で動くdllの実装
0871デフォルトの名無しさん
2007/02/20(火) 00:07:280872デフォルトの名無しさん
2007/02/20(火) 01:57:360873デフォルトの名無しさん
2007/02/20(火) 05:10:150874デフォルトの名無しさん
2007/02/23(金) 00:16:370875デフォルトの名無しさん
2007/02/24(土) 01:36:450876デフォルトの名無しさん
2007/02/24(土) 08:38:23ある意味予想通りだが
0877デフォルトの名無しさん
2007/02/24(土) 11:35:240878デフォルトの名無しさん
2007/02/24(土) 11:38:280879デフォルトの名無しさん
2007/02/24(土) 15:05:29IT業界で入ってはいけない会社の条件を教えて
http://science6.2ch.net/test/read.cgi/infosys/1172129460/
0880デフォルトの名無しさん
2007/02/27(火) 20:19:490881デフォルトの名無しさん
2007/02/28(水) 02:09:37進捗状況を聞かせて欲しい
08821
2007/03/04(日) 06:16:16うまく動かなくて顔出せんかった
プログラムとデバックに向いていないとおもう(経験不足)
継続して作ってはいるんだけど......
あと囲碁、将棋も攻略する予定はあるんだ
ネタはあるので、データ構造と処理内容だけを記したら分業制でやってくれる人はいますか?
一人では、一つ完成させるのに半年以上かかりそう
0883デフォルトの名無しさん
2007/03/04(日) 06:36:54○ これこれこういうアルゴリズムなのですが、興味のある人はぜひコーディングしてみて下さい。
◎ (どこどこのうpろだ) に、データ構造と処理内容を記した仕様書(テキストファイル等)をアップロードしました。興味のある人は(以下略
いったい何ヶ月前から↑の通りにしろと言われていたのか、まさか気づいてないのか?
08841
2007/03/04(日) 07:14:35わかった
仕様書かくんでちょっと待っててください
オセロはオブジェクト指向で書き直したんだけど動かないよ
http://up2moe.moe.hm/img/q875.txt
あまりに動かないんで、
オセロは、やめて将棋にしようかと思ってきたんだけど
将棋を一から開発していくっていう方向でもいいですか?
0885デフォルトの名無しさん
2007/03/04(日) 07:50:040886デフォルトの名無しさん
2007/03/04(日) 07:53:27>オブジェクト指向で書き直したんだけど
オブジェクト指向で書き直す以前の問題。
C,C++の仕様すら理解してないんじゃないかな?
プログラムの書き方からデバッグのしかたを一から(ry
>あまりに動かないんで、
>オセロは、やめて将棋にしようかと思ってきたんだけど
>将棋を一から開発していくっていう方向でもいいですか?
無謀。
将棋は駒を取る、打つ、成、不成。オセロよりはるかに
局面の変化が多彩で難しいと思うけど?
0887デフォルトの名無しさん
2007/03/04(日) 08:03:041がマトモには何もできないってことはみんな知っているし、
それを知った上でのネタスレとして楽しんでるんじゃないの?
08881
2007/03/04(日) 08:05:43早い and やる気が出る、かと思ったんですが...
デバッグとコーディングをのぞけば、アルゴリズムはかなり前から出来ているんです
オセロより作成期間が長いんです
0889デフォルトの名無しさん
2007/03/04(日) 08:17:360890デフォルトの名無しさん
2007/03/04(日) 08:21:1608911
2007/03/04(日) 08:29:57では、将棋をみんなで作るという事でOKですかね?
0892デフォルトの名無しさん
2007/03/04(日) 08:32:07リバーシに決まってんだろ
08931
2007/03/04(日) 08:37:35分業制でやれば実現しますよ!
囲碁はですね、今までに無いやり方だと思いますよ
簡単に説明しますと
まず、19*19盤を、類似した5*5盤とか、7*7盤に縮小するんです
すると置けるマスは25〜50マス程度で、
普通のMTDとかPNSとかが通用しやすくなるんです
あらかた、置く位置を決めたら元に戻して、その周囲で詳しく調べるんです
0894デフォルトの名無しさん
2007/03/04(日) 08:40:07PVSの間違いか?
08951
2007/03/04(日) 08:41:15証明数探索ですよ
0896デフォルトの名無しさん
2007/03/04(日) 08:42:420897デフォルトの名無しさん
2007/03/04(日) 08:43:2708981
2007/03/04(日) 08:45:03Research Re: search & Re-search
PhD thesis; 1996
Aske Plaat
http://www.cs.vu.nl/~aske/Papers/thesis.zip
0899デフォルトの名無しさん
2007/03/04(日) 08:46:4009001
2007/03/04(日) 08:48:45CSA将棋
http://www2.ttcn.ne.jp/~tsuma/download.htm
CgfGoBan(囲碁用)
http://www32.ocn.ne.jp/~yss/cgfgoban_j.html
BearRev Professional (オセロ用)
http://www20.pos.to/~sleipnir/software/bearreversi/index.html
0901デフォルトの名無しさん
2007/03/04(日) 08:51:33もっと色々集めてよ
0902デフォルトの名無しさん
2007/03/04(日) 09:15:540903デフォルトの名無しさん
2007/03/04(日) 09:43:46まともに仕様書を書いた事が無い奴の仕様書
0904デフォルトの名無しさん
2007/03/04(日) 10:24:42そういうの
0905デフォルトの名無しさん
2007/03/04(日) 10:50:500906デフォルトの名無しさん
2007/03/04(日) 10:58:02○ 仕様書は出てこない
◎ 家から出てこない
0907デフォルトの名無しさん
2007/03/04(日) 15:24:450908デフォルトの名無しさん
2007/03/04(日) 15:59:16分業する気はまったくないが。
たぶん>>1は大器晩成なんだと思う。
いつ頃晩成するのかは予測不能だけど。
>>1の打たれ強さは今まで見た中で5本の指に入る。
この調子でスレを消化していけば、囲碁・将棋・リバーシに
取って代わるテーブルゲームができるかもしれないかもしれないな。
0909デフォルトの名無しさん
2007/03/04(日) 18:58:440910デフォルトの名無しさん
2007/03/04(日) 19:05:48新しいゲーム、やってみたいぞ!
0911デフォルトの名無しさん
2007/03/04(日) 19:32:500912デフォルトの名無しさん
2007/03/04(日) 20:19:20オセロや将棋などのアルゴリズムのプログラミングはC言語で作るのが常識なのでしょうか?
Javaとか他の言語では無理ですか?
アルゴリズム自体は言語に依存するものではない
言語によって実装は異なるが、根底の考え方は違わない
速度、実行する環境、自分達が使える言語、DirectXを使えるか、などで
言語を含めて開発環境はだいたい決まってくる
09141
2007/03/04(日) 21:03:19Javaでもなんでも出来るけど、速度はcが一番では?ややアセンブラより鈍いかも
分担作業で出来るようにモジュールを分割して
最低2人が一つのモジュールを作成し
2名が同じ出力を出したら正常であるとしましょう
0915デフォルトの名無しさん
2007/03/04(日) 22:07:270916912
2007/03/05(月) 01:47:49ありがとうございます。
速度で差が出るということですね
どうせやるなら上を目指したいのでCでやってみようと思います
0917デフォルトの名無しさん
2007/03/05(月) 01:54:36分業だの分担だの言ってるが、他人と同じスタイルにしたり、他人の書いた
プログラムをちゃんと理解できるまで自己鍛錬するつもりはあるのか?
>624-625 みたい嘗めた真似するんじゃないのか?
0918デフォルトの名無しさん
2007/03/05(月) 01:57:21結果で判断すればいいんじゃね?
エンドユーザーになったって事だろ
0919デフォルトの名無しさん
2007/03/05(月) 05:04:30現在トップクラスのプログラムで使われている言語はC,C++,Managed C++。
言語はCでいいと思うよ。GUIも作るならC++かな。
GUIははじめベアリバーシでもいいけど続けていればそのうち物足りなくなると思うよ。
アセンブリは全く使わなくていい。
コンパイラに最適化を任せれば3倍以上速くなる事もある。
あと英語は必須。
0920デフォルトの名無しさん
2007/03/05(月) 09:46:08本気で作るならGoGUI使え
0921デフォルトの名無しさん
2007/03/05(月) 11:21:350922デフォルトの名無しさん
2007/03/06(火) 01:05:54このスレに張ってあるリンクがすごく役に立った。
暇つぶしの産物だから全然最強じゃないけど、面白かったよ。
例によって棋譜を読ませてパターンの点数を最適化するんだけど、
棋譜をちょっとずつ(といっても数千局単位)読み込ませると、
だんだん強くなるのが楽しい。
遅いマシンでやってるので数千局読み込ませるのに何時間もかかったりしてるが、
それもまた楽し。
んで更新された評価関数を使って対戦して、
「ぉお、定石ルーチンないのに定石打ってくる!」とか
「この隅の形は見たことないのか。これで互角だと思ってるな、バカめ」とかやってる。
つまり何が言いたいかというと、>>1をいじくるのもいいけど
みんなプログラム作ってみたらってことだ。
0923デフォルトの名無しさん
2007/03/06(火) 01:46:44自分はこのスレ関係なく昔からこの分野の研究をしてる。
君みたいな仲間が増えてうれしいよ。
0924デフォルトの名無しさん
2007/03/07(水) 00:12:56そのソースは貼ってはもらえんのじゃろうかのぅ
0925デフォルトの名無しさん
2007/03/07(水) 00:58:44どうせまたダメなんだから
0926922
2007/03/07(水) 11:02:07このスレを専門の方が見てるとは…。
仲間なんて言っていただいたら恐縮してしまいます。
私はたまに遊びでプログラムを作る程度なんですが、
今回のリバーシは楽しくてこの趣味やっててよかったと思いました。
>>924
アップするのはかまいませんが、ソース汚いですよ…?
デバッグのためのprintfがいっぱい残ってますし。
あと、ほとんどCで書いたんですが、C++の機能をほんの一部だけ使うために
C++のコンパイラでないとコンパイルできなくなってます。
他人に見せるなんて全く考えず作ったので。
それでもいい?
0927デフォルトの名無しさん
2007/03/07(水) 11:12:460928デフォルトの名無しさん
2007/03/07(水) 17:46:330929デフォルトの名無しさん
2007/03/07(水) 18:10:180930922
2007/03/08(木) 11:48:54http://up2moe.moe.hm/link.php?id=900
>>927
後は頼んだw
0931922
2007/03/08(木) 12:07:16FreeBSDで作ってます。
ソース中のコメントはEUC、改行はLFです。
GUIを作るのは面倒なのですべてCUIです。
main.cの中で時間を計る部分は他のシステムだと動かないかもしれません。
その場合はclock()を使って適当に直してください。
makeするとreve、learn_pattern_weight、ffo_endgame_testの3つのプログラムができます。
それぞれ対戦、棋譜を読んで学習、FFO endgame testを行います。
対戦するためにパターンファイルが必要なので、とりあえず動かすには
適当なwtbファイルを用意して、
./learn_pattern_weight パターンファイル wtbファイル
を実行してパターンファイルを作る必要があります。
序盤、中盤の思考ルーチンはnegamax.c、
終盤の読み切りルーチンはendgame_solver.c、
パターンの点数に関する処理はpattern.cです。
序盤、中盤では反復深化MTD(f)、終盤の読み切りではscoutを使ってます。
参考にしたものはこのスレに張ってあるリンクのページのみです。
他のプログラムのソース等は読んでないので内容を誤読している可能性ありです。
特にendgame_solver.cのPVSは、Thellのアルゴリズム解説の数行を読んだだけで
作ったので、たぶん間違ってます(scoutより遅いし)。
0932デフォルトの名無しさん
2007/03/08(木) 12:14:20c++ -o ffo_endgame_test
c++: no input files
make: *** [ffo_endgame_test] エラー 1
こんなになって失敗する。
あとffo_endgame_test.cにstring.hとtime.hをincludeしないと駄目だった。
0933デフォルトの名無しさん
2007/03/08(木) 12:18:09string.hはmain.cとlearn_pattern_weight.cにも必要だった。
0934デフォルトの名無しさん
2007/03/08(木) 14:48:22本当にこのスレが立ってから始めたの?
すごいね。感心した。
0935デフォルトの名無しさん
2007/03/09(金) 00:48:53やっぱりちょっと恥ずかしかった。
お目汚しスマソ
>>932-933
ご指摘どうもです。
time.hはたぶん
random_seed=time(NULL)
のためですが、random_seedはそのあと全く使われてないので(爆)
消しちゃっていいと思います。
あと、そういえばFreeBSDのmakeはgmakeじゃないんでした。
>>934
作り始めたのはこのスレが立ってからです。
でもαβ枝刈りについては知ってたので終盤読み切りルーチンあたりは
すぐに作れました。
読み切りルーチンといえば、>>931で参考にしたのはこのスレだけと
えらそうに言っちゃってますが、ビット演算スレも参考にしてました。
いや、参考にしたというか、どのルーチンも全部
アルゴリズムをそのままパクってコーディングしただけなんですが。
0936デフォルトの名無しさん
2007/03/09(金) 14:40:560937デフォルトの名無しさん
2007/03/09(金) 20:00:18コーディングトラブルの約70%はif文などでの{}省略
http://pc11.2ch.net/test/read.cgi/tech/1173416521/
0938デフォルトの名無しさん
2007/03/09(金) 21:26:38そんなに間違いやすいか?
0939デフォルトの名無しさん
2007/03/10(土) 00:46:1509401
2007/03/10(土) 11:37:12メモ代わりにここに書き込んで言って意見を聞きながらまとめることにします
09411
2007/03/10(土) 13:00:5112 bit でいけそうです
z = x + 9yに対して、zを駒の移動先として、そこへ移動可能なマスに
対して順に番号をつけていきます
桂と成の移動も含めても4096番まで足りるはずです
0942デフォルトの名無しさん
2007/03/10(土) 13:23:53スレ違い
こっち行け
http://pc11.2ch.net/test/read.cgi/tech/1109307327/l50
09431
2007/03/10(土) 13:29:31オセロは、少し休むんです(うまく動かずやる気が落ちてきた為)
なのでスレ違いではないんですよ
0944デフォルトの名無しさん
2007/03/10(土) 13:43:45スレ違い
こっち行け
http://pc11.2ch.net/test/read.cgi/tech/1109307327/l50
0945デフォルトの名無しさん
2007/03/10(土) 13:57:09アホか
将棋スレでやれ
0946デフォルトの名無しさん
2007/03/10(土) 18:39:19スレ違いだ。死ね
0947デフォルトの名無しさん
2007/03/10(土) 18:51:13おまいのプロジェクトすれでも建てろ
0948デフォルトの名無しさん
2007/03/10(土) 19:12:54でもそこまでされる>>943に同情はできねえ
0949デフォルトの名無しさん
2007/03/10(土) 23:19:48リバーシを捨てた 1 にこのスレに残れる余地は僅かたりとも無い。
0950デフォルトの名無しさん
2007/03/10(土) 23:46:180951デフォルトの名無しさん
2007/03/11(日) 14:10:060952デフォルトの名無しさん
2007/03/11(日) 15:17:110953デフォルトの名無しさん
2007/03/11(日) 20:10:120954デフォルトの名無しさん
2007/03/12(月) 02:23:250955デフォルトの名無しさん
2007/03/12(月) 02:37:38pmakeないから作れないけど。。
0956デフォルトの名無しさん
2007/03/12(月) 15:11:20これはね、鈍感なだけなんだよ。
0957デフォルトの名無しさん
2007/03/12(月) 15:54:370958デフォルトの名無しさん
2007/03/12(月) 16:24:170959デフォルトの名無しさん
2007/03/12(月) 18:25:47それは目先の小さなことにこだわらない、という意味の言葉だろ
でも>>1はただの空気読めないやつ
0960デフォルトの名無しさん
2007/03/12(月) 21:51:37でも将棋には興味ないから移らない。
将棋はある程度定石覚えたらそこそこのレベルになると聞いたけどどうなんだか。
>>1は定石否定派だったな。。。
09611
2007/03/13(火) 12:41:14printfで途中にはさんで値を見るのしかわからない
09621
2007/03/13(火) 12:45:19オセロが全然出来上がらない
MTDとPN-サーチの動作確認のためだったのだが動かない
そして、仕様書も、オセロも将棋を出来上がらない
やはり自力でオセロを完成するしかないか
09631
2007/03/13(火) 12:59:21使い方がわかりません
ソースコードを順にたどっていくやつがいいんですが
アセンブラをたどっていくのは駄目です
0964デフォルトの名無しさん
2007/03/13(火) 13:24:440965デフォルトの名無しさん
2007/03/13(火) 13:32:25ソースレベルでデバッグするには、コンパイラが埋め込むデバッグ情報が必要。
ところがデバッグ情報はコンパイラごとにまちまちで互換性がない。
したがって、殆どの場合コンパイラとセットになったデバッガを使う必要がある。
それが具体的に何かは、使っているコンパイラが分からないと言えない。
09661
2007/03/13(火) 13:38:44前者は、アセンブラが出てきます 訳がわかりません
後者は、ソースコードをたどるようですが、使い方はよくわかりません
デバックのやり方が不明です
09671
2007/03/13(火) 13:40:19そして自作のコードに行きません
0968デフォルトの名無しさん
2007/03/13(火) 13:41:050969デフォルトの名無しさん
2007/03/13(火) 13:42:3409701
2007/03/13(火) 13:46:58ここにかいてある事をマスターすれば使えるようになるなるんでしょうか?
09711
2007/03/13(火) 13:49:41ひとつひとつ、各モジュールの動作確認はしていないんです
やり方が不明なんです
0972デフォルトの名無しさん
2007/03/13(火) 14:20:41あんたの場合、デバッガの使い方を覚える手間の代わりに人の意見に耳を傾けるといい。
まぁ、最悪printf()デバッグでだってデバッグはできるさ。
0973デフォルトの名無しさん
2007/03/13(火) 14:20:47これができないと先へ進めない
09741
2007/03/13(火) 14:48:52ブレークポイントの設定でかなりいい状態になりましたよ
これで調べたいところが調べられそうです
0975デフォルトの名無しさん
2007/03/13(火) 14:50:44コンストラクタ等の c++ の基本動作が根本的に分かってない予感。
0976デフォルトの名無しさん
2007/03/13(火) 14:55:14・カーソル行の前まで実行
・F10
・F11
0977デフォルトの名無しさん
2007/03/13(火) 15:00:42その次は条件付ブレークポイント
09781
2007/03/13(火) 15:05:24これでかなり進展しそうです みんないいやつだ
0979デフォルトの名無しさん
2007/03/13(火) 16:30:060980デフォルトの名無しさん
2007/03/13(火) 16:31:400981Anonymous
2007/03/13(火) 20:10:35http://pc11.2ch.net/test/read.cgi/tech/1173784074/
0982デフォルトの名無しさん
2007/03/13(火) 20:16:300983922
2007/03/13(火) 21:08:35Makefile の $> を $^ に書き換えたらgmakeでもmakeできるみたい。
アップしたプログラムでは、パターンとしてLogistelloが使ってるパターンと
だいたい同じものを使っていて、隅の3x3だけ、2マス付け加えて
11マスにしたものを使ってる。当然収束は遅い。
さらにステージ分けを2手毎にしたものだから(アホや…)、
隅の学習がいつまでたってもできなくて、序盤でいきなり星に打ったりする。
とりあえずたくさん学習させてやろうと思って
約30万局の棋譜が入ったファイルの学習を始めたら、
8日かかってやっと終わった。
でも隅の学習は全然だめorz
仕方ないので人間相手の対戦プログラムに棋譜を出力させて、
その棋譜から学習させてやろうと思っている。
0984デフォルトの名無しさん
2007/03/13(火) 21:21:45多分1ステージ10手くらいにはしないとある程度の精度は出ないと思うよ。
いきなりステージを細かく分けないで全5ステージくらいからやったら?
0985デフォルトの名無しさん
2007/03/13(火) 21:28:18****----
***-----
***-----
*-------
--------
--------
--------
--------
何やら書いてみた。
但し内容は妄想、夢想、完全フィクションである。 :p
0987デフォルトの名無しさん
2007/03/13(火) 21:44:55ブレークポイントだけじゃ時系列のデータ見られないだろ?
0988デフォルトの名無しさん
2007/03/13(火) 22:03:24おつ。
ざっと読んでみたけど、自分が棋譜の偏りを補正した方法の一つは、
あるパターンがいくつの局面で出現したか統計をとって、
一定数に満たないパターンが出現する棋譜では、
パターンを壊さないようなところに打って分岐する棋譜を作った。
09891
2007/03/14(水) 05:34:39デバックしやすいように一行のコードを短くすることが
大事なことがわかった
0990デフォルトの名無しさん
2007/03/14(水) 09:55:450991デフォルトの名無しさん
2007/03/14(水) 12:52:310992デフォルトの名無しさん
2007/03/14(水) 13:45:300993デフォルトの名無しさん
2007/03/14(水) 15:16:070994デフォルトの名無しさん
2007/03/14(水) 15:36:58これからどれだけの車輪の再発明ならぬ、常識の再発見を繰り返すつもりなのだろうか
0995デフォルトの名無しさん
2007/03/14(水) 15:40:470996デフォルトの名無しさん
2007/03/14(水) 15:46:57他人に追いつくまでに人生終わっちゃうよ。
0997デフォルトの名無しさん
2007/03/14(水) 15:47:350998デフォルトの名無しさん
2007/03/14(水) 17:17:480999デフォルトの名無しさん
2007/03/14(水) 17:26:22>・stage00: 00-03
>・stage01: 04-07
ステージ分割でさ、序盤はほとんど局面が無いから
この辺はまとめた方がいいと思うよ。
1000デフォルトの名無しさん
2007/03/14(水) 17:29:1810011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。