Rubyのmapは面倒な気が

オイラープロジェクト32問目。a*b=cで、a、b、cをつなげた数字が123456789のすべてを1つずつ含む組み合わせを求める。

def pandigital? (n)
  n.split(//).sort.join.to_i == 123456789
end

result = []

(1..10000).each do |i|
  (1..10000).each do |j|
    break if j > i
    p = i * j
    next unless [p, i, j].map{|n| n.to_s.size}.inject(:+) == 9
    if pandigital?([i, j, p].map{|x| x.to_s}.join) then
      print "#{i} x #{j} = #{p}\n"
      result << p
    end
  end
end

print "result: #{result}\n"
print "sum: #{result.uniq.inject(:+)}\n"

オブジェクトの間にメソッドを挟みこむinjectのときには、シンボルをメソッドとして渡せるけど、mapのときにはそうはいかない。ん?

[1,2,3].map(:to_s)とか書ければいいのにと思うんだけど、実際には

[1,2,3].map(&method(String::to_s))
 => ["1", "2", "3"] 

みたいにやるか、

tos = ->(n) {n.to_s}
[1,2,3].map &tos
 => ["1", "2", "3"] 

みたいにやるしかない。ような気がする。