「"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 に全面的に書き直しました。