ruby

ソート時に比較関数を指定する

ary = ['1','2','33','4'] ary.sort => ["1", "2", "33", "4"] ary.sort{|a,b| a.to_i <=> b.to_i} => ["1", "2", "4", "33"] #しかし、上の指定では比較のたびにto_iが呼ばれるので ary.sort_by{|x| x.to_i} => ["1", "2", "4", "33"] #こうするのがよい

書式付き文字列

s = 'cost = %d, attack = %d' % [1,2] => "cost = 1, attack = 2" #文字列を+でつなぎあわせていくよりも、挿入の方が最終結果がイメージしやすい

2進数xの1番右にある1の位置を求めるには

x & -x は Hacker's delight にある、立っている一番右端のビットだけ残して0にしてしまう黒魔術 http://d.hatena.ne.jp/siokoshou/20090704 コードで試してみた20.times{|i| puts i.to_s + ' & ' + (-i).to_s + ' (10) = ' + (i&(-i)).to_s puts i.to_s(2)+…

p puts print 違い

a = [1,2,3] p a =>[1, 2, 3] puts a => 1 2 3 print a =>123 a = ['1','2','3'] p a ["1", "2", "3"] puts a => 1 2 3 print a =>123

配列 分割

foo = %w(1 2 3 4 5 6 7 8 9 10) foo.each_slice(3).to_a #=> [["1", "2", "3"], ["4", "5", "6"], ["7", "8", "9"], ["10"]]

0埋め

123.to_s.rjust(8,'0') => "00000123"

画像処理 並列処理 parallel

画像処理を1スレッドでやるとCPUが余るので並列化する。 windows xpで使えるかテスト→使えた。 parallelの参考: http://subtech.g.hatena.ne.jp/secondlife/20110927/1317123109#gem install parallel require 'rubygems' require 'parallel' require 'open…

libchasen

Rubyで人工無能を作ろうとしています。以下は形態素解析に必要なlibchasen.dllをrubyから使うためのメモです。形態素解析のchasenを使いたいのですが、Vistaの環境だとcha21244sp5.exeが動かなくて困ります。chasen233_031208.exeなら動いたので、これでいく…