«前の日(06-02) 最新 次の日(06-04)» 追記

fukumoto blog


2003-06-03

_ [麻雀][PC]comjong.comを更新しよう

さすがにいろんな人から怒られることが多くなってきたのでいいかげん comjong.comの更新をしようかと。

前に書いたソースを見たら、手牌の先読みルーチンを書いてて、あまりの動作の遅さに投げ出したところで止まってました。なので、高速化するべくキャッシュ化をしてみたのでその覚え書き。断片コードだけなんだけど、雰囲気ね。

手牌を解析するときに、

def combination( t )
    max = {}; max.default = 0
 
    s = separate(t)
    return max if s == []
 
    if s.size > 1
      a = []
      s.each{|i| a << combination(i)}
      return merge_combination(a)
    else
      b = s.first
    end
 
    b.shift while b.first == 0
    b.pop while b.last == 0
 
    return @@cache[b].dup if @@cache[b] != nil
 
    c = {}; c.default = 0
    for i in 0...b.size
      # sequence
      if b[i+2] != nil and b[i] >= 1 and b[i+1] >= 1 and b[i+2] >= 1
        t = b.dup; t[i] -= 1; t[i+1] -= 1; t[i+2] -= 1
        c = combination(t)
        c["sets"] += 1;
        c["headed_sets"] = if c["headed_pairs"] == 0 then 0 else c["headed_sets"] + 1 end
        max = max_combination( c, max )
      end
 
      # triplet
      if b[i] >= 3
        t = b.dup; t[i] -= 3
        c = combination(t)
        c["sets"] += 1;
        c["headed_sets"] = if c["headed_pairs"] == 0 then 0 else c["headed_sets"] + 1 end
        max = max_combination( c, max )
      end
      ....

_ な感じにして、今までの結果を最大限に生かしつつ、そこからの差分だけ読むようにしてやればいい感じかも。ちなみに [3, 1, 1, 1, 0, 1] を読ませたときのキャッシュの中身はこんな感じになります (Hash の default は 0 ね) 。

{[3, 1, 1]=>{"headed_pairs"=>1, "sets"=>1, "pairs"=>1, "headed_sets"=>1},
 [2, 1]=>{"headed_pairs"=>1, "pairs"=>1},
 [1, 1, 1, 0, 1]=>{"headed_pairs"=>0, "sets"=>1, "pairs"=>0},
 [1]=>{},
 [1, 1, 1, 1, 0, 1]=>{"headed_pairs"=>0, "sets"=>1, "pairs"=>1},
 [2, 1, 0, 1, 0, 1]=>{"headed_pairs"=>2, "pairs"=>2},
 [2, 0, 1]=>{"headed_pairs"=>1, "pairs"=>1},
 [1, 1]=>{"headed_pairs"=>0, "pairs"=>1},
 [3, 1]=>{"headed_pairs"=>2, "sets"=>1, "pairs"=>0, "headed_sets"=>0},
 [3, 0, 1]=>{"headed_pairs"=>2, "sets"=>1, "pairs"=>0, "headed_sets"=>0},
 [3]=>{"headed_pairs"=>1, "sets"=>1, "pairs"=>0},
 [3, 1, 1, 1, 0, 1]=>{"headed_pairs"=>2, "sets"=>2, "pairs"=>0, "headed_sets"=>1},
 [1, 0, 1, 0, 1]=>{"headed_pairs"=>0, "pairs"=>1},
 [1, 1, 1]=>{"headed_pairs"=>0, "sets"=>1, "pairs"=>0},
 [2, 0, 1, 1, 0, 1]=>{"headed_pairs"=>2, "pairs"=>2},
 [2]=>{"headed_pairs"=>1, "pairs"=>1},
 [1, 1, 0, 1]=>{"headed_pairs"=>0, "pairs"=>1},
 [1, 0, 1]=>{"headed_pairs"=>0, "pairs"=>1}}

2004-06-03

_ [生活]オレオレ詐欺

昼休みに実家の母から電話があった。普段、昼に電話がくることなどないので何事かと思ったら、新種のオレオレ詐欺と思われる電話がかかってきたので念のために確認の電話をしてきたらしい。

上ではオレオレ詐欺と書いたが、「オレオレ」ではなく私の本名を名乗ったようなので厳密にはオレオレ詐欺ではないかもしれない。しかし、手口は本質的には同じで、「友人の保証人として肩代わりすることになった借金180万円を払えなくて困っているので振り込んで欲しい」というストーリーだったそうだ (fukumoto母談) 。

最近ではそういう名前と家族構成付きの名簿も出回ってたりするのだろうか。これは従来のオレオレ詐欺よりもかなり成功率が高そうな気がする。祖母には一応気をつけろと電話しておいた方がいいかも。


2005-06-03

_ []なぜ教育論争は不毛なのか, 苅谷剛彦

複数の媒体に発表した原稿をまとめた本なので、雑多な印象があるが、主張はきちんと一本通っている。

従来の教育論争で取り上げられている、ゆとり対詰め込みや、右対左といった対立軸にとらわれ過ぎることなく、社会階層による教育格差の問題をあぶり出している点がすばらしい。


2006-06-03

_ [モノ][携帯]W-ZERO3のキーボード

W-ZERO3のキーボード

いろいろあってW-ZERO3を触ることになった。

キーボード付きというのが一つのウリなんだろうけど、そのキーボードが変。下2行を何とかしてソフトウェア的にでも左に1列ずらさないと厳しそう。


ToDo/ToBuy

2003|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
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|

fukumoto@24d | antenna | comjong.com