3次の置換(Ruby)

「"012"→num の置換」でひとつの元。perm3[num1, num2] は2つの元の積を表す。

#permutation(置換)
perm3 = lambda do |num1, num2|
  n1 = num1.chars.map(&:to_i)
  n2 = num2.chars.map(&:to_i)
  n1.map {|i| n2[i]}.join
end

perm3["210", "012"]     #=>"210"
#3次の置換は非可換
perm3["120", "210"]     #=>"102"
perm3["210", "120"]     #=>"021"

 
※注記
2017/6/30 に全面的に書き直しました。