トップページ⇒tech
1001コメント272KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2007/01/22(月) 06:13:18
まず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
0002デフォルトの名無しさん2007/01/22(月) 06:19:51
>>1
乙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
>>1 のやる気が感じれないので


        終了


0006デフォルトの名無しさん2007/01/22(月) 06:26:12

これ以上くそスレ増やすなヴォケが
0007デフォルトの名無しさん2007/01/22(月) 06:39:44
オセロプログラム作成の基礎知識
ttp://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:18
>>1 乙
0010デフォルトの名無しさん2007/01/22(月) 09:18:36
まだやってんの?
0011デフォルトの名無しさん2007/01/22(月) 10:08:10
Ntestのソースを読んでみたが難しい・・・
誰か理解できる人居る?
0012デフォルトの名無しさん2007/01/22(月) 10:08:15
>>7
乙
0013デフォルトの名無しさん2007/01/22(月) 10:23:15
NtestよりZebraのソースコードが比較的わかりやすいと思う。
ロジステロは変数名がドイツ語・・?
0014デフォルトの名無しさん2007/01/22(月) 11:37:41
まだやってたのか、、、オレも参加、、いややめとこ
0015デフォルトの名無しさん2007/01/22(月) 11:43:58
誰か一緒に>>7を参考にしてオーソドックスな技術を使って作りませんか?
言語はできればC(C++無し)で・・
0016デフォルトの名無しさん2007/01/22(月) 12:10:56
>>15
一緒に何やるの?
0017デフォルトの名無しさん2007/01/22(月) 12:16:46
リバーシプログラム作りだろ
0018デフォルトの名無しさん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:03
fore使えってことだな
0022デフォルトの名無しさん2007/01/22(月) 15:49:35
思考する部分以外を誰かが書けばいいんじゃないの?
インターフェイスを決めていおいて、思考する関数は各人が書くと。
0023デフォルトの名無しさん2007/01/22(月) 15:59:49
沈思黙考
0024デフォルトの名無しさん2007/01/22(月) 16:01:53
それこそ>>1のBearRevでいいかもよ
ヘルパルーチンはそろってるし
002512007/01/22(月) 19:17:45
1です
昨日はすみませんでした
寝てしまい間に合いませんでした
今日中も無理かもしれないですがいい出来になってきました
大改造に踏み切りました
全部グローバル変数にして重複して使いまわす事にしました
なぜならば、いい変数はコンパイラがCPUレジスタにセットしてくれるからです
その都度、生成するとメモリ上に変数が乗る可能性が高いです
002612007/01/22(月) 19:20:14
コンパイラの最適化機能を発揮させるには、全部グローバルが基本ですよね
0027デフォルトの名無しさん2007/01/22(月) 19:26:13
中途半端な知識で語らないで最適化云々は実証してから言え
002812007/01/22(月) 19:34:38
まあ実際は、時間のかかる部分に、時間を食うので
メモリ上の変数でも、レジスタ上の変数を使っても大して速度に違いは出ないんでしょうけど
でも、もしかしたら何度も使う部分が一回あたり0.001秒くらい縮んだとすれば10万回呼んだとして
100秒短縮出来ることになります
002912007/01/22(月) 19:39:31
プロファイリングの結果で最適化してくれるのは、何がありますか?

5つ入っているんでけど

マイクロソフト2005の無料版と、ボーランド2006の無料版と
VC++ver.6pro.とインテル無料版とボーランド5.5の無料版が入ってます

いつもは、快適動作のボーランド5.5を使っています
0030デフォルトの名無しさん2007/01/22(月) 19:46:24
>>28
前から指摘されている通り、あんたの偏った頭で考えるよりもコンパイラの方が賢い。
最適化なぞ気にせずに先ずは動くものを作れ。
0031デフォルトの名無しさん2007/01/22(月) 20:51:16
お前はもうこのスレの1じゃないだろ。
前スレの1だろうが。
0032デフォルトの名無しさん2007/01/22(月) 20:52:05
>>25-26
また愚かなことを…

ローカル変数だろうがグローバル変数だろうが、コンパイラが利用計画を立てた上で
上手くレジスタにキャッシュするから、アクセス速度は違わないと思われ。
グローバル使い回しなんてやってもバグだらけになるだけで、百害あって一利なし。

>>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:24
本気で強いのを作ろうと思ってる奴はおらんのか?
0035デフォルトの名無しさん2007/01/22(月) 21:30:15
土日で作ってみたがWZebraの四手読みより弱かった…
0036デフォルトの名無しさん2007/01/22(月) 21:31:46
乙。
アルゴリズムの解説してほしい。
それは公開しないの?
0037デフォルトの名無しさん2007/01/22(月) 21:34:35
>>34
単にちょっと強いと言うのならともかく、最強争いに加わろうと言うのなら、
才能、それもきわめて稀有で突出した才能を持つ『たった一人』が必要。
正直、人の力を結集してどうにかなる問題ではないと思う。
0038デフォルトの名無しさん2007/01/22(月) 21:40:17
>>37
才能より研究への情熱があれば蓄積された情報を活かして
かなりのところまでいけると思う。

現最強を最強たら占めているのは、才能とは思えんのだがどうなんだろう?
0039デフォルトの名無しさん2007/01/22(月) 21:42:43
>>38
蓄積された情報なんて今さら漁ってどうすんの
本当の最強を目指すなら既成概念なんて百害あって一利無しだろう
必要なのは天災のひらめきだけで十分だ
0040デフォルトの名無しさん2007/01/22(月) 21:43:47
>天災のひらめき
>1 の事ですか?
0041デフォルトの名無しさん2007/01/22(月) 21:49:01

あなたはどんなところに「強さ」を感じますか?

私はじっくり長考した上で最善の手を打たれるよりも
さくっと秒殺で決定打を放ってくれる方が強さを感じます
0042デフォルトの名無しさん2007/01/22(月) 21:51:25
>>39
今更あさるも何も膨大な記録を活かすって流れもないから何ともいえないんじゃね?


真の最強が完成したら、完全先読み初手投了になるだろうがそこに達するのが目標だろ?
本当に”最強”を目指すなら 定石探索、最善手探索、完全先読み、終盤解析のうち
一つ目と四つ目は意味がなくなるから、確かに圧倒的なひらめきも必要だと俺も思うが。

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
>>43
まじで?ソースある?
0045デフォルトの名無しさん2007/01/22(月) 21:55:06
>>43
証明されてませんよ。
引き分けの可能性が高いだけです。
0046デフォルトの名無しさん2007/01/22(月) 22:11:27
人が思いつくような事はたいてい既に誰かに思いつかれてる。
問題を解決しようとすれば"蓄積された情報"を思いついてしまうから
"蓄積された情報"を避けるためにそれを知る事は重要。
天才ってのは知らずに運よくそれを避けられる人の事じゃないんだろ?
0047デフォルトの名無しさん2007/01/22(月) 22:22:48
http://www.amy.hi-ho.ne.jp/okuhara/howtoj.htm
から飛べるような文献を適当に当たりながら流し読みしてみたが
オセロはやはり蓄積された情報を解析して手を打つのが全て。

強いプログラムを組むのには”発想”の余地があるかもしれないが、”強い”と”最強”は異なる。
複雑化した○×ゲームと考えると残るのは解析するための”効率”であり
前スレ1の時短縮はもっとも大事な因子である、やはり天才。
0048デフォルトの名無しさん2007/01/22(月) 22:25:47
ようするに今>>1には最強のプログラムを作れないということはわかった。

だれか今から>>1より強いオセロ作ってくれ
0049デフォルトの名無しさん2007/01/22(月) 22:27:27
>>46
だから馬鹿って言われるんだね
0050デフォルトの名無しさん2007/01/22(月) 22:32:54
>>48
前スレ1が居なくなれば俺作るよ
0051デフォルトの名無しさん2007/01/22(月) 22:36:50
>>47
   ∩___∩   ?     
   | ノ\     ヽ        |
  /  ●゛  ● | ?      |
  | ∪  ( _●_) ミ        .J
 彡、   |∪|   |   
/     ∩ノ ⊃  ヽ  
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /

0052デフォルトの名無しさん2007/01/22(月) 22:37:54
>>25
全部グローバル変数にしたら遅くなるよ。
ローカル変数は、スタックポインタからの相対位置で表せるので、
ポインタを介してアクセスするグローバル変数より速いのだ。
たとえレジスタにセットしてくれても、プログラム全域で保持すると
他の部分で遅くなってしまう。
0053デフォルトの名無しさん2007/01/22(月) 22:41:29
>>52
スタックポインタからの相対アクセスもポインタアクセスだと思うが。
と言うかそれ以前にどのCPUの話?
0054デフォルトの名無しさん2007/01/22(月) 22:42:05
>>51
すまん、ずーっと英語の文章を読んでいたので変な日本語になってしまった

結局は次の二つのことが言いたかった。
・最強=全ての事象を探索するしかない、
・強いプログラムと最強のプログラムはまったく違う。
0055デフォルトの名無しさん2007/01/22(月) 22:51:26
>>53
1の開発環境はWindowsだと思うのでx86。
スタックポインタの場合、[esp-8]などと一発でアクセスできるが、
そうでない場合[eax]とアクセスする前にeaxにポインタを格納する手間が要る。
もしくは、eaxをポインタに占有されて使えるレジスタが減ってしまう。
0056デフォルトの名無しさん2007/01/22(月) 22:52:43
何アホなこと言ってんの
ローカル変数なら最初から最後までレジスタに置いておけるけど
グローバルだとそうはいかん(メモリに書き戻す)から必ず遅くなる
0057デフォルトの名無しさん2007/01/22(月) 22:54:03
>>56
その通りだが、俺が何か変なこと言ったか?
0058デフォルトの名無しさん2007/01/22(月) 22:56:21
レス番つけろよ
0059デフォルトの名無しさん2007/01/22(月) 23:02:03
>>レジスタが云々言ってる奴
http://pc10.2ch.net/test/read.cgi/tech/1084676298/l50
スレ違いだからこっちでやれ。
0060デフォルトの名無しさん2007/01/22(月) 23:08:00
>>55
例えば mov edx,[MemAddress] と言う形式の指定方法があるので、
わざわざアドレスをレジスタにロードする必要は無い。
006112007/01/22(月) 23:09:14
全部グローバルが鈍いなら、main()だけだったら速いでしょ?使うのはマクロだけで
書き換えたらバグだらけになったので、元のまあまあ動いたところからやり直すことにする
明日やることにする
0062デフォルトの名無しさん2007/01/22(月) 23:11:38
まだアホな事言ってるし
0063552007/01/22(月) 23:14:23
>>60
>>59のスレでレスするよ。

>>61
その発想は俺にはなかった。さすがだ。
そのやり方では色々問題が出てくると思うが、がんばれ。
006412007/01/22(月) 23:15:30
>>52
メモリの呼び出し速度が遅いってことなんだけど
より遅いのはハードディスクだけど
例えば、int型のデータ読むのに
メモリ100ms
ハードディスク1000ms
レジスタ5ms
とかかかるならレジスタを何度も繰り返し使った方がいいとおもうけど
006512007/01/22(月) 23:17:59
インライン展開はループがあると出来ないってほんと?
0066デフォルトの名無しさん2007/01/22(月) 23:19:37
メソッド呼出しとか、変数入出力のレベルの
スピードを気にするなら、アセンブラで組めよ
0067デフォルトの名無しさん2007/01/22(月) 23:20:41
>>64
おいおい、世界初のCPUだってメモリ1アクセスに100ms もかからんよ。
0068デフォルトの名無しさん2007/01/22(月) 23:21:05
わしもそう思う
0069デフォルトの名無しさん2007/01/22(月) 23:27:39
>>64
レジスタを何度も繰り返し使った方がいいのは確かだ。
ただし、レジスタは少ないのでメモリアクセスは必ず必要になってしまうのだ。
なるべくメモリを使わないようにするという目的のために、
「全部グローバル変数にする」というアプローチは間違っていると言いたいわけ。
0070デフォルトの名無しさん2007/01/22(月) 23:30:41
>>前スレ1
最適化も自分でやりたいの?
そういうのはやってやる、もしくはコンパイラがやるって言ってるのに。
0071デフォルトの名無しさん2007/01/22(月) 23:30:53
ヒント:キャッシュ
0072デフォルトの名無しさん2007/01/22(月) 23:39:46
前スレ1が何をしようともコンパイラの最適化には劣るし
オーソドックスに書かなければコンパイラの最適化を阻害する
0073デフォルトの名無しさん2007/01/22(月) 23:40:08
どうせろくにプロファイリングもせずに、影響少ないとこばかりいじくるんだろうしなあ
0074562007/01/22(月) 23:40:45
>>55 スマンカッタ お前さん宛じゃなかったんだ
生温く見守っていようと思ってたんだが,我慢できなかった
今は反省してる

>>64
レジスタのアクセス速度は100ps(pは10^-12)のオーダー
メモリだと一次キャッシュにヒットすれば大差ないが
そうじゃないと大雑把に言って十倍〜百倍程度は遅くなる
ディスクなんて論外.使わないで済むようにコーディングしり

>>65
関数分けないと再帰呼び出しができないから
終盤の読み切りが書けなく(正確に言うとかなり書き/読み難く)なる

これは強いゲームプログラムを作るには必須っつーか常識レベルの
ハードウェアの知識だから>>1はもっと勉強汁
007512007/01/22(月) 23:47:02
再帰はもともと使わない設計ですよ
再帰で深くいくと鈍くなったり動作不安定になりそうな気がするので
0076デフォルトの名無しさん2007/01/22(月) 23:53:23
また責任転嫁してるし
0077デフォルトの名無しさん2007/01/23(火) 00:01:33
>>75
>鈍くなったり
探索数が深度の指数関数的に増加するんだから当たり前。浅いうちから
鈍るならアルゴリズムが良くないのでは。

>動作不安定
バグが原因。バグの原因となってるものは前スレで散々言われたはず。
今までの調子で書いてる限り改善しないだろうね。
0078552007/01/23(火) 00:05:03
>>74
そうか。こっちこそ早とちりスマソ。


1のプログラミングスタイルはかつての俺で(笑)、共感は少しするが、
もうちょっと謙虚にスレ住人から情報を吸収して勉強するとか、
最適化を語るなら、速度も実測するなりして研究してからにしてくれ。
0079デフォルトの名無しさん2007/01/23(火) 00:15:32
典型的な荒しの判別方法

都合の悪い質問をスルー

0080デフォルトの名無しさん2007/01/23(火) 00:19:09
>>75
終盤の読みきりをどうコーディングするつもりなんだ?
深さは固定じゃないし,ループで書くと再帰よりぐちゃぐちゃした
コードになるぞ(自分でスタック管理しなくちゃならなくなるから)
再帰で書いて鈍く(これ意味が分からんが)なったり動作が不安定になる
なんてことは(バグがない限り)絶対無いから安心して再帰使え
再帰が今一つ理解できないんだったらもっと頭の汗をかけ
論理的な思考ができる人間なら必ず理解できるからガンガレ
0081デフォルトの名無しさん2007/01/23(火) 00:26:20
処理速度の話は一番最後で良いような。
まずは正しく動くのを作るのが最初だろ。
動作確認しやすいように関数分けたり、処理を簡素化したプロトタイプ作れば更に良し。
0082デフォルトの名無しさん2007/01/23(火) 00:36:38
>>81
それはさんざん言ってきたんだが無視されるんだよ
0083デフォルトの名無しさん2007/01/23(火) 00:54:18
>>1見たいなやつが会社に入ってきたら自分の感情を抑えていられるかどうか…
殴ってしまいそうだww
0084デフォルトの名無しさん2007/01/23(火) 01:41:40
まずはスピードを気にせずにちゃんと(思った通りに)動くものを作れ
それから全部捨ててデータ構造から速度が出る様に設計し直すのが
思考ゲームで強いソフト作る時の最短コース(急がば回れ)だ
0085デフォルトの名無しさん2007/01/23(火) 01:57:57
>>1はプログラムは初心者だけど、アルゴリズムが頭にあるなら、思想があるなら
プログラムであーだこーだやって、早いだの遅いだのやるんじゃなくて、
(グローバル変数がなんだのレジスタが何だのそういう件はいらない)
プログラムについてはここのスレの意見を聞いて、
アルゴリズムをちゃんと完成させろよ。

今の>>1がプログラムについてなんか言っても、ここの人間には価値がない。
そもそもおまいはアルゴリズムが強いって言い出したんだから、そこを主張しろ。
0086デフォルトの名無しさん2007/01/23(火) 02:07:56
>>85
アルゴリズムを完成させるも何も>>1は1ビットたりともアルゴリズムを変更する気はないと言ってる
0087デフォルトの名無しさん2007/01/23(火) 02:19:39
912 :1 :2007/01/20(土) 13:36:06
評価関数を変更することにしました
枚数×2 + 空白の数
では、指せる手の数が増えすぎて幾らアルゴリズムが良くても計算不可能なようです

指し手の可能数と、マスの位置による点数を使うことにします

評価関数はアルゴリズムのうちに入らないのかな?
前スレ1は他人と違う言語をしゃべってるようだ。
0088デフォルトの名無しさん2007/01/23(火) 02:25:18
>>1の言ってるアルゴリズムが、最適化のことだったらワロスww
0089デフォルトの名無しさん2007/01/23(火) 02:47:58
>>88
ああ、なるほど。そう考えるとしっくりくるね。
でも最適化技術をとことん使っても解けるような問題じゃないのにね。
009012007/01/23(火) 06:57:30
思考ルーチンには、再帰は使ったらいかんと思います
スタック管理をパソコンにまかせて自動処理させると危険なんです
予め必要なメモリ領域を確保しておいてループで書くのが王道でしょ
0091デフォルトの名無しさん2007/01/23(火) 07:02:22
>>90

そんな事は、無い。
当然だが、スタック管理は人間よりPCにまかせたほうが、安全
なるだけ難しいとこは、PCにまかせて、シンプルで保守しやすい
コードを書くことこそが、真の王道

0092デフォルトの名無しさん2007/01/23(火) 07:10:55
危険とか王道って、どっからそんな思い込みが出てくるんだ
0093デフォルトの名無しさん2007/01/23(火) 07:28:38
>>92
>1の偏りきった脳味噌から。きっと>1はいつも斜めに傾いで座っているのだろう。
0094デフォルトの名無しさん2007/01/23(火) 07:31:10
どこまで深くなるかがあらかじめわかってるのだから
再帰でも問題は無いよ
0095デフォルトの名無しさん2007/01/23(火) 07:36:06
王道も何も知らない無知の癖に王道を語ったらいかんと思います
お前のようなカスが書いたプログラムが危険なんです
無知は無知らしく識者の言うことを聞くのが王道でしょ
009612007/01/23(火) 08:04:44
オセロだけではなく、将棋と囲碁に応用する目的があるんです
最大500手くらいあったらどうなんでしょうか?


再帰呼び出し

ある種の複雑な問題を解くコードをシンプルに記述できる場合があるが、
再帰による入れ子の数に応じて占有するメモリが増加する上、
実行速度も効率的とは言えず、非再帰的に記述できるならそうすべきである。

http://e-words.jp/w/E5868DE5B8B0E591BCE381B3E587BAE38197.html
0097デフォルトの名無しさん2007/01/23(火) 08:09:35
そんなもの知ってる
お前じゃない
009812007/01/23(火) 08:10:19
再帰は確実にインライン展開が出来ず、その都度、宣言されている変数の確保と
関数呼び出しのオーバーヘッドがかかるんです だから鈍い
0099デフォルトの名無しさん2007/01/23(火) 08:13:01
>>98
>再帰は確実にインライン展開が出来ず、
ループもインライン展開できないとか書いてただろ、お前

だいたいループにするって言っても、どうやるの?
自分でスタック用意するのか?
010012007/01/23(火) 08:15:28
当初から、再帰は一度も使っておらず(これは初めから一貫していました)
手数と、読みの深さごとに必要な領域を確保しています
パスも含めて128手分とってあります
0101デフォルトの名無しさん2007/01/23(火) 08:17:29
そんなのソース見たから知ってる
だからどうした?
何が言いたい?
0102デフォルトの名無しさん2007/01/23(火) 08:17:41
インライン展開できてるかどうかくらいは確認してるんだよな
010312007/01/23(火) 08:42:19
それはしてません
でもとにかくループがいいんです
わかってください
0104デフォルトの名無しさん2007/01/23(火) 08:50:58
残念
sageちゃ駄目なんだ
010512007/01/23(火) 09:27:14
同じ事繰り返すんだけど、どうやったら直るかわかる?
今日はしばらくパソコン触れないのでうpしてみる
まだ変数名とかプログラムはわかりにくいままですが

http://up2moe.moe.hm/img/q480.txt
0106デフォルトの名無しさん2007/01/23(火) 09:34:04
わかりやすいプログラムになったら皆見てくれるよ
0107デフォルトの名無しさん2007/01/23(火) 09:34:15
「直る」って何?
どうなればいいのかも言わずに何言ってんの。
010812007/01/23(火) 09:37:21
直る=深く探索するです

今の時点では、強いかどうかではなく同じ探索を繰り返さないようにしたいんです
0109デフォルトの名無しさん2007/01/23(火) 09:48:20
128とか255とか、境界値のあたりがあいまいだからだよ
そんなんでよく再帰がどうのとかいえるな
0110デフォルトの名無しさん2007/01/23(火) 10:00:43
>>1は知った知識をむやみに口に出したがるんだな。
それがたった一部の悪い所にもかかわらず、よい部分を知ることもなく
検討もしない。

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

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

