ToDo:
Evaluator は instruction ごとに reflection 経由の呼び出しになってるのが遅いって感じかねえ。 ちょっと自信無いが。
まぁ switch にするなり Dictionary<string, InsnBase> とかにするなり すれば速くなる、かな。 でも Reflection でやりたい気持ちもわからないわけではない。
(14:20)
http://twitter.com/alohakun/status/986406187
を見て思い出したんだけど、
http://www.kenko.com/product/item/itm_6631481072.html
を適当に買って半分の6個ばらまいたら、 ウソのようにいなくなってしまった。 さみしい一人暮らしふたたび。
個人的にはヤツラは嫌いじゃなくて、 Wikipedia とか見たら人のフケやら髪の毛も喰うとか書いてあって、 むしろこれ益虫じゃね?とか思う程度のものだったんだけど、 1日に2,3回程度は軽く見るねという感じで、 あからさまに wo さんとこよりいる感じだったので、 来客もびびるしまぁ試してみるか…と買ったのだった。
まさかここまで効くなんて。ごめんよ。 確かにこのブラックキャップとかいう物体は あからさまに毒々しい匂いを発していて、 いかにも危険物ぽかった。 こんなものをルームメートに喰わせるとは。
まぁ秋だから消えただけかもしれない。
(00:45)
そいや僕の実家には山ほど小さいカメムシがいる。 山の近くだしそんなもんかなぁと思うんだけど、 まぁヤツらは G よりはるかに有害だと思う。 なんせやつらはすばしっこくないので、 人に踏まれたりとか、 手があたったりとか、 朝起きると上に乗っているとか、 光源の近くで大量にのたれ死んで部屋を暗くしたりとか、 窓を開ける時に何匹か轢き殺したりとか、 窓を開けるとボロボロと落ちてきたりとか、 人の服の中に入ってるとか、 ふと靴下の中にいるなーと気付いたりとか、 洋服ダンスに入ってるとか、 人の弁当の中に入っているとか、 虫とかそんなに苦手ではないのだけどあからさまに不快な仕様になっている。 さらにヤツラは乱暴にあつかうと匂いを出して身を守るのでうざい。 おかげで素手でつかんで適当にポイと捨てる技能を取得した。
一方 G は踏みそうになっても自発的に避けてくれるし、 死体を晒して死ぬことも少ないし、 さらに Wikipedia によると掃除までしてくれるらしい! 惜しい人を…
あと件のブラックキャップかなんかは 巣に戻ってから死ぬとからしくて ホイホイと違って死骸残らんらしい。 実際見てない。
(00:58)
体調悪いしゴロゴロ寝ながらやってるけど、 うーむ面白いね。 とりあえずケツイ買う気が起きない。
ランキング 2/3 => ランキング 3/3 (相手がこれはうまい人だなぁと思った) => ランキング 1/3 (凹んだ子が試合放棄して没収試合) => ランキング 3/3 (ひどい感じだった) => ランキング 3/3 (逆転しまくりで面白かったが負けた) => ランキング 3/3 (エンジェルなんちゃら忘れてて侵略失敗→3位の子が逆る) => ランキング 3/3 (一人AIになったのに負けた。AIになってない子がメテオ持ってて強化できず…) => ランキング 1/4 (色々運良かった) => ランキング 2/4 (ミスで1,4がほぼ確定しちゃったので2位争い) => ランキング 3/4 (一人AI) => ランキング 1/4 (運の悪い子がいた) => ランキング 2/4 (1位鉄壁で独走) => ランキング 2/3 (あからさまなミス…) => ランキング 2/4 (ライフフォース強いなー) => ランキング 1/4 (うわー逆転できたー)
カード覚えてない子としては 4人戦は複雑そうで敬遠してたのだけど、 4人戦の方がやりやすい感じだな。 実際勝ててるし。
カタン4人戦に通じるものがある。 カタンってのは2位,3位あたりにつけておいて、 「1位の子を指差してあの子道王取ったらあがっちゃいますよー」 とか不安を煽って(実際対処しないと負けるのでウソではない) 攻撃させて、往々にしてその攻撃はやり過ぎになるため、 「点数的に1位なのになぜか2,3位の子より勝利から遠い」 というような状況にして (よくあるのは道王頼りに10点計算してた子が道王取り負けると終わるというケース)、 うまいタイミングで逆転して勝つってのが楽しいわけだ。 さっさと都市3つ作って圧勝するとかはそんなに面白くないし、 辛勝してなんぼだと思う。
でまぁカルドセプトもわりとそういう面が強い気がする。 途中で点数的に1位になってることにさしたる価値がなくて、 むしろ3,4位あたりにつけてるのも悪くない。
色々
あたりは割と共通点じゃないかなーと思う。
(16:06)
は普通に便利に使ってるなぁ。 HTML 出力する時とかに
%Q(<a href="#{href}.html">Jester's cap</a>)
とか。 変数埋め込みができて、ダブルクォートもシングルクォートも入れれるから良い。 まぁ Perl も普通に qq でいいのかな。
世の中の人は HTML はテンプレートエンジンで出力するから関係ないのかもしれない。
http://mono.kmc.gr.jp/~yhara/d/?date=20081101#p02
それはともかく Quine のよくある形一覧みたいなのは書いてみると面白いかな。
まぁ
http://d.hatena.ne.jp/bellbind/20081101/1225491517
の「しくみ」の部分がだいたい全てを語ってしまっているけど。
(03:13)
http://d.hatena.ne.jp/shinichiro_h/20081102#1225569359
書いてみた。 1時間半でこんだけすらすら書けるような子になれるとは 2年くらい前には思ってなかったな…
つーわけで format とか無くても 色々ありまっせ的な
(05:02)
コメントできなかったのか遅延したのかわからん。
http://mono.kmc.gr.jp/~yhara/d/?date=20081101#p05
./configure --program-suffix=-1.9
とかしたら普通に共存できますよというような。
Yajit とか作ってた関係もあって僕の環境には
> ruby<タブ> Completing external command ruby ruby-1.8.7 ruby-1.9.0-1 ruby-1.9.0-3 ruby86 ruby-1.8.3 ruby-1.9.0-0 ruby-1.9.0-1-86 ruby1.8 ruby-1.8.4 ruby-1.9.0-0-86 ruby-1.9.0-2 ruby1.9
などと無数の Ruby が。 86 ってのは 32bit 用。
(06:15)
って具体的に定義を知らんかったりする。
http://twitter.com/hajimehoshi/status/985552602
pipe, 共有メモリにメッセージに ソケット、ついでにシグナル、 あたりを思いあたるけど。
man ipc とかするとセマフォと共有メモリとメッセージが IPC か。 ipcs (2) もそういう結果だな。
まぁ今時ならローカルの通信でも たいていはソケットでいいんじゃないかなとかも思うけど、 なんにせよ C の API 呼べば問題なく D でできるんじゃないかな…
(14:49)
http://homepage1.nifty.com/herumi/adv/adv40.html
のページをぼんやりながめてた。 おもしろいなあ。 No7 の絶対値とか綺麗だなあ
http://homepage1.nifty.com/herumi/adv/adv40.html#002
の
if (x | y | z | w <= 1) {
はおかしいかしら。演算子の優先順位的に括弧がいる気がする。
(18:29)
の speculative に進めといて間違ったら後から修正、 っていうのはちょっといるだけですごい感じたように思う。 てかほんのちょっと行ったイタリアとイギリスもそんな感じだったように思うし、 日本以外はそいう傾向強いんじゃないかなぁ。
でまぁその部分はアメリカの中では結構好きな部分なんだよな。 僕がいい加減な人間なので生きやすそうに思える。
関係ないけど思い出した。 よく僕はアメリカ/イギリス人飯残しすぎだから許せないと 思っていたんだけど、 日本もそういう批判を受けうるみたいだ。 英語の先生が今オーストラリアの人なんだけど、 その先生が 「日本人に食器を洗わせたくない。 じゃぶじゃぶ水使いやがってこのヤロウ。 オーストラリアじゃ水は貴重なので浪費されてるのを見ると苦痛である」 的なことをを言ってて、 あーそれは面白いなぁというか、 水がもったいないと思わない、 っていうのは寄生獣に出てきててそんなもんかねえとか思ってたけど、 いやまさにそうなんだなぁとか。
つまりアメリカ人にとってはポテトは蛇口ひねれば出てきて 一月に一度20$程度払えば良い的な感覚のものなのである。
(20:04)
カゼがまだきついかんじだなぁ。
カルドセプトDS買ったのでほどほどに遊ぶ。 適当に放置プレイでカード稼いで wifi で適当に。
ノーマル 2/3 => ノーマル 1/3 => ランキング 1/3 => ランキング 1/3 (1人AIになったのでたぶん没収) => ランキング 2/3 => ランキング 3/3 => ランキング 2/3
とかだと思う。 なんかノーマルで勝てたから ランキングやってもへちょいと怒られることもないだろうと 思ってやってみたら、まぁ怒られるほどでもない気がした。 でも判断ミスで1位取りこぼしたのが2戦くらいあったように思うし、 まぁプレイングへちょすぎると思う。 とりあえずカードもうちょい覚えんときついか。
ブックはまぁ普通にケンカせず守る感じの水ブックで。 水がカードそろってる感じだったのと、 あとまぁへちょプレイでもそんなに大きなミスはしにくいし。
もちょいカード集まれば侵略ぽいの作りたい。
ゲームとしては、まぁ PS 版のカルドセプトの ほぼベタ移植なんじゃないかなたぶん。 ただカードのバランスは調整されてるみたい。 まぁ人と対戦できるのは楽しいねというような。
カルドセプトのルール見てて思うのは、 割と曖昧な記述が結構あるかなぁとか。 組み合わせた場合にどうなるかわからないカードがそれなりにある気がする。 MtG は基本ルールはとてもややこしいけど、 一通り把握さえすれば、カードの文面から たいていは演繹できたと思うんだけど。 いやそうでもなかったような気も…
(16:16)
とか覚えてるもんなのか。
http://d.hatena.ne.jp/odz/20081101/1225536444
ところでその Python インタプリタはたぶんバグっている。 2^10 は厳密に 10^3 なので 30 ちょうどじゃないとおかしい。
そうじゃないと HDD の容量の説明がつかないじゃないか
(20:57)
すうどんでっせはうまい…と思ってたけど、 にゅうめんでっせとかいうのがあって ジャーナリストとしての使命から昨日喰った。 すうどんでっせよりさらにうまくてびびった。
http://gimpo.2ch.net/test/read.cgi/nissin/1159410294/
すうどんでっせスレとかあった。 どれもだいたいスレと同じ意見だな。 59円で売っておくれ。
(23:48)
http://tabesugi.net/memo/cur/cur.html#182342
ふーむ。 匿名じゃなくて良い理由、としてはとても同意できるけど、 実名でいく理由には自分の場合なってないかなぁ。
「実名のほうが気楽だと思える」ってのが一番近い気がする。 僕の場合たぶん臆病さが逆に出てるんだと思う。 匿名による無責任さに腹が立たない、 は同意なんだけど、 自分が匿名だと無責任になるのはこれはもう、ほとんど間違いなくて、 その状態が恐いっていうのと、 あとその無責任匿名がふとした拍子でバレたりするのが恐いんだよな。
あと、「アレ、自作自演でしょ?」系の質問をされることを考えるのが恐い。 仮に自作自演でないものに対してこの質問をされたとしても、 かつて自作自演をしたことがあったりすると 自信を持って否定しにくいと思うんだよな。 人狼とかやってるとよくわかるけど、 一つウソをついている子が、 ウソをついてない個所について微妙に弱い論調になってしまう、 あの微妙なせつなさに近いものがあるんでないかと思う。 それに対して 「ちゃいますよ。 2ちゃんに記名なり自分のサイトへのリンクが無い状態で書き込んだことないし」 と言える安心感。
でまぁ勝手に自分が怯えているだけなので、 別に他人が「アレ、自作自演でしょ?」「そうですが何か?」 とか言っててもどうでもいいし、 通りすがりのものですよ感とかも他人の場合まぁ割とどうでもいいかなぁと思う。
なんか書いたことあったみたいだ。
http://shinh.skr.jp/m/?date=20080526#p01
あとそうだ。ハンドルネーム一本で行くってのはまぁいい方法だと思う。 ただまぁ実際に会った時とか微妙な感じになるのが微妙
(00:08)
ふーむ
http://homepage1.nifty.com/herumi/diary/0810.html#28
ただ求めたいのは実は median じゃなくて、
m = median(i1, i2, i3) o1 = i1 == m ? i1 : 0 o2 = i2 == m ? i2 : 0 o3 = i3 == m ? i3 : 0
なので、6個同時比較を pcmgtw でやっといて テーブルひいてほげほげ…とかはどうかなぁ… とか思ってやってみた。
static const char tbl[] = { 7, -1, -1, -1, -1, -1, -1, -1, -1, -1, 6, -1, 3, -1, 2, -1, -1, 6, -1, -1, 5, 4, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, -1, 3, 5, 1, -1, -1, -1, -1, -1, -1, 4, -1, -1, -1, -1, -1, -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; void calcScore(int p1, int p2, int p3, int* s1, int* s2, int* s3) { int cmp_result; asm("pinsrw $1, %3, %%xmm1;\n" "pinsrw $2, %4, %%xmm1;\n" "pinsrw $3, %5, %%xmm1;\n" "pinsrw $4, %4, %%xmm1;\n" "pinsrw $5, %5, %%xmm1;\n" "pinsrw $6, %3, %%xmm1;\n" "pinsrw $1, %4, %%xmm0;\n" "pinsrw $2, %5, %%xmm0;\n" "pinsrw $3, %3, %%xmm0;\n" "pinsrw $4, %3, %%xmm0;\n" "pinsrw $5, %4, %%xmm0;\n" "pinsrw $6, %5, %%xmm0;\n" "pcmpgtw %%xmm0, %%xmm1;\n" "pextrw $6, %%xmm1, %%rax;\n" "and $1, %%rax;\n" "pextrw $5, %%xmm1, %%rdx;\n" "and $1, %%rdx;\n" "shl $1, %%rdx;\n" "or %%rdx, %%rax;\n" "pextrw $4, %%xmm1, %%rdx;\n" "and $1, %%rdx;\n" "shl $2, %%rdx;\n" "or %%rdx, %%rax;\n" "pextrw $3, %%xmm1, %%rdx;\n" "and $1, %%rdx;\n" "shl $3, %%rdx;\n" "or %%rdx, %%rax;\n" "pextrw $2, %%xmm1, %%rdx;\n" "and $1, %%rdx;\n" "shl $4, %%rdx;\n" "or %%rdx, %%rax;\n" "pextrw $1, %%xmm1, %%rdx;\n" "and $1, %%rdx;\n" "shl $5, %%rdx;\n" "or %%rdx, %%rax;\n" "movzb (%6, %%rax, 1), %%rax;\n" "xor %%rcx, %%rcx;\n" "mov %%rax, %%rdx;\n" "and $4, %%rdx;\n" "cmovz %%rcx, %3;\n" "mov %3, %0;\n" "mov %%rax, %%rdx;\n" "and $2, %%rdx;\n" "cmovz %%rcx, %4;\n" "mov %4, %1;\n" "mov %%rax, %%rdx;\n" "and $1, %%rdx;\n" "cmovz %%rcx, %5;\n" "mov %5, %2;\n" :"=m"(*s1), "=m"(*s2), "=m"(*s3) :"r"(p1), "r"(p2), "r"(p3), "r"(&tbl) :"%rdx", "%rcx", "%rax", "%xmm0", "%xmm1"); return; }
1.5倍ほどおそくなった…
(23:45)
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)
http://d.hatena.ne.jp/nishiohirokazu/20081025/1224895628
C++のコードが遅いだけと思われる… うちだと 1.2sec くらいみたいだけど、 Haskell で 1.8sec ならもちょい速くなるのかな。
(11:01)
前 | 2024年 11月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
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 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
_ へるみ [>演算子の優先順位的に括弧がいる気がする。 ご指摘ありがとうございます.修正します.]