#blognavi
#blognavi
囲碁ROBOT、地の計算についてのトラブル 解決のための、Rubyを使ってみる、その1、その2の続き。シェルで一番使い慣れてるのはtcshなのですが、調べてみたところ、tcsh under msys / mingwは、
Cygwinなら動く。MSYSはCygwinのとても古いブランチだからサポートしてない。
ので、無理とのこと。ちまちまやりましょう。。。^^;
とりあえず一気に扱えるファイル数を調べてみると930前後、一定ではない。各ファイルサイズもいていではないんですけどね。総サイズは、1.52MB。ディスク上だと、7.25MB。特に思い当たることのない数字ですねぇ。.bashrc(msys の sh は bash みたいなものらしい)にでも環境変数か何かで明示的に指定してやらないといけないのかな???分からないから次へ進みましょう^^;
任意抽出したファイルにRubyを実行してみると、50-100 / 900、つまり、5-10%の頻度で結果とスコアが異なっている様子。結構な割合ですね。ここでの母数は、中押し、時間切れおよび、中断対局や、回線切断による勝ち負け(WINGでは時間切れ扱い)、動作テストをのぞいたものです。
以下、整形用に、書き直しました。
print "\n" print "Komi","\t","Result","\t","Score","\t","Gap","\t","Game","\n" print "\n" for i in 0..1000 do filename=ARGV[i] file=open(filename) v = [0, 0, 0] # 配列、各要素の初期値は 0 file.each {|line| if /...\.5/ =~ line if $~[0] != nil # 正規表現がマッチすれば if v[0] == 0 v[0]=$~[0] elsif v[1] == 0 v[1]=$~[0] else v[2]=$~[0] end end end } # 中断対局を省く (v[2] != 0) # 結果とスコアが一致しない (v[1] != v[2]) if v[2] != 0 && v[1] != v[2] # if v[1].to_i == 0 # 文字が含まれるかどうか v[1] = v[1][1..-1] # 先頭の 1 文字を削る end if v[2].to_i == 0 v[2] = v[2][1..-1] end # コミの整形 v[0] = v[0][1..-1] # 先頭の 1 文字を削る if v[0][0..0] == "[" # "["が含まれるかどうか v[0] = v[0][1..-1] end dif = v[1].to_i - v[2].to_i # 結果とスコアの差 print v[0],"\t",v[1],"\t",v[2], "\t", dif , "\t", filename, "\n" end file.close end
「<タブ>アカウント(アルファベットで始まる)-アカウント-年月日-時間.sgf」を取り除くためには、正規表現「\t([A-Z]|[a-z]).+.$」
やっぱり手許に5, 6冊ぐらい本ないと全然分かりません^^; 金ができたら買ってこよう。
リンク
カテゴリ: [ruby] - &trackback() - 2006年09月29日 04:47:53
#blognavi