そもそもそんな馬鹿みたいにメモリ使うプログラムが速いとは思えないが。
スラッシングで遅くなるぞ
0111デフォルトの名無しさん2007/01/23(火) 10:04:09
http://up2moe.moe.hm/img/q482.txt
直ったよー
0112デフォルトの名無しさん2007/01/23(火) 10:20:59
>>111
仕事はえぇぇええええw
俺もやってたが、foreの展開までしかいけんかったww
0113デフォルトの名無しさん2007/01/23(火) 10:23:53
>>111
remove()とcupu()は関数にするだけじゃだめだ。ビルドしてないだろおまい
0114デフォルトの名無しさん2007/01/23(火) 10:30:20
リファクタしようと思ったら発狂しそうになった
0115デフォルトの名無しさん2007/01/23(火) 10:30:23
マクロを展開するだけならプリプロセッサでできるね
011612007/01/23(火) 10:35:34
うまく動かないのは、mtd()だけであとは正常動作をしていると思われます
0117デフォルトの名無しさん2007/01/23(火) 10:36:09
>>111
プリプロセッサ通してコードフォーマットかけた
>>113
はい、やってません。
0118デフォルトの名無しさん2007/01/23(火) 10:43:21
>>117
アンカー>>112だった。
>>113
コンパイル通した。
remove()とcupu()はとりあえずマクロに戻した。
http://up2moe.moe.hm/img/q483.txt
0119デフォルトの名無しさん2007/01/23(火) 11:05:40
>>103
「でも」「とにかく」
これダメプログラマの言い訳の典型だな
大昔のFORTRANじゃあるまいし,再帰の利点が理解できないんじゃ
アルゴリズムの良し悪しが云々できるレベルじゃない
きちんとしたプログラミングの教育を受けてないみたいだが
取り敢えずプログラミング作法とプログラミング書法辺りは読んどけ
後,雑誌の記事とか友人から得た知識は捨てろ
0120デフォルトの名無しさん2007/01/23(火) 11:08:20
>>119
いや・・>>103は偽者だから・・
でも言ってることは正しい
0121デフォルトの名無しさん2007/01/23(火) 11:10:42
も一個
プログラムの最適化に関しても勘違いがある
プログラムの実行時間の90%以上はコードの極一部に集中する
だからそこだけ頑張って他は読み易さ/改良のし易さを優先する
全体をインライン展開しようなんてのはアホのやること 1%も変わらん
兎に角,お前が考え出したアルゴリズムの正しさの確認が最優先だろ?
そのためにプログラムにして実際に動かすんだから
正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ
0122デフォルトの名無しさん2007/01/23(火) 11:13:22
>>120 そうなの?<偽者
まぁどっちでもいいや
0123デフォルトの名無しさん2007/01/23(火) 11:14:22
だめだこいつ new して delete してない
はやく何とかしないと

>>121
>正しいかどうかが分かってないうちから最適化に手間かけるたら二兎を追うものになってしまうぞ
俺もそう思う
0124デフォルトの名無しさん2007/01/23(火) 11:18:12
>>1 にはこれを読むことをすすめておく
http://www.pro.or.jp/~fuji/mybooks/cdiag/index.html#mokuji
0125デフォルトの名無しさん2007/01/23(火) 11:21:04
あとさぁ、最適化にこだわるんだったら何でC++使ってるわけ?
0126デフォルトの名無しさん2007/01/23(火) 11:22:26
>>124
俺もそれ見たことある
それに出てくる悪い例でも1のに比べたらはるかにいいと思う
0127デフォルトの名無しさん2007/01/23(火) 11:24:18
確かに、再帰は末尾再帰にしない限りこういう用途では使うべきではないと思う。
0128デフォルトの名無しさん2007/01/23(火) 11:25:55
>>125
hashtable の初期化が面倒なだけじゃね?あれはC++と言ってもほとんどCだ。
0129デフォルトの名無しさん2007/01/23(火) 11:26:57
>>127
今は(未だ)そういうレベルじゃないよ。

処で、>1の使っている糞コンパイラは配列のインデックスにcharを使っても警告出さないの?
アセンブル出力見れば判るが凄く無駄なコードを出力する原因になっているんだけど。
0130デフォルトの名無しさん2007/01/23(火) 11:30:53
遅くても良いから動くコード書いてください
動くコードができたら、アルゴリズムを考え直しましょう
アルゴリズムを考え直したら、書き直しましょう
その連続です。
最適化はコンテストの直前にするものです。
0131デフォルトの名無しさん2007/01/23(火) 11:44:27
>>前スレ1
MTDって亜流がいっぱいあるんだけど、どれを参考にしたの?
0132デフォルトの名無しさん2007/01/23(火) 11:48:39
msu()、charの参照なんて無意味なものを引き数にしている。
serch()、何このtypo。
mtd()、ddが未使用。
adress()、xhは未初期化でアクセスされることない?
0133デフォルトの名無しさん2007/01/23(火) 11:49:07
void fn(char t){
  char i,bnn[64];
  for(i=0;i<64;i++){
    if(bt[wb[t][i/8][0]][i%8]==1)printf("●");
    if(bt[wb[t][i/8][1]][i%8]==1)printf("○");
    else printf(" ");
    if(i%8==7)puts("");
    //初期化しておく
    bnn[i]=0;
    if(bt[wb[t][i/8][2]][i%8]==1)bnn[wz[i]]=1;
  }
  puts("");
  for(i=0;i<64;i++){
    if(bnn[i]==0)printf(" ");
    else printf("*");
    if(i%8==7)puts("");
  }
  puts("");
}

グローバル変数が何の目的で使われてるのかわからんのが多すぎ。
0134デフォルトの名無しさん2007/01/23(火) 12:02:06
よーし、俺も俺も。

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

中略...

  z = 97;
  EE:
  ;
}

return; 使えよw
0135デフォルトの名無しさん2007/01/23(火) 12:08:56
if (mode[tsu[1]] == 1) {
mode[tsu[1]] = 0;
mode[tsu[1] + 1] = 1;
goto GG;
}
if (hash[x].a <= g) {
if (g <= hash[x].b) {
GG:
;
if (kar[tsu[1] + 1] < 1) {
if (kt == 0) {
hmove();
}
move();
goto BB;
}
}
}
すげぇ、ifブロックに飛び込んでる。
0136デフォルトの名無しさん2007/01/23(火) 12:18:41
ちょっとロジックを追おうと思って、cupuマクロで使っているremove()マクロを見たら、
gotoしている先が別のforループの中だと知って諦めた。
0137デフォルトの名無しさん2007/01/23(火) 12:20:40
これは、もう
2重以上のループからでるとき以外go toは使うなと
指導すべきタイプの人やね。
0138デフォルトの名無しさん2007/01/23(火) 12:24:33
違うよ


リアルだと絶対に関わりたくないタイプの人だよ。
013912007/01/23(火) 12:30:40
わかりやすくするために頑張ってオブジェクト指向プログラムに書き換えますよ
待ってて下さい!
0140デフォルトの名無しさん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 は、最低限これらを全て分かりやすい名前に書き換えるべし。
0141デフォルトの名無しさん2007/01/23(火) 12:49:23
>>139
待て。
俺たちが手直しするまで何もするな。
手直しが終わってからそれを元に書け。
0142デフォルトの名無しさん2007/01/23(火) 12:51:27
どうしてこんなに面白いの?
0143デフォルトの名無しさん2007/01/23(火) 13:00:43
>kar[0] *= (0.9 + (double)(cr / (10 * (1001))));
これ、10010で割るのは整数でいいの?
0144デフォルトの名無しさん2007/01/23(火) 13:04:13
これは、ネタの傾向からみて、
引退した爺さんプログラマーがネタで
ドキュソを演じてるんじゃないかなぁ
0145デフォルトの名無しさん2007/01/23(火) 13:05:43
>>139
余計なことすんな。
書き換えとかしなくていい。今のおまいのレベルじゃ読みやすくなる保証は皆無

どういうものを作りたいのか俺たちに教えてくれればいいんだぜ
0146デフォルトの名無しさん2007/01/23(火) 13:26:05
たしかに{}の入れ具合とか、初めてにしちゃできすぎ
0147デフォルトの名無しさん2007/01/23(火) 13:43:09
一文字変数の所為もあって、ループ制御変数と一時変数の名前がぶつかっていたり、
酷いのはグローバル変数とも名前がぶつかっていたり。
取り敢えず、レガシースタイルは諦めて「使う場所での宣言」にしないとどうしようもない。
最低限、グローバル変数は一文字名前禁止だな。
0148デフォルトの名無しさん2007/01/23(火) 13:49:12
>>139
lp、li、lj、ba の意味が分からないので解説頼む。
0149デフォルトの名無しさん2007/01/23(火) 13:55:55
>>148
//周囲のマスとのインデックス差
char lp[8] = {1, 9, 8, 7, -1, -9, -8, -7};
//周囲のマスとの縦座標の差
char li[8] = {0, 1, 1, 1, 0, -1, -1, -1};
//周囲のマスとの横座標の差
char lj[8] = {1, 1, 0, -1, -1, -1, 0, 1};
だと思う
ba ってあったっけ?banの事なら
//コマのおいてあるところは1
unsigned char ban[64]=
{
0, 48, 12, 4, 5, 13, 49, 1,
55, 56, 40, 32, 33, 41, 57, 50,
19, 47, 28, 20, 21, 29, 42, 14,
11, 39, 27, 64, 64, 22, 34, 6,
10, 38, 26, 64, 64, 23, 35, 7,
18, 46, 31, 25, 24, 30, 43, 15,
54, 59, 45, 37, 36, 44, 58, 51,
3, 53, 17, 9, 8, 16, 52, 2
};
この順番で着手を試すらしい。
0150デフォルトの名無しさん2007/01/23(火) 13:57:48
lp[n] = li[n] * 8 + lj[n]
この関係式が成り立つっぽ
0151デフォルトの名無しさん2007/01/23(火) 13:59:54
あ、main()の中にbaってあったね。
よくわからん。
015212007/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度回転した座標を返すなど
0153デフォルトの名無しさん2007/01/23(火) 14:03:41
>>149-150,152
�dクス
0154デフォルトの名無しさん2007/01/23(火) 14:10:56
>>1前スレ1
MTDの解説サイト教えて。
お前が見たところ。
015512007/01/23(火) 14:14:24
>>154
Research Re: search & Re-search
http://www.cs.vu.nl/~aske/Papers/abstr-ks.html
015612007/01/23(火) 14:16:03
>>154
MTD(f), a minimax algorithm faster than alpha-beta
alpha-beta法の改良の1つであるMTD(f)についてのページ。
MTD(f)の他、置換表付alpha-betaの実装についても書かれています。
また、彼のPh.D ThesisであるResearch Re: search & Re-searchは
様々なゲーム木探索の手法について詳しく述べたもので、一読の価値があります。
http://fujitake.dip.jp/sealsoft/thell/bibliography.html
0157デフォルトの名無しさん2007/01/23(火) 14:24:54
あぁこれか。
前にざっと読んだ事ある。
015812007/01/23(火) 14:30:13
でも、使っているのはMTDサーチではないですよ

>>135の部分ですが、

a <= 予測値 <= bならば確率が残っている範囲で指し進めるモードと、
確率が残っていたら指し進めてあとでa <= 予測値 <= bのチェックを行う
2つのモードがあります 深さでは探索を終わりにはしません
015912007/01/23(火) 14:34:25
名付けるとMTD(f , r)サーチですかね
0160デフォルトの名無しさん2007/01/23(火) 14:38:46
>名付けるとMTD(f , r)サーチですかね
rは何の意味?
016112007/01/23(火) 14:40:25
>>160

r = 局面の予測された実現確率
f = 局面の予測された評価値
016212007/01/23(火) 14:43:36
将棋では、大駒や金銀を取る手の実現確率の予測はしやすいという点があります
0163デフォルトの名無しさん2007/01/23(火) 14:48:52
r=realizability?
なるほど。
やりたいことは大体わかった。
0164デフォルトの名無しさん2007/01/23(火) 15:53:50
BASICで書いた方がいいよ>>1
0165デフォルトの名無しさん2007/01/23(火) 15:54:22
>>1次からコメント入れるようにしてね
0166デフォルトの名無しさん2007/01/23(火) 16:17:21
>>164>>165
1にそういうことを言っても無駄だと思う。
なぜそうした方がいいのかを何とかして理解させる必要がある。
自分が間違っていると思わない限り、1はいつまでも我が道を行くだろう。
0167デフォルトの名無しさん2007/01/23(火) 16:17:40
>>163に期待
0168デフォルトの名無しさん2007/01/23(火) 16:22:49
そもそも2chでスキルもない癖に自分専用スレを平気で立てる時点でもうアウト
0169デフォルトの名無しさん2007/01/23(火) 19:12:34
優れた人は何も言わずにモノだけ出すからな
スレ立てて騒ぐ奴に限ってろくなものを出さない
0170デフォルトの名無しさん2007/01/23(火) 22:25:03
1は人の意見を真摯に聞くべき。
煽りじゃないよ。
会社でも1人で突っ張ってんの?
これが正しいんですとか言ってたらだめだよ。
0171デフォルトの名無しさん2007/01/23(火) 22:25:59
>>139
わかりやすくするんなら、オブジェクト指向じゃなくて構わないので
関数の分割と、変数名の変更と、利用すべきところでの再帰の利用
をして欲しい。
0172デフォルトの名無しさん2007/01/23(火) 22:28:14
ヒント:オブジェクト指向だと遅いw
0173デフォルトの名無しさん2007/01/23(火) 22:33:41
>>170
ヒント 小学生
0174デフォルトの名無しさん2007/01/23(火) 22:36:12
>>172
ヒント:覚えたての知識をひけらかしたい
0175初心者2007/01/23(火) 22:42:27
if (mode[tsu[1]] == 1) {
mode[tsu[1]] = 0;
mode[tsu[1] + 1] = 1;
funcA();
}
else if (hash[x].a <= g && g <= hash[x].b) {
funcA();
}


funcA()
{
if (kar[tsu[1] + 1] < 1 && kt == 0) hmove();}
move();
goto BB//糞;
}
0176デフォルトの名無しさん2007/01/23(火) 23:29:38
最適化とかは動くものができてからの話なわけで
0177デフォルトの名無しさん2007/01/23(火) 23:40:35
>>176
>>1は質の高いアルゴリズムによる高速化と、最適化による高速化がごっちゃになっているのかもしれない
0178デフォルトの名無しさん2007/01/24(水) 00:04:10
ここまで来るとただの馬鹿だな
根拠の無い自信でつっぱねるだろうが
0179デフォルトの名無しさん2007/01/24(水) 00:36:33
配列の先頭とそれ以外で用途が違うから読みにくい
0180デフォルトの名無しさん2007/01/24(水) 01:14:36
>>1さん 俺は弱いリバーシしか作ったことないけれど、
実現確率が正確に求まるとは到底思えない。矛盾してないかい。
自分的には確率使うなら囲碁のモンテカルロ法とかのが
ずっと良さそうな気がする。
ttp://www.geocities.jp/hideki_katoh/ (加藤さんの翻訳)
0181デフォルトの名無しさん2007/01/24(水) 01:59:10
>>前スレ1
お願いだから将棋に帰ってください。
これ以上リバーシを冒涜しないでください。
http://pc10.2ch.net/test/read.cgi/tech/1109307327/
018212007/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使えばいいじゃん
018512007/01/24(水) 02:44:27
>>183

if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため
速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
018612007/01/24(水) 02:47:05
MPCとはなんですか?
0187デフォルトの名無しさん2007/01/24(水) 02:49:12
>>185
http://www.st.rim.or.jp/~phinloda/cqa/cqa7.html
0188デフォルトの名無しさん2007/01/24(水) 02:50:07
>>186
http://www.cs.ualberta.ca/~mburo/publications.html
0189デフォルトの名無しさん2007/01/24(水) 02:53:01
前も同じリンク教えたのに読んでなかったのかよ
0190デフォルトの名無しさん2007/01/24(水) 02:53:35
今の段階でアドバイスしてる多くは、より良い動作を実現させるための助言じゃなくて、
まず動かすための、プログラムを見易くするためのアドバイスが多いと思うんだけど、
まともに動かせるように助言してくれてるのに、あえて無視してるのか?まぁなんてことでしょう!
0191デフォルトの名無しさん2007/01/24(水) 02:55:13
>if(A) if(B) { C; }の方が、if(A && B) { C; }より演算数が少なくなるため
>速いおもいますが 実際にはやっていませんが...どうなんでしょうか?
そう思うのは勝手ですが、そんなゴミを垂れ流さないでください。
A && B と書いたとき、Aが偽だとBは評価されません。
つまり、 A && B はif (A) B と概ね等価になります。
>187のリンク先の下の方を参照してください。
0192デフォルトの名無しさん2007/01/24(水) 02:59:14
コンパイラの最適化でもそういうとこってうまいことやってくれるんでしょ?
019312007/01/24(水) 03:00:51
>>188
ありがとう読んでみます

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
>>185
てきとーに測定してみた。

a=0, b=0: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks
a=0, b=1: if(a && b): 1.0 clocks, if(a) if(b): 1.0 clocks
a=1, b=0: if(a && b): 2.0 clocks, if(a) if(b): 2.0 clocks
a=1, b=1: if(a && b): 4.0 clocks, if(a) if(b): 4.0 clocks

どっちも同じだね。
019612007/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:01
一応幾つかの関数はリファクタリングしてすっきりしたのだが、
mtd()がどうにもならなすぎるのでもう飽きた。
せめてループ制御変数を使い回すのを何とかしないとデバッグどころじゃないぞ、と。
0200デフォルトの名無しさん2007/01/24(水) 07:50:09
確かに
そろそろ飽きてきてるかな……


クマー
0201デフォルトの名無しさん2007/01/24(水) 09:38:10
iやjをループ変数意外で使ってる
0202デフォルトの名無しさん2007/01/24(水) 09:39:12
×意外
○以外
0203デフォルトの名無しさん2007/01/24(水) 09:49:42
for(i=0;i<125;i++){
中略
}
if(i==126){
ここは実行されることがあるのか
}
0204デフォルトの名無しさん2007/01/24(水) 09:51:57
>>198
韓国人だなww
0205デフォルトの名無しさん2007/01/24(水) 09:52:50
>>203
wwwwwwwwwww
0206デフォルトの名無しさん2007/01/24(水) 09:58:56
未だに最適化を理解しない>>1
そんなにスピードが気になるならC++なんぞ使うんじゃない
0207デフォルトの名無しさん2007/01/24(水) 10:07:30
>>105
これ動かなくね?
延々と
「実現確率=0.50000 count=1 手数=4 指し手=19 読み深さ=0 予想値=0 a=65 b=65」が繰り返されてる
02082072007/01/24(水) 10:10:33
実現確率の出力のところをコメントアウトすればいいのね
0209デフォルトの名無しさん2007/01/24(水) 10:18:05
>>1はアルゴリズムを人にわかるように説明できないんだろ
0210デフォルトの名無しさん2007/01/24(水) 10:21:11
>>116
> うまく動かないのは、mtd()だけであとは正常動作をしていると思われます

mtd()だけって…>>1のソースの大半はmtd()関数だろ。
0211デフォルトの名無しさん2007/01/24(水) 10:59:36
言い方がどれもうけるw
ヘボさが見え隠れしてるw
0212デフォルトの名無しさん2007/01/24(水) 11:11:30
MTDをちゃんと理解してないからmtd()のバグがなくならないんでしょ。
プログラムに知識のダメ出しをされてるんだよ。
0213デフォルトの名無しさん2007/01/24(水) 11:25:46
>>180
モンテカルロ法は囲碁には適用できるが、リバーシには適当とは言えないよ
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:52
minmax法やαβ法がわかってれば次はNullWindowSearchを理解すればいいね
http://ray.sakura.ne.jp/search_problem/null_window.html
その先はそれほど大きな違いは無いよ
0217デフォルトの名無しさん2007/01/24(水) 12:19:45
入力ファイル→出力ファイルというようにバッチ的にC言語のインデント処理ができるUnixコマンドってありますか?
0218デフォルトの名無しさん2007/01/24(水) 12:22:41
Unixコマンドでは知らないけど自分はArtistic Style使ってる。
0219デフォルトの名無しさん2007/01/24(水) 12:43:29
>>216
�d
読んでみるよ
0220デフォルトの名無しさん2007/01/24(水) 13:18:24
te = new unsigned char[67108914];

67108914ってなんだろう
バイト数でいうなら67108914=64MB+50B
0221デフォルトの名無しさん2007/01/24(水) 14:18:00
>>217
indentって標準かな?
0222デフォルトの名無しさん2007/01/24(水) 14:45:12
teは手を登録してるようだけど・・
ここにもバグがありそう
>>前スレ1
変数名・関数名が何の省略かを全て書いてよ
0223デフォルトの名無しさん2007/01/24(水) 16:43:37
変数名・関数名まとめ
140 デフォルトの名無しさん 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:45
このプログラムはリファクタするより1から作り直したほうが早い。
0225デフォルトの名無しさん2007/01/24(水) 17:37:34
そうすると最初のスレの>>1はどーなんの
022612007/01/24(水) 17:37:56
今、オブジェクト指向で一から作り直してますから待ってて下さい!
0227デフォルトの名無しさん2007/01/24(水) 17:54:09
>>226
おまいはホントに誰の話しも聞いてないんだな
022812007/01/24(水) 18:14:57
>>227
なんでよ?224の話の通りだよ
0229デフォルトの名無しさん2007/01/24(水) 18:16:44
そろそろ>>1はトリップつけてくれ、、、、いややっぱいいやw
023012007/01/24(水) 18:18:57
オブジェクト指向といってもC++の機能を使わなくたって出来るんだよ
普通のCでも
オブジェクト指向が鈍いっていう事はない
関数の分割単位をわかりやすくする目的がある
0231デフォルトの名無しさん2007/01/24(水) 18:23:48
ふーん、すごいね
0232デフォルトの名無しさん2007/01/24(水) 18:29:49
>>230
Cでオブジェクト指向的なコーディングができることぐらい、
ここにいる主要な人達のほとんどが知っていることだよ。
それでも、オブジェクト指向的に書くならC++の方が良いと言っているということは、
やはりCでは強引に書かないとできないという事なんだよ。
0233デフォルトの名無しさん2007/01/24(水) 18:45:03
1から作り直したほうが早いのは間違いないが、

