ToDo:
http://homepage1.nifty.com/herumi/diary/0810.html#27
そこまでお手軽にそこまで速くなるのはおかしいよなぁ… とかコンパイルしてみた。 saichugen.cpp でたぶんいいんだよね。 0.333sec とかそんなの。 むむむ確かに僕のより 3 倍くらいは速い。
でコードを読む。 うーん中二病チックなのは素晴らしいから良いとして、 think_[a23]_turns? って関数はメンテしずらいと思うがー
で、 vector::erase とかよんでるし、 このコードで速いわけないにゃーとか思った。 たぶん、このコードは全探索できてない。
for(size_t i=0; i<N; i++){ cards rest1 = except_one(unknowns, i); for(size_t j=i+1; j<N; j++){
とかでぶんまわしてるけど、 これは敵2人が違う点数の場合は それじゃあかんやろ、と思う。
まぁこれをダメだと仮定して、 think_[23]_turns は
for(size_t i=0; i<N; i++){ cards rest1 = except_one(unknowns, i); for(size_t j=1; j<N; j++){
とかにして、 think_a_turn は
for(size_t i=0; i<N; i++){ for(size_t j=0; j<N; j++){ if (i == j) continue;
とかにすると、 2.52sec かかってくれた。 これで僕の方が 2.5 倍速いのでおけ。
ちなみに、速くする方法としては、 どうせカードは 52 枚しか無いんだから、 読みを開始する前に bool seen[52] とか作っておいて、 カード使うたびにこれを false とか true とか切り替えて やるのがまぁあからさまに高速化できると思う。 てか僕はそんな感じ。
というか think_a_turn はこれでいいのか。 評価関数がとりあえず正しくは見えない…
それはそれとして、 herumi さんがどこまで高速化できるか興味深い。 特に median 計算はうざいんですよこれ…
(01:43)
まぁ件の変更するとすると、
http://d.hatena.ne.jp/nishiohirokazu/20081026/1225041715#c1225109434
の「20 倍ぐらいまでは難しくない」という読みがあまりに正しい。 すんごいなあ
(02:35)
新しい Ubuntu とかだと、 locale-gen の前にいじるファイルは /var/lib/locales/supported.d/local みたいだ。 以前と同じく
ja_JP.eucJP EUC-JP ja_JP.UTF8 UTF8
とかを足せばよい
(23:37)
前 | 2008年 10月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。