Rajun Blog

Rajun Blog
- でっていう
2005 01 02 03 04 05 06 07 08 09 10 11 12
2006 01 02 03 04 05 06 07 08 09 10 11 12
2007 01 02 03 04 05 06 07 08 09 10 11 12
2008 01 02 03 04 05 06 07 08 09 10 11 12
2009 01 02 03 04 05 06 07 08 09 10 11 12
2010 01 02 03 04 05 06 07 08 09 10 11 12
2011 01 02 03 04 05 06 07 08 09 10 11 12
2012 01 02 03 04 05 06 07 08 09 10 11 12

2009-02-21

templateが使いたいです

Bonanzaソース公開

http://slashdot.jp/developers/09/02/20/0716223.shtml

コンピュータ将棋選手権で優勝しちゃった実績もある、その業界では最強の一角として知られるフリーソフトBonanzaのソースが公開されていた。

流石にさらっとしか読んでないから挙動を説明するどころか局面構造体の構造を調べるとこすらしてないけど、思考に関する多くの関数が先手用関数と後手用関数とで分かれてるのでソースの量が何割も増えてるのが伺える。1000行にもわたる関数が先手専用と後手専用二つ作られてたり。一見、関数引数として手番情報を渡すという普通の発想に対して保守性と可読性に問題が生じるようだが、よく考えていくとその手の関数 (どの着手が可能か調べたり、詰みがあるか調べたり) という関数の末端の方では必ず、「味方の玉」や「相手の駒か?」といった直接参照が大量に起こり、そのたびに引数として渡された手番情報をif文にかけたり、そこまでせずともビット論理和を取ったりするのは効率が悪いということだろう。

ふと思いついたけどこれって全部template文で書き換えると綺麗に収まるよね。根元の関数から末端の着手生成関数まで、ソースコードの主要部分が殆どtemplate、カッコイイ!

通りすがり通りすがり 2009/02/25 01:20 templateであれば、osl(OpenShogiLibrary)もしくはGPS将棋を参考にされてはいかがでしょう?
関数の末端部分での手番判定などの条件分岐が目に付くのは、速度とのトレードオフで仕方のないことだと思います。

1004.51004.5 2009/03/10 08:41 2XJcnh <a href="http://vfofxgtttlny.com/">vfofxgtttlny</a>, [url=http://cgzmhnoehaob.com/]cgzmhnoehaob[/url], [link=http://isqveoyotuup.com/]isqveoyotuup[/link], http://eajblbhvwvlk.com/