>>1が作り直すのは絶対に止めた方が良い。
0234デフォルトの名無しさん2007/01/24(水) 18:59:19
>>228と>>230は>>1に見えないな

オブジェクト指向とまでいかなくても構造化してくれるならそれで充分
0235デフォルトの名無しさん2007/01/24(水) 19:26:03
>>234 同意
0236デフォルトの名無しさん2007/01/24(水) 19:36:00
何故>>1にそんなにかまってやってるの?
0237デフォルトの名無しさん2007/01/24(水) 19:44:26
みんな>>1のことが好きなのよ
0238デフォルトの名無しさん2007/01/24(水) 19:59:09
gotoの使いかた等に現れる
>>1の溢れんばかりの素質が皆を引きつけてるんだよ。
0239デフォルトの名無しさん2007/01/24(水) 20:00:39
ふーん。まぁがんばれ
>>224も>>227も俺なんだけどな。
0240デフォルトの名無しさん2007/01/24(水) 20:02:34
>>233
吹いた
0241デフォルトの名無しさん2007/01/24(水) 20:11:45
何故>>1はgotoを使うのだろう
そこらへんの本や入門サイトにはgotoなんて載ってないよね?
もしgotoの記述があっても、それによってもたらされる害についての説明だと思うのだけど
0242デフォルトの名無しさん2007/01/24(水) 20:41:13
>>241
>>1はプログラミングで論理的に構造を考える能力が足りない。
まぁ初心者だからな。
0243デフォルトの名無しさん2007/01/24(水) 21:06:31
wzebraインストールすらできないw
0244デフォルトの名無しさん2007/01/24(水) 21:11:52
作れるとしたらまず最強といわれるやつに勝てる人でかつプログラム経験豊富な人であれば
自分の思考パターンをそのまま当てはめればいいわけでそんなに難しくないんじゃないか?
どんなアルゴリズムでも癖があるから万能ではなくてもただ1つに勝つだけなら単純だ
BearRevとやらはやってみたが弱すぎてアルゴリズム考えるのも馬鹿馬鹿しいんだが
Wzebraはなんかエラーでて動きませんw
0245デフォルトの名無しさん2007/01/24(水) 21:20:02
wzebraは生身の人間ではまず勝てない
0246デフォルトの名無しさん2007/01/24(水) 21:20:30
>作れるとしたらまず最強といわれるやつに勝てる人で
そんな人間は存在しない
0247デフォルトの名無しさん2007/01/24(水) 21:24:27
リバーシって確か、かなり前に世界チャンプが
コンピュータに負けたゲームだった記憶がある。
0248デフォルトの名無しさん2007/01/24(水) 21:25:37
その世界チャンピオンはベストコンディションではなかったとの話もある。
0249デフォルトの名無しさん2007/01/24(水) 21:25:58
>自分の思考パターンをそのまま当てはめればいいわけで
これだと弱い。
オセロではそれよりはるかにいい方法が発明されてるから
ルールを知っている程度の人でも世界チャンピオン以上のプログラムが作れる
0250デフォルトの名無しさん2007/01/24(水) 21:35:54
ベストコンディションでも勝てなかっただろうけどね
彼より前のチャンピオン達はプログラムとの対戦から逃げてると言われてて
彼が対戦した頃には既に大差だったらしい
0251デフォルトの名無しさん2007/01/24(水) 21:46:30
パンダ名人なげーw
0252デフォルトの名無しさん2007/01/24(水) 21:57:35
まぁ実際逃げてたのかどうかは知らんけど
挑発はされてたかもしれんね
0253デフォルトの名無しさん2007/01/24(水) 22:20:15
ブレークポイント設定しても全く引っかからんところがいくつかあるなぁ
0254初心者2007/01/24(水) 22:30:39
>>1はこのすれで一番コーディング能力が
低いくせに人の言うことは聞かない。

速度なんか後で気にしたらいいのに。
0255デフォルトの名無しさん2007/01/25(木) 01:52:27
アルゴリズムを話せない
プログラムもろくに書けない
なにこいつw
0256デフォルトの名無しさん2007/01/25(木) 02:19:16
>>255
ヒント:小学生
0257デフォルトの名無しさん2007/01/25(木) 06:44:23
bitboardのメリットを見事に殺してる・・・
シッタカが使うとこうなるんだなぁ
0258デフォルトの名無しさん2007/01/25(木) 07:05:51
というか少しもbitboardじゃないよね
025912007/01/25(木) 07:25:16
主に手を戻すときのコストが0になるという利点がある
24バイトのコピーのみ
0260デフォルトの名無しさん2007/01/25(木) 07:48:55
利点しか見えてない方ですか?
1の使い方だとむしろ遅くなる原因では
0261デフォルトの名無しさん2007/01/25(木) 08:41:42
この知ったかぷりはもはやギャグ
0262デフォルトの名無しさん2007/01/25(木) 11:28:19
>256
確かに,普通では考えられない知識の偏り
実経験の無さ,そして思い込みの強さなど
小中学生辺りと考えるのが妥当か
0263デフォルトの名無しさん2007/01/25(木) 11:43:34
小学生でも人の意見は聞くだろ
0264デフォルトの名無しさん2007/01/25(木) 11:49:04
実力が伴わず、プライドだけ高い。
期限が守れていないということから、自己管理もできていない。
プライドの高さからおそらく大人なのだろう。
それも、子供のような未熟な大人。
ニートか?
0265デフォルトの名無しさん2007/01/25(木) 12:39:09
2chでスレ立てて成功した開発系スレは
開発者が凄まじいスキルを持ってるか言われたとおり素直に従ってスキルアップするかのどちらかだ
0266デフォルトの名無しさん2007/01/25(木) 12:53:16
とりあえず>>1も含めてお前ら全員馬鹿なのはわかったw
0267デフォルトの名無しさん2007/01/25(木) 13:32:47
2chに馬鹿じゃない奴がいると思ってるのか?
0268デフォルトの名無しさん2007/01/25(木) 13:44:09
我々の業界では褒め言葉です
0269デフォルトの名無しさん2007/01/25(木) 16:56:23
このスレは、ム板でもトップクラスのレス数(勢い)だったりする。
0270デフォルトの名無しさん2007/01/25(木) 17:36:39
ほんとだ。C/C++宿題の次だな
0271デフォルトの名無しさん2007/01/25(木) 19:56:36
>>1が帰ってくる前に。
座標だけでも標準の棋譜に変換しとかないとな。
0272デフォルトの名無しさん2007/01/25(木) 20:31:15
自分も初めてオセロを作ってみた。
白も黒も乱数でコマを置くようにしたら、白の方が常に数パーセント勝率がいい。
0273デフォルトの名無しさん2007/01/25(木) 20:37:03
>>272
そうらしいね
どこかでそんな話題を目にしたと思って探してみた

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
>>272
多分、白のほうが辺、角を取れる確率が高いからだと思う。

(と、小学生の頃、思ってて、密かに必勝法の一種だと思ってたけど、
 本当かどうか知らない)
0275デフォルトの名無しさん2007/01/25(木) 20:51:25
>>272
モンテカルロ法になるのかな?
その方法だと白が有利のような結果がよく出るんだけど、
ゲーム木のDBを構築すると引き分けの確率が高いっていう結果が出る。
この違いはなんなんだろう?
0276デフォルトの名無しさん2007/01/25(木) 21:14:23
白のほうが適当に手を選んだとき、引き分けの局面なら最善手が複数あって間違いにくく
勝ってる局面だったら、勝ちの手が黒より多くあるってことじゃない
逆に白が一旦間違えて負けの局面にした場合、黒はそのまま勝ちを維持できる手が白より少ないとかで
0277デフォルトの名無しさん2007/01/25(木) 21:16:18
>>273-275
人同士の対局でも白ほ方が勝率いいんだね。
モンテカルロ法っていうのが何なのか分かりません。^^;

どういうやり方がいいのか全然わからないんだけど、自分がしたのは、

1.コマが置ける場所(候補)を探す
2.その全候補に0(ゼロ)から順に整数を割り振る
3.候補数を最大値として乱数を発生させる(0〜候補数で乱数発生)
4.発生した乱数にコマを置く
0278デフォルトの名無しさん2007/01/25(木) 21:34:46
>>275
こういうのはモンテカルロとは言わないだろ^^;
0279デフォルトの名無しさん2007/01/25(木) 21:40:38
BearRevのぱんだで名人設定でやってみたんだけど
こっち黒先手
中盤で全部黒くなったんだが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
>>272-278
強いかどうかは別として面白そうだったので、試しにランダムに打っていって
勝率の期待値を計算し、期待値が高い手を選ぶプログラムを作ってみた。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3520.cpp

ちなみに相当弱い。
0284デフォルトの名無しさん2007/01/26(金) 00:55:42
>>283
乙。動かしてみる。
0285デフォルトの名無しさん2007/01/26(金) 02:07:40
>>272
白番のほうが最後の石を置けることが多いから
って昔の本で読んだことがある。
ランダムな着手を仮定するとなおさらそんな気がする。

>>275
引き分けの確率は高いかもしれないが、今は白と黒だとどっちがどのぐらい
勝ち越すかの話では。

>>273
シミュレート板なんてあったのか。知らなかった。
0286デフォルトの名無しさん2007/01/26(金) 02:40:52
>白番のほうが最後の石を置けることが多いから
人間向けの戦略で言えば偶数理論、
評価関数のフィーチャーで言えばパリティで考慮されてる。
盤全体で空きの偶奇をフィーチャーにしてるもの(1bit)もあれば、
盤を四つのエリアに分けてそれぞれに含まれる空きの偶奇をフィーチャーにしてるもの(4bit)も有る。
0287デフォルトの名無しさん2007/01/26(金) 09:38:38
前スレ969ですが
余計なモノを沢山積んでみたら、かなり読めなくなって来た……('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:19
圧倒的ってほどでもないような
0289デフォルトの名無しさん2007/01/26(金) 10:13:11
それくらいは誤差の範囲かも
0290デフォルトの名無しさん2007/01/26(金) 10:52:15
>>289
大体σ≒0.7%で、3σ以上ずれているので、99%有意な差がある。
0291デフォルトの名無しさん2007/01/26(金) 11:59:12
>>287
自分も1万回ぶん回してみた。
結果が似ているので、多分、あっていると思う。

10,000回の試行の結果
 黒の勝ち数:4499・・・44.99%
 白の勝ち数:5089・・・50.89%
 引き分け.. : 412・・・ 4.12%
0292デフォルトの名無しさん2007/01/26(金) 15:03:31
>>287,291 乙

乱数に素性の良いメルセンヌツイスターを使って千万回試行してみた。

黒勝 45.459±0.016 %
白勝 50.378±0.016 %
引分 4.163±0.006 %

白は50%より微妙に良いらしい。
0293デフォルトの名無しさん2007/01/26(金) 15:12:47
必勝法は、最初のじゃんけんで勝って白をとることだ!
0294デフォルトの名無しさん2007/01/26(金) 15:35:09
乱数ってC標準のやつだよね?
0295デフォルトの名無しさん2007/01/26(金) 15:44:36
メルセンヌツイスタはC標準じゃないよ
0296デフォルトの名無しさん2007/01/26(金) 16:04:01
>>293
必勝じゃないじゃん
0297デフォルトの名無しさん2007/01/26(金) 16:08:03
リバーシなんぞ1Tバイトとあれば十分
0298デフォルトの名無しさん2007/01/26(金) 16:10:28
>>295
>>292以外のことさ
0299デフォルトの名無しさん2007/01/26(金) 16:28:59
287です
stdlib.h に入ってる rand() 使いました。

何度か10,000回試行やってみた。
黒  白  引分
4476 5141 383
4534 5013 453
4467 5093 440
やっぱり傾向としては間違ってないようですね。
レスくれた人�dクス

× 白が圧倒的に強い
○ AIがランダムなら、後手有利
という所ですかね。。。
0300デフォルトの名無しさん2007/01/26(金) 16:59:33
>>292
>>299
10万回してみた。
自分はRubyプログラミングの練習で作った。

乱数は、Ruby標準を使用。
10万回にすると、>>292さんの数字にかなり近くなった。

100,000回の試行の結果
 黒の勝ち数:45513・・・45.513%
 白の勝ち数:50354・・・50.354%
 引き分け.. : 4133・・・ 4.133%
0301デフォルトの名無しさん2007/01/26(金) 17:38:40
>292 を仮の基準として、
>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:31
だからぁ、アルファベータ狩りすれば現代のパソコンで必勝は出来る
0304デフォルトの名無しさん2007/01/26(金) 17:56:43
お前らこういう小学生の自由研究みたいなのは得意なんだな
0305デフォルトの名無しさん2007/01/26(金) 18:01:38
だってニートなんだもん。><
0306デフォルトの名無しさん2007/01/26(金) 18:02:04
アルゴリズムの開発をしたいということならまず環境を作ろうよ
アルゴリズム部分はVBScriptかJavaScriptのエンジンを乗っけて外部ファイルの記述できるようにする
でそれらをサーバー上で管理してスクリプトを自由にアップダウン出来るようにしとくのだ
自分の作ったスクリプトもソフト上からボタン一発で登録できるようなのがいい
サーバ上にあるスクリプトから自由に対戦相手をダウンロードして自分のスクリプトを戦わせることで
スクリプトの有効性を検証する
定期的に誰かがサーバー上にあるスクリプトから優秀なものをピックアップして対戦させて
トップ10を集計表示する
そんな子供の集計やってる暇があったらこれくらい作れるだろw
0307デフォルトの名無しさん2007/01/26(金) 18:09:24
BearRev
0308デフォルトの名無しさん2007/01/26(金) 18:12:22
>アルゴリズム部分はVBScriptかJavaScriptのエンジンを乗っけて外部ファイルの記述できるようにする
遅杉却下。
0309デフォルトの名無しさん2007/01/26(金) 18:14:27
お前の頭よりは早いから大丈夫
0310デフォルトの名無しさん2007/01/26(金) 18:23:27
つーか、そんなんで書きたくないだろ
0311デフォルトの名無しさん2007/01/26(金) 18:29:09
VBSとかJSとか釣りとしか思えないな
Windows専用ならDLL、>>213
他のOSも考えるならプロトコル作ってネットワーク対戦
0312デフォルトの名無しさん2007/01/26(金) 18:30:28
>>302
各10万回試行(MT)

手: 黒勝/白勝/引分
d3 c3: 44531/51376/4093
d3 c5: 45592/50180/4228
d3 e3: 45622/50182/4196
0313デフォルトの名無しさん2007/01/26(金) 18:32:40
マジデリバーシには最適解はある、オレは知らんけど
0314デフォルトの名無しさん2007/01/26(金) 18:53:48
>>311
お前のほうが釣りにしか見えないんだがw
わざわざ対戦させるためにGUIから実装を始めてプロトコルのお勉強までするのか?
誰がそんな暇なことするんだ?
JSとかVBSなら基礎的なプログラム知識のある人ならほとんどの人が使えるし
新たに環境を構築する必要がない
メモ帳でも作れる
0315デフォルトの名無しさん2007/01/26(金) 18:54:03
>>306
正直、俺はそんな環境より
子供の集計のほうに興味がある。
0316デフォルトの名無しさん2007/01/26(金) 19:01:44
>>314
>JSとかVBSなら基礎的なプログラム知識のある人ならほとんどの人が使えるし
JSはまあわからんでもないがVBSはなあ・・・

DLLって言ってるのになんでGUIの話が出てくるのかもわからんし
プロトコルのお勉強って・・・?
0317デフォルトの名無しさん2007/01/26(金) 19:10:04
>>314
お前だけ釣りだろ?www
0318デフォルトの名無しさん2007/01/26(金) 19:12:41
とりあえずBearRev最強設定ですべてに勝てないやつは発言するなw
0319デフォルトの名無しさん2007/01/26(金) 19:19:56
最近、前スレ一が来ないせいか
ふいんき(ry が変わってきたね。

テンプレ再考の余地が……って思ったけど、
そもそも次スレが不要なのかな。
0320デフォルトの名無しさん2007/01/26(金) 19:29:41
>>319
お前は不要
0321デフォルトの名無しさん2007/01/26(金) 19:36:38
>>302
>>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:24
とりあえずベアの強いってやつには今勝てた
0323デフォルトの名無しさん2007/01/26(金) 20:12:33
/a b c d e f g h
1・・・・・・・・
2・・・・・・・・
3・・・・・・・・
4・・・○●・・・
5・・・●○・・・
6・・・・・・・・
7・・・・・・・・
8・・・・・・・・
↑notepadなんかにコピペすると見易いです


d3 c3 → (2)
d3 c5 → (1)
d3 e3 → (3)
だよね?
0324デフォルトの名無しさん2007/01/26(金) 20:23:48
>>323
合ってる。
0325デフォルトの名無しさん2007/01/26(金) 20:43:14
>>323
あー、なるほど、そういう座標形式なのか。
サンクス。
032612007/01/26(金) 20:48:38
すみません
開発は進行してますが、別のことに興味が出てきてしまい
ソースのうpが遅れています
手書きのものでは、今まで指摘してもらった箇所は修正でき
関数の分割も出来ています
序盤からproof number search(の改良版)で思考できたら最強っぽいのですが
0327デフォルトの名無しさん2007/01/26(金) 20:57:13
別のことだとぉー
0328デフォルトの名無しさん2007/01/26(金) 20:58:30
乱数によるシミュレートの意味を明確にしないと先に進めない希ガス
0329デフォルトの名無しさん2007/01/26(金) 20:59:07
ソースの整理してるんじゃなかったのか?
また新機能つけようとした挙句、別なことに興味って…
0330デフォルトの名無しさん2007/01/26(金) 20:59:46
オセロでproof number searchって意味ないんじゃないの
オセロの場合、どの手選んでも基本的に一律に60手目で終了するから
033112007/01/26(金) 21:06:31
>>330
手数が決まっているほどproof number searchは意味を持ちますよ
例えば、あと40手以内に玉を詰められると予測できたなら全力で
proof number searchをすればいいんです
詰まない場合は、意味がなくなって思考時間を消費するだけになります
033212007/01/26(金) 21:07:31
明日中には、MTD(f,r)をうpしますから待ってて下さい!
0333デフォルトの名無しさん2007/01/26(金) 21:12:13
>>332
待ってる。頑張れ
0334デフォルトの名無しさん2007/01/26(金) 21:12:14
>>331
>例えば、あと40手以内に玉を詰められると予測できたなら全力で
予測ってどうやるんだい?
0335デフォルトの名無しさん2007/01/26(金) 21:54:19
>>325
こういう座標形式がオセロでは一般的みたいだね

>>334
埋まってないマスが40個の時だろ?

0336デフォルトの名無しさん2007/01/26(金) 22:03:25
40手以内という例えが適切でないなw

で何手ってどうやって出すの?
0337デフォルトの名無しさん2007/01/26(金) 22:53:26
>>331
またどっかで聞いてきた事をそのまま言う
0338デフォルトの名無しさん2007/01/27(土) 00:11:11
>>332
お前の宣言は破られるものだと構えてる
0339デフォルトの名無しさん2007/01/27(土) 00:17:01
MTDとかの探索アルゴリズムは終盤解析でバグを取るといいよ。
末端ノードが試合結果じゃなくて評価関数だと正しく動いてるか分からないでしょ。
0340デフォルトの名無しさん2007/01/27(土) 00:41:32
>>283 中身読んだが,これ純粋モンテカルロ法だね
これだと物凄く収束が遅くて使いものにならないことが分かってる
少なくとも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
>>340
おもしろそうだと言って作った奴に対して、なぜ「それは遅い」っていうレスになるんだ?
0342デフォルトの名無しさん2007/01/27(土) 00:50:11
いまどき、パソコンでも全部の探索木やっってもすぐ終わるんじゃないのか
0343デフォルトの名無しさん2007/01/27(土) 00:55:12
>>1
MTD(f,r)とかいうアルゴリズムか。
rって簡易な前向き枝刈りだからMTD(f)とPCやMPCなどの併用に相当する。
まずr無しのMTD(f)を終盤で動かしてごらん。
>>342
終わりません
0344デフォルトの名無しさん2007/01/27(土) 01:01:02
パソコンの能力が1000倍になってもすぐには終わりません。
0345デフォルトの名無しさん2007/01/27(土) 01:04:49
>>341
別に貶したいわけじゃないだろうし
ああいう除法にも興味持つかもしれないからいいじゃん。
関係ありそうな情報はどんどん出して欲しいと思うよ。
0346デフォルトの名無しさん2007/01/27(土) 01:11:31
>>345
なんか>>340みたいなやつは、本意を読み取らずに無意識に自分より知識がないと
思った奴に対して、上から見てバカにしているように思えたんだよな。

レスを読まずにソースだけ読んだんだろうけどさ。
すっごくくだらない人間に見えた。
0347デフォルトの名無しさん2007/01/27(土) 01:22:02
何をいきり立ってるのか知らんが、一応フォロー?として情報出してくるだけマシなんじゃねーの?
0348デフォルトの名無しさん2007/01/27(土) 01:40:25
前スレ見て、少し自信がわいてきた。
0349デフォルトの名無しさん2007/01/27(土) 04:08:05
下を見るな。
上を見るんだ。
03503402007/01/27(土) 13:39:43
>>341 レスも読んでるよ
「収束が遅い」から「弱い」と書いたつもりなんだが,誤解されたか
確率的じゃないゲームでモンテカルロ法が使い物になったのはUCTのお陰と言っても過言じゃないので
その辺りを(他の人にも)きちんと知って貰いたかったのがあのレスを付けた一番の理由
書き方がぶっきら棒だったとは思うがあのソースは俺にも参考になったし
暇ができたら俺もMC/UCTでオセロのプログラムを書いてみようと思ってるし
>283を貶める意図は毛頭ない
今読み直すと,最初にTHX位入れておくべきだったと思う.長文スマソ
035112007/01/27(土) 14:14:26
既存の探索ルーチンに属さない新アルゴリズムに到達した!
囲碁、将棋の中盤以降がかなり強くなる
そして世界の頂点に立つ
035212007/01/27(土) 14:15:50
論文はどこへ持っていったらいいですかね?強かった場合
タコスの人のところへ持っていったらいいですかね?
0353デフォルトの名無しさん2007/01/27(土) 14:18:25
しね。
0354デフォルトの名無しさん2007/01/27(土) 14:25:26
強いソフトが出た場合、学会から論文を出さないかと打診が来る。

論文出すときは数字で実績出さないといけないよ。
妄想だけじゃダメ。
035512007/01/27(土) 14:33:29
わかりましたー今年のコンピュータ将棋の大会で優勝します!
0356デフォルトの名無しさん2007/01/27(土) 14:34:52
まて、先にオセロだオセロ。
0357デフォルトの名無しさん2007/01/27(土) 15:16:32
オセロは諦めたのか?
将棋に行くふりして逃げるのか?
0358デフォルトの名無しさん2007/01/27(土) 15:21:07
332 名前:1[] 投稿日:2007/01/26(金) 21:07:31
明日中には、MTD(f,r)をうpしますから待ってて下さい!
0359デフォルトの名無しさん2007/01/27(土) 15:22:40
>>1はようやくのぼりはじめたばかりだからな
このはてしなく遠いオセロ坂をよ…
0360デフォルトの名無しさん2007/01/27(土) 15:24:39
FFで言えばタイトルが出たレベル。

しばらくたってからやっぱり定石DBは必要ですねとか言い出しそう。
0361デフォルトの名無しさん2007/01/27(土) 15:29:23
逃げたら逃げたで別にいいけどね。予想してたから。
最近はもうソースも読んでなかったし。
0362デフォルトの名無しさん2007/01/27(土) 15:36:12
>>1にはさいしょから期待してなかったけど、もうどうでも良くなってきた
0363デフォルトの名無しさん2007/01/27(土) 15:41:53
結局>>1はまだ何一つまともなものを作ってない。
0364デフォルトの名無しさん2007/01/27(土) 15:42:25
1なんかよりまじめに作る人が現れないかなぁ
って何人かソースうpした人居たよね
その後はどうなってるんだろ?
改良続けてるのかな?
0365デフォルトの名無しさん2007/01/27(土) 15:45:22
>>352 なんとなくニセモノの匂いがするが,マジレスしておく
ttp://sig-gi.c.u-tokyo.ac.jp/
情報処理学会のゲーム情報学研究会が一番敷居が低い
0366デフォルトの名無しさん2007/01/27(土) 15:47:06
必ず儲かるという詐欺みたいなものだな。

何故強い、最強との言い切れるのか説明してないし、する気もないみたい。
疑似科学と変わらん。
想像だと波動アルゴリズム理論か?
0367デフォルトの名無しさん2007/01/27(土) 16:12:15
http://ja.wikipedia.org/wiki/%E7%96%91%E4%BC%BC%E7%A7%91%E5%AD%A6
0368デフォルトの名無しさん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:57
>>1よ。この状況をなんとかひっくり返してみろ!
0370デフォルトの名無しさん2007/01/27(土) 18:50:15
>>369
うまいこと言った?

うまいこと言ったつもりなんだね?
0371デフォルトの名無しさん2007/01/27(土) 18:52:54
>>369
誰がうまいことを言えと


とか言われたいのか?そうなのか?
037212007/01/27(土) 18:53:38
いいんです。凡人に理解してもらえなくても。
0373デフォルトの名無しさん2007/01/27(土) 18:55:42
自分は天才だとでも?
凡人は所詮凡人にしか相手にしてもらえないだろ。
何考えてるんだ?
0374デフォルトの名無しさん2007/01/27(土) 18:59:19
>>372
>>368
0375デフォルトの名無しさん2007/01/27(土) 19:05:32
>>372
確かに。
今の状態で理解できる奴がいたら天才かもしれんな。
0376デフォルトの名無しさん2007/01/27(土) 19:05:39
1,2,3該当と考えても差し支えないですか?
037712007/01/27(土) 19:19:03
>>351>>352は本物ですよ
>>372は偽物です
判別は容易でしょう
もうちょっと待ってて下さいね
0378デフォルトの名無しさん2007/01/27(土) 19:22:01
いや 難しい

>>372は>>1だと思ってた…
0379デフォルトの名無しさん2007/01/27(土) 19:27:01
>>372は簡単
句点があるから
0380デフォルトの名無しさん2007/01/27(土) 19:28:51
>>1鑑定士スレに変更!
038112007/01/27(土) 20:34:46
>>376
4も該当だろ。「最強の」と言ってるんだから。
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
>>1
何で鳥付けないの?
0384デフォルトの名無しさん2007/01/27(土) 22:11:31
そのほうが面白いからいんじゃない?
0385デフォルトの名無しさん2007/01/28(日) 00:04:03
実は>>1って全てなりすましじゃね?
0386デフォルトの名無しさん2007/01/28(日) 00:17:24
ソース出してきたのは本物だろ。
038712007/01/28(日) 00:46:04
すまん
眠くなって一休憩したら0時45分になってた
今から頑張る まっててくれ
0388デフォルトの名無しさん2007/01/28(日) 01:58:10
1は鳥付けろハゲ
0389デフォルトの名無しさん2007/01/28(日) 04:08:21
酉付けたら偽者のせいにできなくなるからでしょ
0390デフォルトの名無しさん2007/01/28(日) 05:11:30
5もじゃね?
自分の考えの表現であるソースコードはめちゃくちゃだし
MTD(f)+MPCの改悪でしかないのにMTD(f,r)なんて言葉作ってるし
0391デフォルトの名無しさん2007/01/28(日) 05:47:17
このスレ
比較的流れだけは速いのに
成果物は全然あがってこないんですね
0392デフォルトの名無しさん2007/01/28(日) 06:12:38
>>391
君が出してもいいんだよ?
0393デフォルトの名無しさん2007/01/28(日) 09:15:57
>>391
出すときは名前欄に「1」と書いておくことがこのスレの唯一のルール。
0394デフォルトの名無しさん2007/01/28(日) 09:20:27
但しネタを出すときね
039512007/01/28(日) 11:05:37
こうですか?
わかりません><
0396デフォルトの名無しさん2007/01/28(日) 11:26:07
>>395
>>104
039712007/01/28(日) 12:03:04
一睡もしないでやってたからもう少しでうpできます。
アルゴリズムもちゃんと完成しましたし、オブジェクト指向で書き直しました。
バグがなくなれば最強なリバーシをお見せすることが出来るのですが、どうもうまくいきません。














こうですか?
わかりません><
0398デフォルトの名無しさん2007/01/28(日) 12:06:36
なかなかだった
0399デフォルトの名無しさん2007/01/28(日) 12:07:37
ちょっと丁寧すぎない?
0400デフォルトの名無しさん2007/01/28(日) 12:13:51
>>365
そこは学部生・院生の練習場・・・
040112007/01/28(日) 13:04:22
>>397
惜しいな、句点は書かないんだ
0402デフォルトの名無しさん2007/01/28(日) 13:38:32
>>1は、とっくにいない気がする
0403デフォルトの名無しさん2007/01/28(日) 19:30:23
だって人間やめたはず…
0404デフォルトの名無しさん2007/01/28(日) 20:26:36
なるほど、だからあんなに、壊れてるんだな。
0405デフォルトの名無しさん2007/01/28(日) 20:35:58
>>1は俺の肉便器にしてやったぜ
040612007/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:25
マクロがきもい
0411デフォルトの名無しさん2007/01/28(日) 21:23:26
>>406
問題点1. 変数名が意味不明。kd とか cn とかじゃ意味分からん。
      意味の分かる変数名に変更汁。指摘したのに全然改善されてない。

問題点2. インデントもせず、詰め込みまくった団子のようなスタイル。
      一行に命令(式)一つを厳守した上でインデント汁。

問題点3. コメントが無い。
      必ずコメントを入れる事。それも命令自体の説明ではなく、動作の意図を判りやすく書く。

問題点4. 凶悪マクロ。
      そのまま関数に書き換えられないようなマクロは論外。
0412デフォルトの名無しさん2007/01/28(日) 21:26:16
問題点 c++を使ってる。Java、C#を使えw
0413デフォルトの名無しさん2007/01/28(日) 21:34:36
>>412
C++ と言ってもほとんど C だからまだいい。
むしろJavaだろうがC#だろうが、積極的にOOP使われるとえらい事になりそうだ。
0414デフォルトの名無しさん2007/01/28(日) 21:53:51
>>406
コンパイルして実行してもすぐ終了するのですが…?
main()内のコメントをはずしたらコンパイルエラー…???
0415デフォルトの名無しさん2007/01/28(日) 21:55:38
単体テストは…?
041612007/01/28(日) 22:01:38
各部品(関数)のコンパイルエラーは出なくなったよ
っていううpですから...まだ動作確認していません
0417デフォルトの名無しさん2007/01/28(日) 22:08:22
文法間違ってないだけでプログラムとしては価値ないだろ
0418デフォルトの名無しさん2007/01/28(日) 22:20:56
インデントもコメントも付けて書いてるが、うpの前に手作業で消しているに2ペンス
変数名は恥ずかしい名前しか付けられないに7ペンス
0419デフォルトの名無しさん2007/01/28(日) 23:24:41
なんでこういう汚い書き方するわけ?
0420デフォルトの名無しさん2007/01/28(日) 23:58:26
これでも最初に比べれば大分ましになったよ。
0421デフォルトの名無しさん2007/01/29(月) 02:04:42
問題点を改める気が無いなら俺はもう何もしないよ
改善されたソースが出されてたのにそれらを破棄して
自分のオリジナルに変更を加えて行ってるんでしょ
0422デフォルトの名無しさん2007/01/29(月) 02:40:01
>>406
小学生が冬休みの宿題として作ってもここまでひどいソースは書かないと思うんだが。

1が何者なのかが気になって眠れない。
0423デフォルトの名無しさん2007/01/29(月) 02:42:47
1画面分だけ見たけど
#define aa 256
#define bb 1024
#define cc 1500
これとか
0424デフォルトの名無しさん2007/01/29(月) 02:55:01
>>1
MPCの論文読んだ?
042512007/01/29(月) 06:03:15
まだ読んでません
英語を勉強してから読みます
日本語の論文は無いですかね?
042612007/01/29(月) 10:13:56
あと、数式とかよくわからないんですが
どこか数式の見方とか載ってるサイト教えてください
0427デフォルトの名無しさん2007/01/29(月) 11:31:24
英語も数式も読めない奴が論文出したいとか、どういうお花畑よ?
0428デフォルトの名無しさん2007/01/29(月) 12:07:29
さすがに偽者だろwww数学科でてるとかいう話が本当ならなww
0429デフォルトの名無しさん2007/01/29(月) 12:41:16
僕は はかせ〜 ってロリキャラに言われたいがために博士号取りましたよ
0430デフォルトの名無しさん2007/01/29(月) 13:12:41
博士号持ってる人に はかせ〜 って声掛ける人はめったにいない件
0431デフォルトの名無しさん2007/01/29(月) 15:08:55
院卒(数学)が数式読めないなんて、だめだこりゃ&舞台総崩れもんだ
0432デフォルトの名無しさん2007/01/29(月) 18:36:37
>>425
日本語のもあるけどオリジナルを読むほうがいいんじゃない?
043312007/01/29(月) 19:31:24
浅く読んで深く読む(MPC)っていうのは初めから使わないっていってるだろ?
四手浅く読むのに使う手間を、無くせば四倍の局面が読める
0434デフォルトの名無しさん2007/01/29(月) 19:38:48
自分がどんな変な事を言ってるのかも
わからんのか
0435デフォルトの名無しさん2007/01/29(月) 19:41:53
>>433
偽者だろ?
0436デフォルトの名無しさん2007/01/29(月) 19:50:00
偽物は最後に「こうですか?わかりません><」って書いてくれ
043712007/01/29(月) 19:58:39
そんな事を偽者に期待するなよ




こうですか?わかりません><
043812007/01/29(月) 19:58:55
425と426は偽で初めからMPCは使わないのが本物
0439デフォルトの名無しさん2007/01/29(月) 20:01:39
英語も読めないのか
もっと勉強しろよ
0440デフォルトの名無しさん2007/01/29(月) 20:04:29
>>433
MPCを理解してない証拠
044112007/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:21
ほら、四倍の局面が読めるなんて書いてないし導かれもしないでしょ。
044312007/01/29(月) 20:25:43
>>442
一手進むごとに、毎回、浅い読みをしなければ深く読めるんだよ
0444デフォルトの名無しさん2007/01/29(月) 20:27:54
その文章は概要を知るにはいいかもしらんけど
端折りすぎてて実装するには情報が全く不十分なんだよね
勝手に脳内補完して勘違いしてる人も実際いるし
0445デフォルトの名無しさん2007/01/29(月) 20:29:11
深さ4なだけで4倍じゃないだろ。
もっと80倍ぐらいじゃないか?
044612007/01/29(月) 20:29:37
>>444
だから実装はしないんだってば
0447デフォルトの名無しさん2007/01/29(月) 20:31:10
実装できるくらいの知識が無いから勘違いしてるんだってば
0448デフォルトの名無しさん2007/01/29(月) 20:44:21
>>446
しないじゃなくてできないと言う方が正確だな.
0449デフォルトの名無しさん2007/01/29(月) 21:00:58
Buroの論文読んでいないor読めないんでしょ?
0450デフォルトの名無しさん2007/01/29(月) 23:18:07
概念とか、考えがわかれば高校生でも英語の論文読めるよね。
0451デフォルトの名無しさん2007/01/30(火) 13:15:23
>>1
読むのにかかる時間をきちんと(定量的に)計算すればどっちが得か分かるはず
0452デフォルトの名無しさん2007/01/30(火) 16:24:05
もっとも確立されている理論に
攻撃の的を絞りたいという強迫観念があるらしい
045312007/01/30(火) 16:51:09
同一局面のハッシュ値が変わってしまうんだけどわかりますか?
未だに読みにくくてすみません
開発だけはしてますよっていううpのため、デバックや改良してもらう事をのぞんで
いる(いた)わけではかったんです
しかし、わからないのでうpします
045412007/01/30(火) 16:51:44
肝心のアドレス書き忘れた
ここです
http://up2moe.moe.hm/img/q546.txt
0455デフォルトの名無しさん2007/01/30(火) 17:01:11
そんなもの誰も読まないよ
045612007/01/30(火) 17:01:37
221行目からの部分です(不要な部分は省略しました)
なぜでしょうか?

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
正しいつづりはaddressね
恥ずかしい間違い多いね
0458デフォルトの名無しさん2007/01/30(火) 17:06:36
助けてほしいならそれなりのお願いの仕方あるんじゃないの?
相変わらずコメントは入ってないし、変数名も意味不明。
お前が何を考えているかみんなわかっているような聞き方だけど、
そのソースを読んでやりたいことを理解して、その上で丁寧なアドバイスをしてくれるような
物好きはいないと思うよ。

とりあえずadress();消してみればいいんじゃね?
0459デフォルトの名無しさん2007/01/30(火) 17:09:07
>>456みたくソースにもコメントつけてくれ
0460デフォルトの名無しさん2007/01/30(火) 17:12:39
みんなに自分の考えを伝える気が無いなら延々と一人でデバッグしとけば?
0461デフォルトの名無しさん2007/01/30(火) 17:15:46
とりあえずaddress();消してみてるに100ペソ
046212007/01/30(火) 17:19:59
自己解決するしかないか...
コメントつけたとしても、それで伝わるとは限らないんですよ
全体をまんべんなく伝えきらなければ伝わらないと思うんです
0463デフォルトの名無しさん2007/01/30(火) 17:21:35
試しもしないで何適当な事言ってんだか
人に伝えるのがそんなに面倒か?
046412007/01/30(火) 17:22:32
mt()ルーチンにだけコメントつけてみますね
ちょっとまってて下さい
0465デフォルトの名無しさん2007/01/30(火) 17:23:13
伝わるとは限らないが、コメントはつけろ
まずはそれからだ
0466デフォルトの名無しさん2007/01/30(火) 17:29:40
コメントをつけると伝わる可能性がちょっとは増えると思うけどな。
と言っても3%くらいだけど。

まずはハッシュの計算以外の関数をコメントアウトしろ。
それでハッシュ値が正しかったら、コメントアウトしたとこに原因がある。
徐々にコメントアウトを解除していって、絞り込んでいけ。
046712007/01/30(火) 17:31:02
void mt(){
BB:  //ラベル
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:09
( ゚д゚)ポカーン
046912007/01/30(火) 17:38:13
続き

LL:; //ラベル
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:26
ダメだこりゃ。。。
0471デフォルトの名無しさん2007/01/30(火) 17:42:02
ごめんなさい。期待した俺が悪かったです。もうスパゲティーはたくさんです。
047212007/01/30(火) 17:42:05
>>461>>466
わかりました
やってみます
0473デフォルトの名無しさん2007/01/30(火) 17:42:42
フローチャート書いてくれね?200倍わかりやすいと思う。
047412007/01/30(火) 17:47:53
わかりました
フローチャート書いてみます
0475デフォルトの名無しさん2007/01/30(火) 17:52:47
お前ら釣られ過ぎ。
小学生の相手してても仕方ねーべ。
047612007/01/30(火) 18:28:06
フローチャート自動作成ツールはありませんかね?
0477デフォルトの名無しさん2007/01/30(火) 18:38:47
>>BB:  //ラベル

こんな馬鹿なコメントは無いぞw
盤面の初期化とかもっとブロックを表すにふさわしいコメントつけろよw
0478デフォルトの名無しさん2007/01/30(火) 18:39:27
>>467-469
1.ラベルのコメントは、そこからどんな処理をするルーチンが始まるのかを示せ。「//ラベル」は無意味。
2.概要として「αカット、βカットも…」の様な書き方は構わないが、変数名や定数が何を意味しているか分からないのでその詳細が不明。
3.何度もいわれていることではあるが、文ごと(ザックリ言うと;ごと)に改行すべし。
4.変数の使い回しみたいにコメント中の「差し手」も複数の意味で使い回してる?
0479デフォルトの名無しさん2007/01/30(火) 18:41:26
フローチャートは廃れた。

箇条書きの日本語に流れを書け!
いまはこちらが主流。
0480デフォルトの名無しさん2007/01/30(火) 18:42:39
初心者って絶対やるよな。

var = 1 + 1;//計算したものをvarに代入

とか意味の無いコメントw
まぁ、必ず通る道だと思うけどな
0481デフォルトの名無しさん2007/01/30(火) 18:44:38
>>476
べつにそこまでちゃんと書かなくていい。
コメント書かないならどういう流れで処理をしたいのか、それがわかればいいんだから、
手書きで紙に書いてうpでもいいくらい。

とりあえず処理を順番に箇条書きで
0482デフォルトの名無しさん2007/01/30(火) 18:57:18
//αカット、βカットもおこらないならば次の手を調べる
とあるので、上のif文見たけど分岐してない?
よく見るとremove()内で分岐している…

このような書き方は避けるべきだ。
制御構造が分かりづらい。
0483デフォルトの名無しさん2007/01/30(火) 18:59:05
というよりもGOTO&ラベル使うな!
0484デフォルトの名無しさん2007/01/30(火) 19:42:30
そうじゃない、コメントとソースはもういい

まずはアルゴリズムとか処理の流れを日本語で説明するんだ。
048512007/01/30(火) 19:53:21
186行目あたりが間違えてました

if((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:56
コンパイルして逆アセンブルしてからのが読みやすいかもしれん
0487デフォルトの名無しさん2007/01/30(火) 20:01:04
スパゲッティをコンパイルしてもスパゲッティしか吐いてくれんよ
0488デフォルトの名無しさん2007/01/30(火) 20:04:16
最適化できないような絡み方してそう
0489デフォルトの名無しさん2007/01/30(火) 20:07:13
ところで、part2になっても期間は三ヶ月以内なのか?
いつまでたっても〆切が来ないぞ
0490デフォルトの名無しさん2007/01/30(火) 22:03:21
いい勝負しそうじゃね?
ttp://www0.us.ioccc.org/main.html
0491デフォルトの名無しさん2007/01/31(水) 00:17:32
いきなりプログラム書かずに、日本語で書いてアルゴリズムを整理するべきだろ
0492デフォルトの名無しさん2007/01/31(水) 00:50:37
>>491
1はそれで失敗してるんじゃなかったっけ?
0493デフォルトの名無しさん2007/01/31(水) 00:58:29
お前ら、難読可ツール通したソースに何マジレスしてるんだ?



0494デフォルトの名無しさん2007/01/31(水) 01:11:08
>>491
イメージをつかむため、
ダイアグラムなどを使ってマインドストーミングして、
仕様を日本語で書き、
仕様記述言語で書き、
プログラムを書き、
検証ソフトを使って検証するんだよ
0495デフォルトの名無しさん2007/01/31(水) 02:18:32
面白い・・・
0496デフォルトの名無しさん2007/01/31(水) 04:57:48
C言語初心者のもれも参戦。途中でやめるかも知れないが、生暖かく見守ってくれ。
0497デフォルトの名無しさん2007/01/31(水) 05:16:12
さらに混乱の要素を増やすというのかw
がんばってかき回してくれ
0498デフォルトの名無しさん2007/01/31(水) 06:55:03
>>496
君のような人が現れるのを待ってた
応援するよ
0499デフォルトの名無しさん2007/01/31(水) 11:31:49
みんな、違うぞ

日本語で書いたアルゴリズムを、このスレで後悔しろと言っているんだよ
0500デフォルトの名無しさん2007/01/31(水) 12:10:06
既に紙の上にはまとめてあるって言ってたよね?
0501デフォルトの名無しさん2007/01/31(水) 12:14:13
バグが出ました

↓

アルゴリズムとかかけ

↓

バグ直りました


この流れから、アルゴリズムとか書けって言われたのは、バグ直すためだとおもってるんじゃね?
だから書かないんじゃね
0502デフォルトの名無しさん2007/01/31(水) 12:27:12
能力が無いのに努力しないで言い訳ばかり
人とコミュニケーションが全くできない
自分の間違いを指摘されても正さない
人を見下している
平気で嘘をつく
1を見てるとイライラするね
0503デフォルトの名無しさん2007/01/31(水) 12:29:21
1は小学生か幼稚園児だろ
大目に見てやれよ
0504デフォルトの名無しさん2007/01/31(水) 12:35:18
まあ、>>1が小学生であろうと幼稚園児であろうと一向に構わないが、
とりあえず公の場でやると宣言したからには必ずやり遂げてもらわないと。
公の場で発言することの重要性を身をもって知ってもらわないとね。

とりあえず、>>1は毎日進行状況を全員に解るように報告しなさい。
0505デフォルトの名無しさん2007/01/31(水) 12:44:58
>>496
本気ならトリ付きで。
0506デフォルトの名無しさん2007/01/31(水) 13:00:19
>>496
1と同じ事されるのはごめんだけどやめても別に責めないよ
ところでC言語はどれくらい勉強したの?
0507デフォルトの名無しさん2007/01/31(水) 13:00:41
誰か、1 に見本として見せられるような、日本語の良コメントのついたソース知らない?
0508デフォルトの名無しさん2007/01/31(水) 13:02:52
どうせ見ないんじゃない?
論文教えても見なかった前科があるし
0509デフォルトの名無しさん2007/01/31(水) 13:13:08
http://homepage1.nifty.com/~takaot/prprpr/comment.html
http://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
何この1www
プログラムも人間性もカスじゃんww
0511デフォルトの名無しさん2007/01/31(水) 17:21:59
>>510
アルゴリズム・理論もね
0512デフォルトの名無しさん2007/01/31(水) 22:51:46
>>1どこいった
0513デフォルトの名無しさん2007/01/31(水) 23:44:34
今北産業
0514デフォルトの名無しさん2007/02/01(木) 01:22:37
>>1最強のアルゴリズムできた→
goto多用、変数不明、コメントなしのスパゲッティ→
>>502な>>1を温かく見守るスレ
0515デフォルトの名無しさん2007/02/01(木) 05:18:41
プログラムよりプログラマがおもしろい
0516デフォルトの名無しさん2007/02/01(木) 09:09:46
無能な1とそれに翻弄される住人達
0517デフォルトの名無しさん2007/02/01(木) 14:46:59
>>1は準アニータ
0518デフォルトの名無しさん2007/02/01(木) 16:21:14
ここ落ちてた?
0519デフォルトの名無しさん2007/02/01(木) 16:22:04
2ch全部ね
0520デフォルトの名無しさん2007/02/01(木) 17:01:42
電源工事だよ
0521496 ◆8VT5lt6VLs 2007/02/01(木) 22:27:06
>>498
ありがとう。期待に沿えるかわからないが。

>>505
いまのところ本気。

>>506
どう答えればいいのかな・・・。1のソースが理解できないぐらい。
0522デフォルトの名無しさん2007/02/01(木) 22:33:15
>>521
1のソースは読まないほうがいいよ。
あれは悪い例だから決して真似しちゃだめだよ。
0523デフォルトの名無しさん2007/02/01(木) 22:35:23
>>521
何か読んでる本とかサイトはある?
変数宣言とか条件分岐やループはわかる?
キーボードやファイルの入出力は?
0524496 ◆8VT5lt6VLs 2007/02/01(木) 22:57:41
>>522
了解しますた。

>>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:50
期待age
0528496 ◆8VT5lt6VLs 2007/02/02(金) 12:03:56
できますた。突っ込み待ってまつ。
http://ud.gs/300hs
パスは鳥
0529デフォルトの名無しさん2007/02/02(金) 12:07:50
>>528
おつ。
言われた以上の事をやってるな。
けっこうできるんじゃん。
0530デフォルトの名無しさん2007/02/02(金) 13:01:22
既存のオセロプログラムのソースとか>>7のリンク先とかは読んだ事ある?
なんだか読んだ事がありそうっていうか多少知識がありそうな書き方だね。
0531デフォルトの名無しさん2007/02/02(金) 13:11:21
>>528
パス付きはやめれ
http://up2moe.moe.hm/img/q564.zip
0532デフォルトの名無しさん2007/02/02(金) 13:19:26
>>531
なぜパス付きはだめ?
このスレ見てればわかるのに
0533デフォルトの名無しさん2007/02/02(金) 13:26:32
専ブラで右クリック即保存が出来ない。
逆になんでパス無しではだめ?
0534デフォルトの名無しさん2007/02/02(金) 13:44:42
そんなのアップする人の自由
0535デフォルトの名無しさん2007/02/02(金) 13:54:04
じゃあ聞き方を変えよう。なぜパス付きにしたいの?
特に理由が無いなら >533 とかの事情もあるし、配慮してくれればうれしいのだけど。
053612007/02/02(金) 13:58:59
思考ルーチン以外のバグが特定できないため一から作り直します
0537デフォルトの名無しさん2007/02/02(金) 14:03:59
>>535
本人に聞けよ
0538デフォルトの名無しさん2007/02/02(金) 14:08:59
>>535
いずれにしても直リン禁止のアップローダが多いと思うのだけど。

それはさておき、このまま>1が「最強の嗜好ルーチン」とやらを完成させるのと、
>496がみんなの支援を受けつつ充分強いプログラムを完成させるのと、
どっちが見込みある……かは>536が本人かどうかに関わらず明らかだね。
0539デフォルトの名無しさん2007/02/02(金) 14:33:03
>>536
お前もうイラネ
0540デフォルトの名無しさん2007/02/02(金) 16:02:21
>>528
なかなかいいね
この調子で頑張って
0541デフォルトの名無しさん2007/02/02(金) 16:10:42
>>528
探索をするためには盤面を戻す操作も必要だから次はまずこれを実装してね。
ここでコピー方式と差分方式がある。差分がいいと思うけど。
既にやってたりもっと行けそうだと思ったりしたら進みたいとこまで進んでいいよ。
0542デフォルトの名無しさん2007/02/02(金) 16:14:13
ここで衝撃の事実、>>1=>>496、が明かされる
0543デフォルトの名無しさん2007/02/02(金) 16:18:27
それは俺もちょっと思ったけど。
別人でしょ。
054412007/02/02(金) 17:45:16
なかなかうまくいかないので、関数の入出力と、それを確認するプログラムを
始めに作ることにする
0545デフォルトの名無しさん2007/02/02(金) 17:47:01
お前誰?
誤爆?
0546デフォルトの名無しさん2007/02/02(金) 18:13:12
>>544
一つ一つの関数を検査する時には仕様どおりに動いても、グローバル変数を使い回す限り、
他の関数と組み合わさった時に認識困難で追跡困難、修正困難なバグがいくつも出てくるよ。
0547デフォルトの名無しさん2007/02/02(金) 18:33:42
1が作る限り確認プログラムにも必ずバグが入る
0548デフォルトの名無しさん2007/02/02(金) 18:47:57
test
0549496 ◆8VT5lt6VLs 2007/02/02(金) 19:02:09
>>529,540
ありがとう。そう言ってもらえるとうれしい。

>>530
>>1,7の日本語のページはどれも読んだことあります。英文はどんどん後回しに・・・。
ソースは Thell と Zebra をちらっと見た程度でつ。

>>531
このスレ見てない人に見られるのはちょっと抵抗が・・・。

>>538
そのためにはまだ知識不足なもよう(´・ω・`)

>>541
いま作ってる方法だと、1回分の着手場所と差分を記録するだけで10ワードにもなるんだ。
このどんぶり勘定が後々響いてきそうな悪寒。もっかい検討してみます。

>>542,543
スレへの出現の仕方とか似てますね。いや、別人ですが。
0550デフォルトの名無しさん2007/02/02(金) 19:35:02
>>549
着手場所と、それぞれの方向への反転個数だけ記録すればでいいのでは。
どの方向も0〜6までの値しかとらないので、構造体にしてビットフィールド指定すれば
3bit*(8+2)=30bit = 1dword で済む気がする。
0551デフォルトの名無しさん2007/02/02(金) 21:07:15
ダウンロードができないよ。
0552デフォルトの名無しさん2007/02/02(金) 21:32:51
俺も>>528が落ちない
うpろだ死んでる?
0553デフォルトの名無しさん2007/02/02(金) 21:34:44
>>1のソースと比べると雲泥の差だな
0554デフォルトの名無しさん2007/02/02(金) 21:39:30
>>551-552
>>531 にコピーがある
0555デフォルトの名無しさん2007/02/02(金) 22:24:38
>>554
サンクス。
落とせた。
0556デフォルトの名無しさん2007/02/02(金) 23:58:45
レジスタ使わないほうが速いな。

Core2は同時に使用するレジスタ数が少ないと非常に高いパフォーマンスを発揮する。
しかしレジスタ数が増えるとパフォーマンスは劇的に低下する。
整数レジスタが3個+メモリ参照が1個+条件分岐命令が1個の場合、5命令同時に
1クロックで実行を完了する。しかし整数レジスタへのアクセスが1つ増えると処理に
かかるクロックが1クロック増加する(すなわち性能が半分になる)。
0557デフォルトの名無しさん2007/02/03(土) 00:04:26
>>556
その手の話題はこちらへどうぞ

x86命令の所要クロック計測スレPart3
http://pc10.2ch.net/test/read.cgi/tech/1168399966/
055812007/02/03(土) 00:53:47
オセロだけではなく、将棋、囲碁プログラム再生用のチェックプログラムを
作ってやるぜ!これでみなさん作成がらくになりますよ
055912007/02/03(土) 00:55:41
作成でした
0560デフォルトの名無しさん2007/02/03(土) 01:39:07
>>556
最適化の前に、まずは動くものを作るべきだろ
0561デフォルトの名無しさん2007/02/03(土) 09:46:07
>>496
Minimax法とNegamax法の違いは理解してる?
αβ法をそれぞれの方式で書ける?
0562デフォルトの名無しさん2007/02/03(土) 21:36:57
ぐぐってみたが、なかなか面白そうだな
俺も作ってみるか
0563デフォルトの名無しさん2007/02/03(土) 22:28:55
>>562
作る人はトリ付けてね
がんばれ
0564496 ◆8VT5lt6VLs 2007/02/04(日) 03:39:38
>>550
良い案ありがとう。
色々考えたけど、縦型探索時に記録するのはそれまでの枝の評価値の最大値と、その枝
への経路(差分)のみであって、全ての枝への経路を記録するは必要ないという結論に。
したがってある1経路の記憶容量が多少多くても全体への影響はないと思われます。
横型探索だとそうもいかない気がしますが、当面はこの方向で行こうかと。
もしかしてアホなこと言ってたら訂正願います・・・。

>>556
ガリガリチューンは一番面白そうなとこですが、プログラムがもう少し形になってからで・・・。

>>560
ごもっともです(´・ω・`)

>>561
わかります。ただ書けるかどうかとは別問題だと思うんで、考えながら書いてみまつ。

>>562
作る人が何人か出てきて、対戦させたりすると面白そう。おれが言うのもなんだが、がんばれ。
0565デフォルトの名無しさん2007/02/04(日) 04:16:17
俺も少し作ってみたんだが、なんか弱い
探索部分にバグがあるのかなぁ
05665652007/02/04(日) 04:19:11
「リバーシのアルゴリズム」って本を読んでます
難しいことはまだ取り入れてませんが・・・
0567デフォルトの名無しさん2007/02/04(日) 05:48:50
対戦用にGUIで盤面作ろうかな、
と思ったんだけど需要はあるのかな?
各オセロプログラムはdllで作ってもらって、
コンボボックスか何かで選択可能みたいな形で…。
0568デフォルトの名無しさん2007/02/04(日) 06:51:14
BearRev Professional でdll自作可能って書いてあるみたい
使ったことないからわからんけど

もしGUI作ってくれるならオープンソースがいいな
0569デフォルトの名無しさん2007/02/04(日) 08:48:22
>>1は?
057012007/02/04(日) 10:17:29
ほっといてください
0571デフォルトの名無しさん2007/02/04(日) 14:15:26
>>570
ちゃんと人間やめとけよ
0572デフォルトの名無しさん2007/02/04(日) 18:50:37
動物にエサを与えないでください
かわいそうと思ってもみんなが迷惑します
0573デフォルトの名無しさん2007/02/04(日) 18:54:51
>>566
僕もそれ読んだことがあります。
次は「リバーシプログラムの作り方」っていうシェアウェアを読もうと思ってます。
まだ序盤のサンプルしか読んでませんけど、パターン評価やMPCについては
こっちのほうが詳しそうなので送金して全部読むつもりです。
一応紹介。
http://hp.vector.co.jp/authors/VA015468/platina/index.html
0574デフォルトの名無しさん2007/02/04(日) 22:59:34
誰かPart1のログ持ってる?
持ってたらうpして欲しいんだけど
0575デフォルトの名無しさん2007/02/04(日) 23:09:24
たいして面白くないよ。
0576デフォルトの名無しさん2007/02/04(日) 23:10:04
>>574
ttp://makimo.to/cgi-bin/ffind/ffind2.cgi?/2ch/pc10_tech/1166/1166749119.html
0577デフォルトの名無しさん2007/02/04(日) 23:13:53
ソースなんて説明とともにたくさん落ちてるだろ
0578デフォルトの名無しさん2007/02/04(日) 23:16:55
おーありがとう
今から読む
0579デフォルトの名無しさん2007/02/04(日) 23:27:54
pdfとかより本のほうが読みやすいお
0580デフォルトの名無しさん2007/02/04(日) 23:50:03
「リバーシのアルゴリズム」の本は入門用にはいいんだけどね
トップレベルのプログラムを作るには情報が足りないんだよな
壁を越えるにはBuroの論文は必読
0581デフォルトの名無しさん2007/02/05(月) 05:11:55
このスレには馬鹿どもが、しかももったいぶった馬鹿どもがうようよしている。
同じ馬鹿でも偉ぶった馬鹿ほど鼻持ちならないものはない。
普通の馬鹿なら話もできるし、助けてやることもできよう。
しかし自分の馬鹿さ加減を隠すため、
偉そうなでたらめを並べ立てて人を恐れ入らせようとするようなもったいぶった馬鹿だけは、
僕は絶対に我慢できない!
普通の馬鹿はいかさま師ではない。
正直な馬鹿は結構だ。
だが不正直な馬鹿となると始末におえない。
このスレで見たのは、この種の威張り腐った馬鹿どもの群れなのだから僕はすっかり頭にきてしまった。
だからもう決してこのスレを見ないつもりだ。
0582デフォルトの名無しさん2007/02/05(月) 05:37:07
おつかれさん
0583デフォルトの名無しさん2007/02/05(月) 08:00:57
>>581=>>1?
逃げたの?
0584デフォルトの名無しさん2007/02/05(月) 08:26:48
やっぱり1は最低だな
0585デフォルトの名無しさん2007/02/05(月) 12:28:13
>>573
読んだらレビューよろ
0586デフォルトの名無しさん2007/02/05(月) 18:47:46
>>581は、
ttp://boss.noppo.org/~inouetom/memo/20061118.html
に乗ってる本?の改変。つまり誰かのねた。
0587デフォルトの名無しさん2007/02/05(月) 19:05:06
ファインマンもこんなことを言うんだね。
子供っぽいw
0588デフォルトの名無しさん2007/02/05(月) 19:25:57
いや、ファインマンほど子供っぽいノーベル賞受賞者はいないんじゃまいか
0589デフォルトの名無しさん2007/02/05(月) 19:48:55
アインシュタインも結構子供っぽいと思うぞー
http://www.spacepark.city.koriyama.fukushima.jp/events/Science/2005/1015/img01.jpg
0590デフォルトの名無しさん2007/02/05(月) 19:49:46
つまり、お前らが普段大人っぽいと思っているスタイルは、ただの馬鹿だったりするわけだ
0591デフォルトの名無しさん2007/02/05(月) 20:06:14
逆じゃないか?
才能があったら大人っぽくしなくてもいいんだよ。
凡人が子供っぽくしてたら…
0592デフォルトの名無しさん2007/02/05(月) 20:07:28
そうではありません。
バカと天才は紙一重と言われる所以はスタイルが似ているからです。
大人っぽいスタイルは凡庸な人です。
0593デフォルトの名無しさん2007/02/05(月) 20:13:41
つまり裸の大将のスタイルがベストだと…
0594デフォルトの名無しさん2007/02/05(月) 20:25:28
アインシュタインはアスペルガー症候群だから、子供っぽいところは仕方がない。
0595デフォルトの名無しさん2007/02/05(月) 20:33:16
1が来ないから雑談が続く
0596デフォルトの名無しさん2007/02/05(月) 21:10:11
>>585
今日送金しました。ライセンスキーが来てないのでまだ読んでませんけど。
レビューですか・・そういうの苦手なんですけど・・。
作者は日本のコンピュータオセロ界で3本の指には入る
実力の持ち主なので間違いなく良いだろうと思います。
僕は彼がトップだと思ってるんですけどね。
でもこんな風に考えてる僕ですから
レビューもバイアスが掛かったものになるかもしれません。
0597デフォルトの名無しさん2007/02/06(火) 03:03:05
>>596
バイアス上等。楽しみに待ってるよ。
0598デフォルトの名無しさん2007/02/06(火) 12:59:32
c++の機能を使って作り直しているんだけど
下から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は白
}
059912007/02/06(火) 13:00:22
>>598は1です
060012007/02/06(火) 13:05:49
bord=1だったら、board& operator=(int n)で出来ますよね

これに括弧を付けるにはどうしたら?
0601デフォルトの名無しさん2007/02/06(火) 15:32:34
何このわけわかんないオペレーターオーバーロード
0602デフォルトの名無しさん2007/02/06(火) 15:32:35
>>598-600
boardクラスにset()関数でも作ってみては?
board& set(int index, char color) { bd[…]=color; }
こんなの。

あと、変数名が訳分からんのが昔のままだからそこも直しておくれ。
0603デフォルトの名無しさん2007/02/06(火) 15:37:51
動物にエサを与えないでください
かわいそうと思ってもみんなが迷惑します
060412007/02/06(火) 19:06:09
>>602
わかりました!そうしてみます
0605デフォルトの名無しさん2007/02/06(火) 19:29:43
相変わらずゴミを生産してますね。

誰も読む気がしないだろ。

インデント覚えろカス。
0606デフォルトの名無しさん2007/02/06(火) 19:58:50
1 は幼稚園児なのか小学生なのかは知らないが釣りとしか思えない。
0607デフォルトの名無しさん2007/02/06(火) 20:00:47
スルーしとけ。
お前らスルー憶えろ。
060812007/02/06(火) 20:41:44
どう直したらいいのか書いてくれ
598だと
0609デフォルトの名無しさん2007/02/06(火) 20:46:43
厳しい助言

このスレみてみろ。
http://pc10.2ch.net/test/read.cgi/tech/1153542424/
誰もお前みたいな書き方してないぞ。
このスレ見て勉強しろ。
0610デフォルトの名無しさん2007/02/06(火) 21:09:32
>>496
はかどってますかー?
どんな感じー?
0611デフォルトの名無しさん2007/02/06(火) 21:10:27
>>565
強くなったかいー?
0612デフォルトの名無しさん2007/02/06(火) 21:43:19
「リバーシのアルゴリズム」を注文した
まずはこれ読んでみようと思う
0613デフォルトの名無しさん2007/02/06(火) 21:45:44
>>598
なんで二重ループとか単純でないメンバ関数を一行で書くかなこの人は。
061412007/02/06(火) 21:50:49
>>613
どこまでがひとつの関数(処理)なのかが一目瞭然だよ?
0615デフォルトの名無しさん2007/02/06(火) 21:57:46
ねーよwww
061612007/02/06(火) 21:58:58
>>614は偽者です
誰か>>598を直してもらえませんかね?
0617496 ◆8VT5lt6VLs 2007/02/06(火) 22:09:58
>>565
作成の話題が出たと思ったら、すでに漏れの斜め上を進んでおられるようでつね・・・(´・ω・`)

>>567
面白そう。DLLをみんなで何パターンか作れれば良いと思うがどうだろう。

>>610
あんましはかどってないです。とりあえずαβ法を実装したところです。
いまは序中盤の評価関数のことで頭がいっぱい・・・。問題の解がないぶん、終盤よりはるかに難しいです。

あと今日の時点のソースでつ。変な部分にはどうか突っ込みお願いします。
ttp://ud.gs/300kc
パスは前回と同じで、鳥です。
0618デフォルトの名無しさん2007/02/06(火) 22:13:22
将棋だとGUIにCSA将棋とか何とか言うのがあるんだが
あれを規範に、リバーシもGUIだけ誰かつくらないものか。
061912007/02/06(火) 22:14:53
>>1

BearRev Professional は高機能リバーシです。
以下の特徴があります

対局者は DLL として自作可能
デザインや音はカスタマイズ可能


http://www20.pos.to/~sleipnir/software/bearreversi/index.html
0620デフォルトの名無しさん2007/02/06(火) 22:27:55
>>619
ああ、すごくいいじゃないか。
1に書いてあったな。それはすまなかった。

1は意外なところで役に立ったな。
0621デフォルトの名無しさん2007/02/06(火) 22:30:53
>>617
おつ。
ざっと見たけどいい感じ。
素直な実装だね。
次は中盤評価関数か終盤解析?
0622デフォルトの名無しさん2007/02/06(火) 23:28:41
左辺値と右辺値を知らないのか?
0623496 ◆8VT5lt6VLs 2007/02/06(火) 23:37:25
>>621
ありがとう。
とりあえず間に合わせで序中盤の評価関数を書いておき、一定の水準で思考できるようになったあたりで
いろいろと手を広げてみようかなと。
終盤は今の状態に、さらに序中盤の評価関数で使うネタを加味しようと思っています。
ネタ? これから考えますorz
0624デフォルトの名無しさん2007/02/07(水) 00:02:14
>>616
ttp://up2moe.moe.hm/img/q599.txt
062512007/02/07(水) 00:15:13
>>624
ありがとう
でもよくわからないので今までのソースでいく
0626デフォルトの名無しさん2007/02/07(水) 00:17:51
>>625
\(^o^)/モウダメポ
0627デフォルトの名無しさん2007/02/07(水) 00:18:12
>>625
(・д・)ポカーン
0628デフォルトの名無しさん2007/02/07(水) 00:28:39
>>625
これはさすがにネタ or 偽者だろ
0629デフォルトの名無しさん2007/02/07(水) 00:30:48
>>1
お前はまだC++に手出すのは早い
Cでどんなコードが出るのか,C++だとどうなのか,
自分の眼で確かめられるだけのハードの知識を付けてからに汁
0630デフォルトの名無しさん2007/02/07(水) 05:19:59
我流初心者なんてそんなもんだ
0631デフォルトの名無しさん2007/02/07(水) 05:40:02
1はわざと阿呆のふりをして、「これくらいだったら俺のほうが良いものができそうだ」と
思わせるのに徹しているのかも知れない。だとしたら1は天才!!



本当はただの天然なんだろうけどよ('A`)
0632デフォルトの名無しさん2007/02/07(水) 05:55:20
大学院いってても、基本的な部分で馬鹿だとこうなるって
見本のようなヤツだ
0633デフォルトの名無しさん2007/02/07(水) 06:10:29
俺はこのスレで紹介されてるもののどれかの作者が、宣伝のために
馬鹿な1を演じているんじゃないかとか勘ぐってしまった。
0634デフォルトの名無しさん2007/02/07(水) 12:14:36
>617 ttp://up2moe.moe.hm/img/q600.zip
0635デフォルトの名無しさん2007/02/07(水) 13:58:34
>>617
DLできなかったので>>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:31
rival = BLACK + WHITE - mover;
0637デフォルトの名無しさん2007/02/07(水) 15:01:36
関数にしちゃダメ?

rival = getRival(mover);

int getRival(int mover){
if(mover == BLACK) rival = WHITE;
else rival = BLACK;
}
0638デフォルトの名無しさん2007/02/07(水) 15:39:49
int getRival(int mover){
if(mover == BLACK)
return WHITE;
return BLACK;
}
0639デフォルトの名無しさん2007/02/07(水) 15:43:51
アホデスカ
0640デフォルトの名無しさん2007/02/07(水) 15:50:34
アホデスネ
0641デフォルトの名無しさん2007/02/07(水) 17:00:49
どなたかMOUSE(µ)アルゴリズムを試す人は居ませんか?
http://www.tournavitis.de/herakles/engines.htm
0642デフォルトの名無しさん2007/02/07(水) 18:59:38
>>617
今は問題ないけどSearch関数内のtmp=-1ってのが気になった

それとNegaMaxにした方が場合分けが無くなっていいかなと
0643496 ◆8VT5lt6VLs 2007/02/07(水) 22:02:58
>>634
うpろだドットネットはたまに落ちてるときありますね・・・。
短縮URLを使ってるので、そのときに(たぶん)発生するリダイレクトが原因で見れないのかも。
もふもふろだはパス付きzipが不可な点が気になりまつ。zipの中にパス付きzip入れときゃ良い気もしますが。

>>635
EDGE などの定数の実際の値は、まだ考慮の余地がある気がするので、とりあえず
rival = mover ^ (BLACK ^ WHITE) としとけば良いでしょうか?

>>642
NegaMax法良いでつね。移行してみます。
tmp = -1; だと、もしやまずい点が?
mover のパスの処理について良い案が浮かばず、このようになってしまいますた・・・。
0644496 ◆8VT5lt6VLs 2007/02/07(水) 22:12:12
>>637>>638
>>643の方法と合わせて、関数っぽいマクロにしときまつ。
0645デフォルトの名無しさん2007/02/07(水) 22:17:18
636がよくない?
0646デフォルトの名無しさん2007/02/07(水) 22:32:45
>>645
同意
0647496 ◆8VT5lt6VLs 2007/02/07(水) 22:37:47
見落としてますたorz
そうします。
0648デフォルトの名無しさん2007/02/07(水) 22:39:28
>>643
Zebra(ttp://radagast.se/othello/)の
Writing an Othello program ページの下のほうに
Some source code の Basic endgame solver欄があって、
終盤解析のソースが2つDLできるよ(endgame.c と、リンク先にsolver.1-4.zip)。
すでにDL済みなら、ゴメン。
06496482007/02/07(水) 22:42:43
訂正
ttp://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
>>651はバイアスが掛かってると思った部分を除いたり何かして
誰かが書き直したものでしょう
0655デフォルトの名無しさん2007/02/08(木) 21:17:23
>>651は>>1なんじゃね?
0656デフォルトの名無しさん2007/02/08(木) 22:01:57
実際に有効かは分からないが,使えそうな配列を見つけたので貼っとく.

int 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
>>656
パスとか暗号とか言い出さなければ、もふろだでいいんじゃね?
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
>>656
よくわからんのだが、これはbitboardにして辺の評価に使うんか?
0659デフォルトの名無しさん2007/02/08(木) 22:53:49
>>656
どこでもいんじゃね?見る側がとやかく言うこともないだろ。好きなとこでいいよ
>>658
ハッシュじゃないか?違うかもしれんが

06606562007/02/08(木) 23:50:37
>657 thx
まだ単純なαβと寄せ集めの評価関数を実装したレベル(処理量の都合で6手読みまで)
ttp://up2moe.moe.hm/img/q669.zip

LinuxでGNU makeがあればmakeでいけるはずだけど,色々怪しい動きをしてるから
問題があるかもしれない.
最悪全てのソース(.cc),ヘッダ(.hh)を一ヶ所に集めてまとめてC++コンパイラに
かければ大丈夫だと思う.拡張子がマイナーなのは申し訳ない.

>658,659
一応ハッシュの一種.
単射性を損ねずにどこまで処理量と空間量を削れるかに挑戦してた.
(まだ試してないけど)
0661デフォルトの名無しさん2007/02/09(金) 00:05:47
>>660
落ちてる?DLできないんだが
0662デフォルトの名無しさん2007/02/09(金) 00:32:32
>>661
普通に開けたけど。
0663デフォルトの名無しさん2007/02/09(金) 00:45:06
俺の場合はDLしてもファイルが壊れてて解凍できないって出る
06646612007/02/09(金) 00:50:58
>>662
サンクス!今試したらDLできた
しかし解凍してもファイルが出てこんぞ。。。当方+Lhaca1.20使用
ちなみにエラーは出てない
0665デフォルトの名無しさん2007/02/09(金) 00:53:38
普通に解凍すると、「q669」ファイルが出てくる
.zipにリネームしたら更に解凍出来た。
Lhaplus1.52使用
0666デフォルトの名無しさん2007/02/09(金) 00:55:48
ちょ、ナニコレw 

% 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
二重に圧縮してるのか
解凍できた
06686612007/02/09(金) 01:09:29
+Lhacaには荷が重かったなw
>>666を参考にcygwin経由で無事解凍
066912007/02/09(金) 11:14:09
ちゃんとうごいていないけどNewバージョン

http://up2moe.moe.hm/img/q670.txt
067012007/02/09(金) 11:16:12
なるべくグローバル変数を減らして、共有変数を減らしました
関数はほとんど値渡しにしました
でもまだ、動かない 
0671デフォルトの名無しさん2007/02/09(金) 12:30:55
うん、一生動かなくて良いよ
0672デフォルトの名無しさん2007/02/09(金) 12:44:06
>>660
落とせないです><
0673デフォルトの名無しさん2007/02/09(金) 13:34:04
>>672
例の二重圧縮に引っかかってるのでは?
0674デフォルトの名無しさん2007/02/09(金) 14:31:04
落とせた
ざっとしか見てないけど読みやすい
1にも読んで欲しい
0675デフォルトの名無しさん2007/02/09(金) 15:41:00
>1は1からと言わず0から書き直した方がいいな。
0676デフォルトの名無しさん2007/02/09(金) 17:32:17
一旦今までのコードを破棄するのは賛成だが、
すぐにまた書き始めても同じようなものができるだけ。
その前にもっと勉強すべき。
目的だけでなく手段も。
努力が足りなすぎる。
0677デフォルトの名無しさん2007/02/09(金) 17:53:38
批判するだけじゃなくて代案を持ってくるぐらいの気概がある人間はいないものかね
0678デフォルトの名無しさん2007/02/09(金) 18:15:01
いやぁ、応援したいのはヤマヤマだけど、コードの意味が分からん以上何も手伝えない。
その上で書き直すよう助言しても殆どの場合が無視。これじゃ手伝えないがな。

せめて1の考えてるアルゴリズムが理解できればコーディングはやってみるのだが。
0679デフォルトの名無しさん2007/02/09(金) 18:16:20
まぁ>>1のおかげでリバーシプログラム書く人が出てきたし>>1は役割を全うした
今後このスレで大会とかしたら面白いかもね
0680デフォルトの名無しさん2007/02/09(金) 18:18:55
代案なら以前にちょくちょく出てる
おまえログ見てないor理解してないだろ
0681デフォルトの名無しさん2007/02/09(金) 18:45:18
>>660
ところでこれどうやって遊ぶの?
メイクはできたんだけど
0682デフォルトの名無しさん2007/02/09(金) 18:57:14
反面教師ってやっぱり必要なんだね。
0683デフォルトの名無しさん2007/02/09(金) 19:19:56
>>660
slideTopLeft() とかって何ですか
0684デフォルトの名無しさん2007/02/09(金) 19:21:54
>>677
>>678

>>616
>>624
>>625
0685デフォルトの名無しさん2007/02/09(金) 19:27:04
一流の釣師なんだよ
他のやつらにやる気を出させてるだろ
0686デフォルトの名無しさん2007/02/09(金) 19:40:14
last move:
O turn
moves: D3 C4 F5 E6

ここでF5とかf5とか56とか打っても何もならないんだけど
06876602007/02/09(金) 20:01:24
>>686
すまないがちょっと理由が思い付かない.文字関連かも
とりあえず,HumanPlayer.ccの87行目の strToIndex(...) 内の
return r;
の直前に
cout << r << endl;
を挿入してコンパイルした後,F5と入力したときの出力を教えてほしい.

>>683
盤面の斜めラインを縦に並べるための操作.
verticalScan()で全8列の縦方向の着手可能点を一気に求めているので,
それに合わせるために使います.
Boardクラスは遊び半分でやってみた部分が多いので近々書き直すかも
0688デフォルトの名無しさん2007/02/09(金) 20:12:10
F5
-1075227799
こんなだった
0689デフォルトの名無しさん2007/02/09(金) 20:14:49
というかソース読んだらすぐ分かった
int r; を int r = 0; とするか
r += 8*(str[1]-'1'); を r = 8*(str[1]-'1');
とすればいいんだ
これで打てた
06906602007/02/09(金) 20:30:04
サンクス
普通にバグだったか…orz

ただこの辺はワイド文字とかに対応してないから書き直した方がいいな
069112007/02/10(土) 04:38:53
差し手のサーチがうまくいかない...誰かわかりますか?

http://up2moe.moe.hm/img/q671.txt
0692デフォルトの名無しさん2007/02/10(土) 04:44:49
1の考えてるアルゴリズムに問題がある。
期待通りに動かないのは正常。
0693デフォルトの名無しさん2007/02/10(土) 05:00:40
1はプログラミングという手段をずいぶんと軽視しているが
その手段を手段として使えておらずにむしろ足元をすくわれている
0694デフォルトの名無しさん2007/02/10(土) 05:04:01
アルゴリズムを説明してごらん。
問題点を指摘してあげるよ。
069512007/02/10(土) 05:11:44
差し手に関数部分だけを抽出しました
どうかよろしくお願いします

http://up2moe.moe.hm/img/q673.txt
069612007/02/10(土) 05:15:39
serch(bord ,-1, F) だと新規に
Fの手番で検索します

0番目から順に8方向探索して、
torerusuが1以上ならばそこにおけると判定します




int serch(board bord ,int z, int F){
int w,l;
for(w=z+1;w<64;w++){
fore(l,8)if(torerusu(bord,w,F,l)>0)break;
if(l<8)return w;}return 64;}
0697デフォルトの名無しさん2007/02/10(土) 05:16:36
アルゴリズムの説明はしないの?
説明すれば言ってることと書いてることの違いはわかるけど?
0698デフォルトの名無しさん2007/02/10(土) 07:46:18
1にできると思う?
0699デフォルトの名無しさん2007/02/10(土) 07:52:08
lp[] を作るためのiの初期化に失敗しているような気がする.
(lp[] を作る意図が不明なので「気がする」という表現にしておく.)

考えていることもろくに説明もせずに「誰かわかりますか?」って(ry
0700デフォルトの名無しさん2007/02/10(土) 09:35:43
5 名前:デフォルトの名無しさん[sage] 投稿日:2007/02/06(火) 20:41:01
11 名前:デフォルトの名無しさん[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
>>702
ちゃんと書かれたソースに関しては、言い過ぎではない。

但し、制御構造さえも置き換えるようなマクロを多用した糞コードでは殆ど無意味。
07047012007/02/10(土) 10:03:50
w<64って変じゃないか?
あと関係ないけど、
if(torerusu(bord,w,F,l)>0)break;は
if(torerusu(bord,w,F,l))break;でいいんじゃないのか?

serchって取れるかどうかの判断結果だけ返すんだね。
なんか無駄っぽい。
0705デフォルトの名無しさん2007/02/10(土) 10:11:11
どうでもいいが、変数名とかがローマ字なのは痛々しい
07067012007/02/10(土) 10:15:17
ごめんw<64はあってるっぽい。
0707デフォルトの名無しさん2007/02/10(土) 10:26:25
>>705
でも、変な英語よりはずっといいでしょ。
0708デフォルトの名無しさん2007/02/10(土) 10:37:38
>>702
ついでに改行を適度に入れることの効用.

 デバッガで1行毎に動きを追いかけて動作確認できる.

動作確認しているようなことは伝わってはくるが,
デバッガを使い出したら,あの書き方ではろくに動作確認できんと気が付くはず.

また,下手なマクロを書くとせっかくデバッガがあっても無駄になる.
かえって解りにくく,追いかけにくなるようなマクロを書いてどうするんだと
散々指摘されてるんだけどねぇ.
0709デフォルトの名無しさん2007/02/10(土) 11:10:28
>>1のはindentなどのソース整形ツールで機械的に変えたくなった。
0710デフォルトの名無しさん2007/02/10(土) 11:39:00
無関係な突っ込み
n=z-8*m;
は
n=z % 8;
0711デフォルトの名無しさん2007/02/10(土) 12:05:30
誰かが言ったようにlp[]の初期化に失敗している。
7行オセロのソースを見ろよ。
0712デフォルトの名無しさん2007/02/10(土) 12:10:32
lp[] ={9,9,9,9,1,7,8,9}
これで大丈夫なのか?
0713デフォルトの名無しさん2007/02/10(土) 12:19:47
int lp[]={-9,-8,-7,-1,1,7,8,9};
で正常に1手目は出た。
llp[]の意味するところがわからんから後はどうなるかわからん。

ごみを生産するんじゃない。
0714デフォルトの名無しさん2007/02/10(土) 12:24:28
デバッガ使いたくないならprintfでもはさんでデバッグやれ。

if(z<64)printf("\n着手可能 %d %d",z/8+1,z%8+1);
0715デフォルトの名無しさん2007/02/10(土) 12:37:18
なぜintにしたか?
それはcharだとデバッガで文字として出てくるから。
0716デフォルトの名無しさん2007/02/10(土) 12:43:38
めんどくさいからそのまま春。
int serch(board bord ,int z, int F)
{
int w,l;
for(w=z+1;w<64;w++)
{

fore(l,8)
{
if(torerusu(bord,w,F,l)>0)return w;//break;なんなの?
}

//if(l<8)return w;これなんだ?
}
return 64;
}
0717デフォルトの名無しさん2007/02/10(土) 13:11:45
質問
mtのfor(;;)for(;;){
って意味あるの?
0718デフォルトの名無しさん2007/02/10(土) 13:31:44
わかった!
continueを知らないだけだ!
0719デフォルトの名無しさん2007/02/10(土) 13:44:10
>>717
break など使うものか!意地でも goto を使うんだ!
という意志の表れと見た。
0720デフォルトの名無しさん2007/02/10(土) 13:48:05
いや、breakで抜けた後もループしたいからforforしてるんだよ。
continueしらないだけ。
0721デフォルトの名無しさん2007/02/10(土) 14:18:57
読み直してみた。たしかに continue を知らないだけのようだ。
0722デフォルトの名無しさん2007/02/10(土) 14:38:09
#define PASS 64
0723デフォルトの名無しさん2007/02/10(土) 14:46:10
少しは努力しろ
0724デフォルトの名無しさん2007/02/10(土) 14:54:56
#define が多いけど、enum は使わないの?
0725デフォルトの名無しさん2007/02/10(土) 14:56:32
単に知らないの
072612007/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にします
072712007/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:41
暗号解析も進んでるようだねw
0729デフォルトの名無しさん2007/02/10(土) 17:58:59
みんな優しいなあ
0730デフォルトの名無しさん2007/02/10(土) 18:03:07
>>727
問題外のソースの断片を貼らないでください。
073112007/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:49
日本語でおk
073312007/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());
}
073412007/02/10(土) 18:43:51
要約すると、メンバ関数内で、他のメンバ関数を使いたいという事です
0735デフォルトの名無しさん2007/02/10(土) 18:45:08
operator() ってなに?
0736デフォルトの名無しさん2007/02/10(土) 18:48:01
デバッガで1行ずつ実行すればいいんじゃないの?
0737デフォルトの名無しさん2007/02/10(土) 18:49:08
あ、ごめん
そういう内容ではなかったのね
0738デフォルトの名無しさん2007/02/10(土) 18:49:51
デバッガの使い方なんか知らないだろ
だから一行にまとめてしまってるんだし
0739デフォルトの名無しさん2007/02/10(土) 18:50:19
int fnc(){return operator()(3,2,4);}
int fnc(){return (*this)(3,2,4);}
0740デフォルトの名無しさん2007/02/10(土) 18:50:57
エスパーするなら、[]演算子のオーバーロードを勘違いしてるんじゃないかと

前>>1は、いったいいつになったら日本語でアルゴリズムを書けるようになるんだろうな。
074112007/02/10(土) 18:51:42
>>735
ここです
関数呼び出し演算子
http://homepage2.nifty.com/well/Operator.html#paren

>>736
他のメンバ関数の呼び出し方を知りたいんですが
074212007/02/10(土) 18:53:57
>>739
わかりました!ありがとうございます
*thisは省略できるものだと思っていたのですがつけないと駄目みたいですね
0743デフォルトの名無しさん2007/02/10(土) 18:55:49
thisを知らなかっただけだろ
074412007/02/10(土) 18:58:55
>>743
727の10行目で使ってますよ
0745デフォルトの名無しさん2007/02/10(土) 19:01:37
>>741
C++ってこんなクソ仕様があるんだ・・・
こんなの使ったら、ホントに作ったやつじゃねーと解読できない
プログラムになっちゃうよ・・・・
とくに、>>1みたいな初心者が、無意味に多用したがるからな
0746デフォルトの名無しさん2007/02/10(土) 19:08:02
意味がわからずに使ってるからバグが入ってるんだよ
0747デフォルトの名無しさん2007/02/10(土) 19:24:22
1ってアルゴリズム考えるのがへたくそだなぁ
0748デフォルトの名無しさん2007/02/10(土) 19:37:53
>>726
lpは各方向のマスへのオフセットだろ。

ifでの真偽は、0で偽それ以外で真。

removeにbreakを入れないほうがイイ。
場合によってcontinueとbreakの使いわけができるようになる。
わけの分からんforを省ける。それとfor(;;cnt++)。

あとremoveの2つ目のreturnの判定は不要じゃないか?
よく分からんけど
0749デフォルトの名無しさん2007/02/10(土) 19:40:15
どんどんいい感じに普通のプログラムになっていってるね
0750デフォルトの名無しさん2007/02/10(土) 19:50:51
どのへんが?
0751デフォルトの名無しさん2007/02/10(土) 19:52:41
serch()
0752デフォルトの名無しさん2007/02/10(土) 19:55:32
aが抜けてるといいたいんだろ。最初から気付いていたよ。
あと board bordとかも。
0753デフォルトの名無しさん2007/02/10(土) 19:55:46
どの角度から見ても普通のプログラムには程遠いけどw
0754デフォルトの名無しさん2007/02/10(土) 19:58:12
うちで直したのは普通に近いよ。
gameクラスにグローバル変数ぶちこんで、susumu、removeも関数に直した。
gotoは直してないけどな…
printfがあちこちにぶち込んであるからぼろぼろだけどな。
0755デフォルトの名無しさん2007/02/10(土) 20:01:06
「普通」の基準が問題なんだなw
0756デフォルトの名無しさん2007/02/10(土) 20:05:46
bord()って使い方もまずいよな。

これって関数風に使う場合だしな。
[ ]のほうがあってると思うけどな。
0757デフォルトの名無しさん2007/02/10(土) 20:48:10
いや、みんなのデバッグが加わったことで
serch()が普通に近づいたってことだろ
0758デフォルトの名無しさん2007/02/10(土) 21:01:19
なんか盛り上がってるなw
0759デフォルトの名無しさん2007/02/10(土) 21:06:46
自分よりレベル低いのが居ると安心してしゃべれるんだろ
0760デフォルトの名無しさん2007/02/10(土) 21:07:48
>726 名前: 1 投稿日: 2007/02/10(土) 17:40:47
>よりオブジェクト指向で書き直すことにしました ちょっと待っててくださいね

それよりも SourceForge あたりにプロジェクト作ってみ?
と言ってみるテスト.
0761デフォルトの名無しさん2007/02/11(日) 16:23:04
1って人間性がダメだな
0762デフォルトの名無しさん2007/02/11(日) 16:26:34
何ですかこの期待はずれなスレは
0763デフォルトの名無しさん2007/02/11(日) 16:49:21
おれにとっては期待以上だ
0764デフォルトの名無しさん2007/02/11(日) 16:57:28
まじめに作ってる人には期待してるよ
まだ結果は出てないし
0765デフォルトの名無しさん2007/02/13(火) 16:36:15
age
0766デフォルトの名無しさん2007/02/13(火) 17:05:19
もう面倒だから打てる場所にランダムに打つルーチンで手を打とうぜ
文字をランダムに出力してシェイクスピアのオセロが完成する確率よりは遥かに大きい確率で勝てるものが作れる
0767デフォルトの名無しさん2007/02/13(火) 17:36:05
うん、君はそれで作れば?
0768デフォルトの名無しさん2007/02/13(火) 17:47:43
俺がポケコンで作ったときは、処理速度が遅いから
打てる中で一番多くひっくり返せる手を選ぶようにした。
思考に数秒かかる。
こんなんでも、それなりに面白い。
0769デフォルトの名無しさん2007/02/13(火) 17:50:18
bitboardとか知らないけど、俺も作ってみよう
0770デフォルトの名無しさん2007/02/13(火) 17:52:09
じゃあ俺はDで作っちゃうぞ
0771デフォルトの名無しさん2007/02/13(火) 18:30:10
じゃあ僕はバッチファイル!
0772デフォルトの名無しさん2007/02/13(火) 21:02:00
2次元配列で作ったけど、1次元が主流なんかな?
0773デフォルトの名無しさん2007/02/13(火) 21:03:51
なんでもいいかと
0774デフォルトの名無しさん2007/02/13(火) 21:18:42
1次元の利点は,
アドレス計算が高速,
関数の値として返せる,
引数の個数が減る,
位かな.絶対有利と言っていいと思う
0775デフォルトの名無しさん2007/02/13(火) 22:00:54
>>774
なるほど。
初めて作ったんだけど、>>496さんのを見て、1次元配列だったからちょっとびっくりした。
0776デフォルトの名無しさん2007/02/13(火) 22:23:17
>>774
8x8なら絶対有利と言うほどはないんじゃないかなぁ。
まあ10x10とかの手法使ってるなら絶対有利かもしれんが。
0777デフォルトの名無しさん2007/02/13(火) 22:54:54
2次元配列はどうも好みじゃない
関数にポインタ渡すときの宣言が嫌い
0778デフォルトの名無しさん2007/02/13(火) 23:06:49
Thellの「強+」って何手読みかな?
0779デフォルトの名無しさん2007/02/13(火) 23:30:20
bitboardにするとundoはやらないでコピーするもんなの?
0780デフォルトの名無しさん2007/02/13(火) 23:47:40
うん、そう。
07817692007/02/14(水) 00:37:59
ひとまず動くものが出来たので晒してみます
http://555.sytes.net/up/img/414.zip



0782デフォルトの名無しさん2007/02/14(水) 00:55:21
GUIキタコレ!
0783デフォルトの名無しさん2007/02/14(水) 00:59:04
おお、お疲れ様です。
いい感じですね。
0784デフォルトの名無しさん2007/02/14(水) 01:04:43
>>781
dllの追加について何かヒントきぼん
0785デフォルトの名無しさん2007/02/14(水) 01:26:02
>>784
.net系の言語でプロジェクトの参照にRevPlugin.dllを追加、
RevPlugin.dll内にあるRev.IPlayerを実装したクラスを一つ以上作る、
それdllにしてPluginフォルダにぶちこむ、
でOKです。

SampleAIプロジェクトのRandomAI.csとかを参考にしてください。
0786デフォルトの名無しさん2007/02/14(水) 01:26:46
>>784
Interfaces.csにインターフェースが定義されてるから
これ実装すればいいんじゃない?
てかソース見てみよう。
0787デフォルトの名無しさん2007/02/14(水) 01:28:50
.NETはパスだな
もまいらがんばってくれ
0788デフォルトの名無しさん2007/02/14(水) 01:30:55
と言うか何語ですかこれ? GUI 部分は別に要らないですが、
思考部分を Unix でコンパイルするにはどうすれば?
0789デフォルトの名無しさん2007/02/14(水) 01:32:20
>>788
C#ていう言語。
monoで使えるかも?
0790デフォルトの名無しさん2007/02/14(水) 01:34:12
>>789
C# と mono ですか。調べてみます。�d
0791デフォルトの名無しさん2007/02/14(水) 01:40:13
僕もC#でプログラムを作ってたのでちょうどいいですね。
独自のGUIも既にありますけど、
これに対応すれば他の人が作ったのと対戦しやすそうですね。
0792デフォルトの名無しさん2007/02/14(水) 01:46:41
>>788
AIは適当に作った物なのでコンパイルする価値無いかも・・・
0793デフォルトの名無しさん2007/02/14(水) 02:12:42
>>769
初期化エラーになります><
0794デフォルトの名無しさん2007/02/14(水) 02:27:52
んなこと言ってる奴は自分でなんとかしろカス
0795デフォルトの名無しさん2007/02/14(水) 07:53:42
C#か・・・
dllならC++で作って読ませることもできるかな?
0796デフォルトの名無しさん2007/02/14(水) 12:42:22
>>781
これ良いですね。
MinMaxAIに勝てないし、昔自作したオセロプログラムで対戦しても歯が立たないorz

出来れば、のお願いが2つ。
・初期配置を逆にしてほしい。
・直前手を表示してほしい。(印を付けるとか)
オセロルールでは初期配置が逆なので上記のようにソフトを2つ並べて
手動で対戦するときにそのほうが都合が良いので。
勝手言ってすまん。
0797デフォルトの名無しさん2007/02/15(木) 00:10:13
なんか良い感じになってきたな、1以外は。
0798デフォルトの名無しさん2007/02/15(木) 00:19:00
ところで、1ってなんですか?
0799デフォルトの名無しさん2007/02/15(木) 00:27:31
バカは「1」って名前で発言するのがここのルール
0800デフォルトの名無しさん2007/02/15(木) 00:51:56
1の人気に嫉妬
0801デフォルトの名無しさん2007/02/15(木) 02:50:08
>>800
>>799
0802デフォルトの名無しさん2007/02/15(木) 14:35:04
こんな天気の日は、引きこもってコード書きに限りますな
0803デフォルトの名無しさん2007/02/15(木) 14:37:25
評価は何を基準にしているの?
置けるコマの数?
0804デフォルトの名無しさん2007/02/15(木) 14:55:36
評価はパターンが基本で、これに置ける場所の数などを加える事もある。
全ての評価要素には係数を掛けて和を取る。
この係数は、局面と教師信号を大量に用意して評価値と
教師信号の誤差が最小になるように最小二乗法で求める。
0805デフォルトの名無しさん2007/02/15(木) 15:03:21
>>804
う〜ん、難しそう。
0806デフォルトの名無しさん2007/02/15(木) 15:29:36
>>803
ttp://fujitake.dip.jp/sealsoft/thell/algorithm.html
このページの下のほうに評価関数についての説明があるよ。

>>804
問題は、データの多さなんだよね。
強さを求めるには仕方のないことかもしれないけど、
思考部分のプログラムが(高速化のために展開していたとしても)数百KB程度に対して、
評価用のデータが10MB↑とかになるのがね...
0807デフォルトの名無しさん2007/02/15(木) 15:44:12
>>806
サンクス
0808デフォルトの名無しさん2007/02/15(木) 16:42:53
>>806
「リバーシプログラムの作り方」に入ってるプログラムは
比較的コンパクトで精度のいい評価関数だと思う。
標準的なパターン(ロジステロとかの)より小さくて最大で8マス分なのと
ゲームの段階によってステージ分けしてないので小さくしてる。
0809デフォルトの名無しさん2007/02/15(木) 17:06:10
1のプログラムをdll化して対戦させてみるとどうだろう。
できる人頼む
0810デフォルトの名無しさん2007/02/15(木) 17:26:11
まともに動くようになればDLL化してやってもいいけど。
0811デフォルトの名無しさん2007/02/15(木) 17:32:19
オレも動くようになったらDLL化しようと思ってるんだが
最後までいかんのがなあ
081212007/02/15(木) 18:09:40
オブジェクト指向はもうすぐできます 
待っててください
0813デフォルトの名無しさん2007/02/15(木) 18:11:32
>>812
もういいよ
0814デフォルトの名無しさん2007/02/15(木) 18:14:10
>>812
なんの目的でオブジェクト指向にするのかもう一度聞かせてくれ
081512007/02/15(木) 18:20:04
C++を使っているから。
081612007/02/15(木) 18:27:16
オブジェクト指向はプログラムがわかりやすくなるからですよ
0817デフォルトの名無しさん2007/02/15(木) 18:38:22
1の主張の対偶をとると、
プログラムがわかりにくいのは、それがオブジェクト指向でないから
となる。
しかし、これは明らかにおかしい
ゆえに1は明らかにおかしい

完
0818デフォルトの名無しさん2007/02/15(木) 18:57:33
1がバカだからプログラムもわかりにくくなるんです
0819デフォルトの名無しさん2007/02/15(木) 21:01:07
C をベルトコンベアに例えると、C++ はピタゴラ装置なんだよね。素人だと特に。

単純なはずのベルトコンベアさえ迷路状態にしてしまう >1 が、あろう事かピタゴラ
装置にまで手を出せば、もっと手の付けられないものが出来上がるのは明らか。
0820デフォルトの名無しさん2007/02/15(木) 21:12:02
ピタゴラ装置なんて初めて聞いた
0821デフォルトの名無しさん2007/02/15(木) 21:15:19
1は自分のやってる事が高度で他人がバカだから
理解してもらえないとでも思ってるんだろ
0822デフォルトの名無しさん2007/02/15(木) 21:39:33
今更わかりきったことを・・・
0823デフォルトの名無しさん2007/02/15(木) 21:40:41
勉強できるヤツが頭が良いって言うわけじゃない事が
よくわかりました
0824デフォルトの名無しさん2007/02/15(木) 21:41:23
まるで小学生のようだ。

そう言えば、昔AppleJapanのコピーで「小学生になろう」ってのがあったな。
0825デフォルトの名無しさん2007/02/15(木) 21:51:34
1は自分で考えるのは下手だけど
どこかで見聞きした事をそのまま言うのはできるんでしょ
0826デフォルトの名無しさん2007/02/15(木) 22:23:42
>>820
ルーブ・ゴールドバーグ・マシン (Rube Goldberg machines)っていったらわかる?
バック・トゥ・ザ・フューチャーの最初のシーンみたいなやつ。
0827デフォルトの名無しさん2007/02/15(木) 22:47:51
それもわかんない
けどググったらわかった
なるほど確かにそんな感じだね
0828デフォルトの名無しさん2007/02/15(木) 22:57:31
簡単に言うと、ドミノ倒しの中にスイッチが紛れてるんだな

しかもどれが何のスイッチか一切分からない。
0829デフォルトの名無しさん2007/02/15(木) 23:24:51
>>828
むしろ分からなくなった
0830デフォルトの名無しさん2007/02/15(木) 23:31:36
>>817
対偶を勉強しなおせ
0831デフォルトの名無しさん2007/02/15(木) 23:46:33
>>829
例えば、何らかの誤作動を直したり
一部を拡張しようとした場合

スイッチだけが出ていれば、押す順番なんて簡単に変えられる

だが、スイッチの順番を変える為だけに
ドミノをひたすら並び替え直す必要があったり
スイッチを押す順番によって動作が変わってしまったり
そもそも何のスイッチか分かりにくかったり
0832デフォルトの名無しさん2007/02/15(木) 23:52:24
>>829
つttp://flowmachine.free.fr/wiiflow/wii4/lunchtime.swf
0833デフォルトの名無しさん2007/02/15(木) 23:53:45
要するに色んなからくりの連鎖反応で機能するって事でしょ
0834デフォルトの名無しさん2007/02/16(金) 00:05:08
ゲームのインクレディブルマシーンみたいなもんだろ?
0835デフォルトの名無しさん2007/02/16(金) 00:05:26
http://www.youtube.com/watch?v=Q5nmspVOz_Y

どっかに車の部品でやるやつもあったな
0836デフォルトの名無しさん2007/02/16(金) 00:16:54
http://www.youtube.com/watch?v=hXV9aYoI0A8&NR
これだった
スレ違いだがな
0837デフォルトの名無しさん2007/02/16(金) 00:58:15
あれ・・・
学習量増やしたら弱くなっちゃった。
過学習ってやつ?
0838デフォルトの名無しさん2007/02/16(金) 01:33:47
学習させた棋譜によるし、そもそも学習の仕組みにもよるだろ
0839デフォルトの名無しさん2007/02/16(金) 08:41:29
結局、評価は演繹ではなく帰納的ってこと?
0840デフォルトの名無しさん2007/02/16(金) 15:13:16
うん、そう。
0841デフォルトの名無しさん2007/02/16(金) 15:33:52
じゃあ換言すると、強さは評価関数の係数を決める教師データ量の多さと
探索の深さで決まるってこと?

だとすると、1はその中で何をしているの?
0842デフォルトの名無しさん2007/02/16(金) 15:43:38
何もしてない
0843デフォルトの名無しさん2007/02/16(金) 15:47:01
>>832
面白いんだがw
0844デフォルトの名無しさん2007/02/16(金) 15:50:49
1は探索を深くしようとしてるんだけど
評価関数がデタラメだから意味の無い局面だけ深い探索をしてる
0845デフォルトの名無しさん2007/02/16(金) 16:14:42
>>844
ヒント:ベンチマーク
0846デフォルトの名無しさん2007/02/16(金) 17:43:15
うん、ゼブラにも負けてた。
0847デフォルトの名無しさん2007/02/16(金) 17:59:38
筆記用具な
0848デフォルトの名無しさん2007/02/16(金) 18:24:44
>>847
ゼブラとはオセロプログラムの事ですよ。
http://www.radagast.se/othello/download.html
0849デフォルトの名無しさん2007/02/16(金) 22:48:51
白黒つけるぜ!ゼブラマン!!
って奴か。
次はゼブラゾーンから取って 横断歩道という名前はなしですか。
なしです。
0850デフォルトの名無しさん2007/02/17(土) 12:38:49
IOSの棋譜ってもう手に入らないのか?
0851デフォルトの名無しさん2007/02/17(土) 15:18:02
IOSの棋譜はもう見つかりませんでしたけど
後継サーバであるGGSの棋譜はあります。
http://www.cs.ualberta.ca/~mburo/GGS/game-archive/Othello/
こっちのほうが質も量も優れていると思います。
ただ人間の棋譜や試合中で途切れている棋譜なども含まれているので
一定の条件で抽出したほうがいいと思います。
0852デフォルトの名無しさん2007/02/17(土) 15:34:53
ありがとう。
GGSの方にはIOSの棋譜がマージされてるんかな?
とりあえずいろいろいじってみるよ
0853デフォルトの名無しさん2007/02/17(土) 16:44:21
GGSの棋譜にIOSの棋譜は入ってないと思います。
あと評価関数作りにはこの棋譜も役立つと思います。
http://abulmo.club.fr/resources/base.htm
0854デフォルトの名無しさん2007/02/17(土) 22:11:35
1はどこいった?
0855デフォルトの名無しさん2007/02/17(土) 22:36:44
もう飽きたんじゃ?
08561偽2007/02/17(土) 22:40:01
オセロはマスターしたので将棋に移りました。
085712007/02/17(土) 23:03:02
ああ
0858デフォルトの名無しさん2007/02/17(土) 23:11:35
将棋スレ過疎ってるから来いよ>>1
0859デフォルトの名無しさん2007/02/19(月) 16:52:02
そして誰もいなくなった
0860デフォルトの名無しさん2007/02/19(月) 16:56:09
じゃあネタ投下してくれ
0861デフォルトの名無しさん2007/02/19(月) 17:11:41
1がいなくなったとたんに過疎る。1は偉大だな。
0862デフォルトの名無しさん2007/02/19(月) 20:17:52
有志が1を見限って独自に進めようとするたびに1が現れて気運をぶち壊して行っただけでは。
0863デフォルトの名無しさん2007/02/19(月) 20:39:29
誰か2代目1を呼んで来い
0864デフォルトの名無しさん2007/02/19(月) 20:49:44
今1はエージェント指向で書き始めていますので、少々お待ちください。
08651偽2007/02/19(月) 21:00:45
アスペクト思考で書き始めています。
0866デフォルトの名無しさん2007/02/19(月) 22:26:28
やっぱり構造化プログラミングで書き直しています
0867デフォルトの名無しさん2007/02/19(月) 22:42:00
高速化したいのでアセンブラで書くことにしました
0868デフォルトの名無しさん2007/02/19(月) 22:59:01
3進数コンピュータ用に3進数で書き直しています。
0869デフォルトの名無しさん2007/02/19(月) 23:25:44
高速化のためにtemplate多用して書くことにします
0870デフォルトの名無しさん2007/02/19(月) 23:58:32
明日論文発表終わって暇になるから本格的に取り組んでみるぜ
とりあえずの目標は781で動くdllの実装
0871デフォルトの名無しさん2007/02/20(火) 00:07:28
人間対人間のオセロ作ったし、今度は人間対人間の将棋作るわ
0872デフォルトの名無しさん2007/02/20(火) 01:57:36
オセロ対将棋を作ってくれ
0873デフォルトの名無しさん2007/02/20(火) 05:10:15
とりあえずマスをかくことにしました
0874デフォルトの名無しさん2007/02/23(金) 00:16:37
age
0875デフォルトの名無しさん2007/02/24(土) 01:36:45
第一部終了?
0876デフォルトの名無しさん2007/02/24(土) 08:38:23
結局、ダメだったか
ある意味予想通りだが
0877デフォルトの名無しさん2007/02/24(土) 11:35:24
当初は昨年末にはできる予定だったんだよね。
0878デフォルトの名無しさん2007/02/24(土) 11:38:28
当初は昨年末にはできる予定だったんだよね。
0879デフォルトの名無しさん2007/02/24(土) 15:05:29
ここの>>1はこのスレの>>1か?違うよな。

IT業界で入ってはいけない会社の条件を教えて
http://science6.2ch.net/test/read.cgi/infosys/1172129460/
0880デフォルトの名無しさん2007/02/27(火) 20:19:49
そういやそろそろ三ヶ月経った?
0881デフォルトの名無しさん2007/02/28(水) 02:09:37
今作ってる人居るの?
進捗状況を聞かせて欲しい
088212007/03/04(日) 06:16:16
みんなすまん
うまく動かなくて顔出せんかった
プログラムとデバックに向いていないとおもう(経験不足)
継続して作ってはいるんだけど......
あと囲碁、将棋も攻略する予定はあるんだ
ネタはあるので、データ構造と処理内容だけを記したら分業制でやってくれる人はいますか?
一人では、一つ完成させるのに半年以上かかりそう
0883デフォルトの名無しさん2007/03/04(日) 06:36:54
× 分業制でやってくれる人はいますか?
○ これこれこういうアルゴリズムなのですが、興味のある人はぜひコーディングしてみて下さい。
◎ (どこどこのうpろだ) に、データ構造と処理内容を記した仕様書(テキストファイル等)をアップロードしました。興味のある人は(以下略


いったい何ヶ月前から↑の通りにしろと言われていたのか、まさか気づいてないのか?
088412007/03/04(日) 07:14:35
>>883
わかった
仕様書かくんでちょっと待っててください

オセロはオブジェクト指向で書き直したんだけど動かないよ
http://up2moe.moe.hm/img/q875.txt

あまりに動かないんで、
オセロは、やめて将棋にしようかと思ってきたんだけど
将棋を一から開発していくっていう方向でもいいですか?
0885デフォルトの名無しさん2007/03/04(日) 07:50:04
どんな仕様書が出来るか楽しみだな。
0886デフォルトの名無しさん2007/03/04(日) 07:53:27
>>884 >>1
>オブジェクト指向で書き直したんだけど
オブジェクト指向で書き直す以前の問題。
C,C++の仕様すら理解してないんじゃないかな?
プログラムの書き方からデバッグのしかたを一から(ry

>あまりに動かないんで、
>オセロは、やめて将棋にしようかと思ってきたんだけど
>将棋を一から開発していくっていう方向でもいいですか?

無謀。

将棋は駒を取る、打つ、成、不成。オセロよりはるかに
局面の変化が多彩で難しいと思うけど?
0887デフォルトの名無しさん2007/03/04(日) 08:03:04
無謀なんて言わずに、やらせておけばいいじゃん。
1がマトモには何もできないってことはみんな知っているし、
それを知った上でのネタスレとして楽しんでるんじゃないの?
088812007/03/04(日) 08:05:43
オセロを一から作り出すより、手伝ってもらって将棋を分担で開発した方が
早い and やる気が出る、かと思ったんですが...
デバッグとコーディングをのぞけば、アルゴリズムはかなり前から出来ているんです
オセロより作成期間が長いんです
0889デフォルトの名無しさん2007/03/04(日) 08:17:36
じゃあそのアルゴリズムを聞かせてほしい
0890デフォルトの名無しさん2007/03/04(日) 08:21:16
小学校の頃、1みたいな奴が居てウザかったの思い出した。
089112007/03/04(日) 08:29:57
仕様書を書いて説明しますから、待っててくださいね
では、将棋をみんなで作るという事でOKですかね?
0892デフォルトの名無しさん2007/03/04(日) 08:32:07
バカ?
リバーシに決まってんだろ
089312007/03/04(日) 08:37:35
ボナンザを倒し、劇指を倒したら、次に銀製囲碁を倒します!
分業制でやれば実現しますよ!
囲碁はですね、今までに無いやり方だと思いますよ
簡単に説明しますと
まず、19*19盤を、類似した5*5盤とか、7*7盤に縮小するんです
すると置けるマスは25〜50マス程度で、
普通のMTDとかPNSとかが通用しやすくなるんです
あらかた、置く位置を決めたら元に戻して、その周囲で詳しく調べるんです
0894デフォルトの名無しさん2007/03/04(日) 08:40:07
PNSて何だ?
PVSの間違いか?
089512007/03/04(日) 08:41:15
proof number サーチですよ
証明数探索ですよ
0896デフォルトの名無しさん2007/03/04(日) 08:42:42
ああそれね
0897デフォルトの名無しさん2007/03/04(日) 08:43:27
で?どうしてやらないの?
089812007/03/04(日) 08:45:03
MTD、PN-searchは、これが詳しいです

Research Re: search & Re-search
PhD thesis; 1996
Aske Plaat
http://www.cs.vu.nl/~aske/Papers/thesis.zip
0899デフォルトの名無しさん2007/03/04(日) 08:46:40
それ読んだことある
090012007/03/04(日) 08:48:45
思考ルーチンだけ作ればいいソフトを貼り付けておきますね


CSA将棋
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:54
いろいろ言いたいことはあるが仕様書を見てから判断しよう
0903デフォルトの名無しさん2007/03/04(日) 09:43:46
まともにプログラムを書いた事が無い奴のプログラム
まともに仕様書を書いた事が無い奴の仕様書
0904デフォルトの名無しさん2007/03/04(日) 10:24:42
現実のSEにもいるけどね
そういうの
0905デフォルトの名無しさん2007/03/04(日) 10:50:50
1の日本語・プログラミングの能力から、出てくる仕様書の程度は知れてる。
0906デフォルトの名無しさん2007/03/04(日) 10:58:02
× 出てくる仕様書
○ 仕様書は出てこない

◎ 家から出てこない
0907デフォルトの名無しさん2007/03/04(日) 15:24:45
脳内から(ry
0908デフォルトの名無しさん2007/03/04(日) 15:59:16
僕は>>1にひそかに期待している。
分業する気はまったくないが。

たぶん>>1は大器晩成なんだと思う。
いつ頃晩成するのかは予測不能だけど。

>>1の打たれ強さは今まで見た中で5本の指に入る。
この調子でスレを消化していけば、囲碁・将棋・リバーシに
取って代わるテーブルゲームができるかもしれないかもしれないな。
0909デフォルトの名無しさん2007/03/04(日) 18:58:44
俺も>>1には期待してるよ
0910デフォルトの名無しさん2007/03/04(日) 19:05:48
>>1頑張れ!!
新しいゲーム、やってみたいぞ!
0911デフォルトの名無しさん2007/03/04(日) 19:32:50
>>1がきてスレが久しぶりに活気付いた件
0912デフォルトの名無しさん2007/03/04(日) 20:19:20
超初心者の質問なんですが誰か教えてください。
オセロや将棋などのアルゴリズムのプログラミングはC言語で作るのが常識なのでしょうか?
Javaとか他の言語では無理ですか?
0913 ◆Z4QrFDzwrY 2007/03/04(日) 21:01:42
可能
アルゴリズム自体は言語に依存するものではない
言語によって実装は異なるが、根底の考え方は違わない
速度、実行する環境、自分達が使える言語、DirectXを使えるか、などで
言語を含めて開発環境はだいたい決まってくる
091412007/03/04(日) 21:03:19
>>912
Javaでもなんでも出来るけど、速度はcが一番では?ややアセンブラより鈍いかも

分担作業で出来るようにモジュールを分割して
最低2人が一つのモジュールを作成し
2名が同じ出力を出したら正常であるとしましょう
0915デフォルトの名無しさん2007/03/04(日) 22:07:27
初心者が作れば速度が逆転することはざらにある
09169122007/03/05(月) 01:47:49
>>913>>914>>915
ありがとうございます。
速度で差が出るということですね
どうせやるなら上を目指したいのでCでやってみようと思います
0917デフォルトの名無しさん2007/03/05(月) 01:54:36
>>893
分業だの分担だの言ってるが、他人と同じスタイルにしたり、他人の書いた
プログラムをちゃんと理解できるまで自己鍛錬するつもりはあるのか?
>624-625 みたい嘗めた真似するんじゃないのか?
0918デフォルトの名無しさん2007/03/05(月) 01:57:21
プログラムがわからなくたって
結果で判断すればいいんじゃね?
エンドユーザーになったって事だろ
0919デフォルトの名無しさん2007/03/05(月) 05:04:30
>>912
現在トップクラスのプログラムで使われている言語はC,C++,Managed C++。
言語はCでいいと思うよ。GUIも作るならC++かな。
GUIははじめベアリバーシでもいいけど続けていればそのうち物足りなくなると思うよ。
アセンブリは全く使わなくていい。
コンパイラに最適化を任せれば3倍以上速くなる事もある。
あと英語は必須。
0920デフォルトの名無しさん2007/03/05(月) 09:46:08
>>900
本気で作るならGoGUI使え
0921デフォルトの名無しさん2007/03/05(月) 11:21:35
いきなりスレチになってるな
0922デフォルトの名無しさん2007/03/06(火) 01:05:54
このスレに触発されて暇つぶしにリバーシのプログラム作ってみた。
このスレに張ってあるリンクがすごく役に立った。
暇つぶしの産物だから全然最強じゃないけど、面白かったよ。

例によって棋譜を読ませてパターンの点数を最適化するんだけど、
棋譜をちょっとずつ(といっても数千局単位)読み込ませると、
だんだん強くなるのが楽しい。
遅いマシンでやってるので数千局読み込ませるのに何時間もかかったりしてるが、
それもまた楽し。
んで更新された評価関数を使って対戦して、
「ぉお、定石ルーチンないのに定石打ってくる!」とか
「この隅の形は見たことないのか。これで互角だと思ってるな、バカめ」とかやってる。

つまり何が言いたいかというと、>>1をいじくるのもいいけど
みんなプログラム作ってみたらってことだ。
0923デフォルトの名無しさん2007/03/06(火) 01:46:44
>>922
自分はこのスレ関係なく昔からこの分野の研究をしてる。
君みたいな仲間が増えてうれしいよ。
0924デフォルトの名無しさん2007/03/07(水) 00:12:56
>>922
そのソースは貼ってはもらえんのじゃろうかのぅ
0925デフォルトの名無しさん2007/03/07(水) 00:58:44
なんでもいいよ
どうせまたダメなんだから
09269222007/03/07(水) 11:02:07
>>923
このスレを専門の方が見てるとは…。
仲間なんて言っていただいたら恐縮してしまいます。
私はたまに遊びでプログラムを作る程度なんですが、
今回のリバーシは楽しくてこの趣味やっててよかったと思いました。

>>924
アップするのはかまいませんが、ソース汚いですよ…?
デバッグのためのprintfがいっぱい残ってますし。
あと、ほとんどCで書いたんですが、C++の機能をほんの一部だけ使うために
C++のコンパイラでないとコンパイルできなくなってます。
他人に見せるなんて全く考えず作ったので。
それでもいい?
0927デフォルトの名無しさん2007/03/07(水) 11:12:46
よーし、みんなで>>922のコードのリファクタリング大会だ(ぉぃ
0928デフォルトの名無しさん2007/03/07(水) 17:46:33
とりあえずうp汁
0929デフォルトの名無しさん2007/03/07(水) 18:10:18
漏れはなにもできないが、単純に見てみたい
09309222007/03/08(木) 11:48:54
アップしました。
http://up2moe.moe.hm/link.php?id=900
>>927
後は頼んだw
09319222007/03/08(木) 12:07:16
って>>930だけではあんまりなので補足です。

FreeBSDで作ってます。
ソース中のコメントは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:20
$ make
c++ -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:09
pmakeにしたら通った。
string.hはmain.cとlearn_pattern_weight.cにも必要だった。
0934デフォルトの名無しさん2007/03/08(木) 14:48:22
>>922
本当にこのスレが立ってから始めたの?
すごいね。感心した。
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:56
NegaScoutとScoutとPVSって名前が違うだけで同じものでしょ?
0937デフォルトの名無しさん2007/03/09(金) 20:00:18
>>1

コーディングトラブルの約70%はif文などでの{}省略
http://pc11.2ch.net/test/read.cgi/tech/1173416521/
0938デフォルトの名無しさん2007/03/09(金) 21:26:38
>>937
そんなに間違いやすいか?
0939デフォルトの名無しさん2007/03/10(土) 00:46:15
普通省略シネーだろ
094012007/03/10(土) 11:37:12
仕様書を完全に作ってからうpするのでは、時間が掛かってしまうので
メモ代わりにここに書き込んで言って意見を聞きながらまとめることにします
094112007/03/10(土) 13:00:51
将棋の差し手を記録するには何ビット必要だと思いますか?
12 bit でいけそうです
z = x + 9yに対して、zを駒の移動先として、そこへ移動可能なマスに
対して順に番号をつけていきます
桂と成の移動も含めても4096番まで足りるはずです
0942デフォルトの名無しさん2007/03/10(土) 13:23:53
>>941
スレ違い
こっち行け
http://pc11.2ch.net/test/read.cgi/tech/1109307327/l50
094312007/03/10(土) 13:29:31
将棋を分業で作成し、結束、士気を高めてからオセロや囲碁に行くんです
オセロは、少し休むんです(うまく動かずやる気が落ちてきた為)
なのでスレ違いではないんですよ
0944デフォルトの名無しさん2007/03/10(土) 13:43:45
>>943
スレ違い
こっち行け
http://pc11.2ch.net/test/read.cgi/tech/1109307327/l50
0945デフォルトの名無しさん2007/03/10(土) 13:57:09
>>943
アホか
将棋スレでやれ
0946デフォルトの名無しさん2007/03/10(土) 18:39:19
>>943
スレ違いだ。死ね
0947デフォルトの名無しさん2007/03/10(土) 18:51:13
>>943
おまいのプロジェクトすれでも建てろ
0948デフォルトの名無しさん2007/03/10(土) 19:12:54
おまえらひでえよw
でもそこまでされる>>943に同情はできねえ
0949デフォルトの名無しさん2007/03/10(土) 23:19:48
>>943
リバーシを捨てた 1 にこのスレに残れる余地は僅かたりとも無い。
0950デフォルトの名無しさん2007/03/10(土) 23:46:18
1はとことん馬鹿だな。
0951デフォルトの名無しさん2007/03/11(日) 14:10:06
馬鹿と言うより身勝手
0952デフォルトの名無しさん2007/03/11(日) 15:17:11
わろたwwwww
0953デフォルトの名無しさん2007/03/11(日) 20:10:12
モンテカルロ級馬鹿だな
0954デフォルトの名無しさん2007/03/12(月) 02:23:25
ここまで打たれ強い>>1はすごいよ
0955デフォルトの名無しさん2007/03/12(月) 02:37:38
>>1 のせいで >>922 があきれてkonakun来なくなっちゃったじゃないか!
pmakeないから作れないけど。。
0956デフォルトの名無しさん2007/03/12(月) 15:11:20
>>954
これはね、鈍感なだけなんだよ。
0957デフォルトの名無しさん2007/03/12(月) 15:54:37
鈍感力って大切だよね。
0958デフォルトの名無しさん2007/03/12(月) 16:24:17
過ぎたるは及ばざるが如し
0959デフォルトの名無しさん2007/03/12(月) 18:25:47
>>957
それは目先の小さなことにこだわらない、という意味の言葉だろ
でも>>1はただの空気読めないやつ
0960デフォルトの名無しさん2007/03/12(月) 21:51:37
気をつけないと>>1はこっそりスレを立てるぞ。

でも将棋には興味ないから移らない。
将棋はある程度定石覚えたらそこそこのレベルになると聞いたけどどうなんだか。
>>1は定石否定派だったな。。。
096112007/03/13(火) 12:41:14
デバックのやり方を知らないんだよな
printfで途中にはさんで値を見るのしかわからない
096212007/03/13(火) 12:45:19
オセロで実験してみてそれを囲碁、将棋に生かそうと思っていたのだけど
オセロが全然出来上がらない
MTDとPN-サーチの動作確認のためだったのだが動かない
そして、仕様書も、オセロも将棋を出来上がらない
やはり自力でオセロを完成するしかないか
096312007/03/13(火) 12:59:21
誰かデバッガの使い方と、いいデバッガ教えてくれませんか
使い方がわかりません
ソースコードを順にたどっていくやつがいいんですが
アセンブラをたどっていくのは駄目です
0964デフォルトの名無しさん2007/03/13(火) 13:24:44
仕様書も書けない香具師にデバッガを使いこなすのは難しい。
0965デフォルトの名無しさん2007/03/13(火) 13:32:25
>>963
ソースレベルでデバッグするには、コンパイラが埋め込むデバッグ情報が必要。
ところがデバッグ情報はコンパイラごとにまちまちで互換性がない。
したがって、殆どの場合コンパイラとセットになったデバッガを使う必要がある。
それが具体的に何かは、使っているコンパイラが分からないと言えない。
096612007/03/13(火) 13:38:44
BCC developerと、vc++ ver.6を使ってます
前者は、アセンブラが出てきます 訳がわかりません
後者は、ソースコードをたどるようですが、使い方はよくわかりません
デバックのやり方が不明です
096712007/03/13(火) 13:40:19
newが入っているところで、延々と、別のソースが出てきます
そして自作のコードに行きません
0968デフォルトの名無しさん2007/03/13(火) 13:41:05
gdb
0969デフォルトの名無しさん2007/03/13(火) 13:42:34
VC6使いやすいよ
097012007/03/13(火) 13:46:58
http://www.nitoyon.com/vc/tutorial/debug/debugger.htm

ここにかいてある事をマスターすれば使えるようになるなるんでしょうか?
097112007/03/13(火) 13:49:41
基本的に、一度にまとめて打ち込んで、動かなかったらそれまでっていうやり方なんです
ひとつひとつ、各モジュールの動作確認はしていないんです
やり方が不明なんです
0972デフォルトの名無しさん2007/03/13(火) 14:20:41
>>971
あんたの場合、デバッガの使い方を覚える手間の代わりに人の意見に耳を傾けるといい。
まぁ、最悪printf()デバッグでだってデバッグはできるさ。
0973デフォルトの名無しさん2007/03/13(火) 14:20:47
まずプレークポイントで停止
これができないと先へ進めない
097412007/03/13(火) 14:48:52
>>973
ブレークポイントの設定でかなりいい状態になりましたよ
これで調べたいところが調べられそうです
0975デフォルトの名無しさん2007/03/13(火) 14:50:44
>>967
コンストラクタ等の c++ の基本動作が根本的に分かってない予感。
0976デフォルトの名無しさん2007/03/13(火) 14:55:14
VC6なら以下を適当に使えばデバッグできる

・カーソル行の前まで実行
・F10
・F11
0977デフォルトの名無しさん2007/03/13(火) 15:00:42
次はデータの表示と変更だな
その次は条件付ブレークポイント
097812007/03/13(火) 15:05:24
今まで知らなかったデバッグが出来るようになって
これでかなり進展しそうです みんないいやつだ
0979デフォルトの名無しさん2007/03/13(火) 16:30:06
そしてスルーされる>972
0980デフォルトの名無しさん2007/03/13(火) 16:31:40
1 が人の話を聞かないのは今に始まったことじゃない
0981Anonymous2007/03/13(火) 20:10:35
おまいら最強のリバーシプログラムしてみろよ part3
http://pc11.2ch.net/test/read.cgi/tech/1173784074/
0982デフォルトの名無しさん2007/03/13(火) 20:16:30
まだ続けるのか・・・
09839222007/03/13(火) 21:08:35
>>955
Makefile の $> を $^ に書き換えたらgmakeでもmakeできるみたい。


アップしたプログラムでは、パターンとしてLogistelloが使ってるパターンと
だいたい同じものを使っていて、隅の3x3だけ、2マス付け加えて
11マスにしたものを使ってる。当然収束は遅い。
さらにステージ分けを2手毎にしたものだから(アホや…)、
隅の学習がいつまでたってもできなくて、序盤でいきなり星に打ったりする。

とりあえずたくさん学習させてやろうと思って
約30万局の棋譜が入ったファイルの学習を始めたら、
8日かかってやっと終わった。
でも隅の学習は全然だめorz

仕方ないので人間相手の対戦プログラムに棋譜を出力させて、
その棋譜から学習させてやろうと思っている。
0984デフォルトの名無しさん2007/03/13(火) 21:21:45
30万棋譜じゃ1ステージ当たりの教師信号が少なすぎるね。
多分1ステージ10手くらいにはしないとある程度の精度は出ないと思うよ。
いきなりステージを細かく分けないで全5ステージくらいからやったら?
0985デフォルトの名無しさん2007/03/13(火) 21:28:18
11マスのパターンってこういうの?
****----
***-----
***-----
*-------
--------
--------
--------
--------
0986 ◆Mizar2to32 2007/03/13(火) 21:38:23
http://rvs.mzr.jp/mzrvs-memo.pdf
何やら書いてみた。
但し内容は妄想、夢想、完全フィクションである。 :p
0987デフォルトの名無しさん2007/03/13(火) 21:44:55
printfデバッグが出来ない時点でダメだな。

ブレークポイントだけじゃ時系列のデータ見られないだろ?
0988デフォルトの名無しさん2007/03/13(火) 22:03:24
>>986
おつ。
ざっと読んでみたけど、自分が棋譜の偏りを補正した方法の一つは、
あるパターンがいくつの局面で出現したか統計をとって、
一定数に満たないパターンが出現する棋譜では、
パターンを壊さないようなところに打って分岐する棋譜を作った。
098912007/03/14(水) 05:34:39
ひとつひとつの攻略目標の分割、設定と
デバックしやすいように一行のコードを短くすることが
大事なことがわかった
0990デフォルトの名無しさん2007/03/14(水) 09:55:45
デバックじゃなくてデバッグ
0991デフォルトの名無しさん2007/03/14(水) 12:52:31
やっと>>1が重要なことに気づいてきた
0992デフォルトの名無しさん2007/03/14(水) 13:45:30
やっと重要な事に>>1が気づいてきた
0993デフォルトの名無しさん2007/03/14(水) 15:16:07
最初から言ってたけど無視されてたことだな
0994デフォルトの名無しさん2007/03/14(水) 15:36:58
三ヶ月近く七転八倒して、やっと教科書の一章か二章に書いてあるような基本事項に気付いた>>1
これからどれだけの車輪の再発明ならぬ、常識の再発見を繰り返すつもりなのだろうか
0995デフォルトの名無しさん2007/03/14(水) 15:40:47
教科書じゃなくて実際にデバッグしてわかることだけどなー
0996デフォルトの名無しさん2007/03/14(水) 15:46:57
学習が遅いな。
他人に追いつくまでに人生終わっちゃうよ。
0997デフォルトの名無しさん2007/03/14(水) 15:47:35
理由は実際にデバッグして初めて気付くとしても、スタイル自体は教科書に載ってる基本事項
0998デフォルトの名無しさん2007/03/14(水) 17:17:48
あ、>>986が更新されてる。
0999デフォルトの名無しさん2007/03/14(水) 17:26:22
>>986
>・stage00: 00-03
>・stage01: 04-07
ステージ分割でさ、序盤はほとんど局面が無いから
この辺はまとめた方がいいと思うよ。
1000デフォルトの名無しさん2007/03/14(水) 17:29:18
1000ゲットしとくか
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。