I was wondering if there is a simple way to do every combination of selected character substitutions in ruby in a simple way.
An example:
string
A one-line functional solution
string = "this is a test"
subs = {'a'=>'@','i'=>'!','s'=>'$'}
(1..subs.size).flat_map { |n| subs.keys.combination(n).to_a }.map { |c| string.gsub(/[#{c.join}]/, subs) }
# => ["this is @ test", "th!s !s a test", "thi$ i$ a te$t", "th!s !s @ test", "thi$ i$ @ te$t", "th!$ !$ a te$t", "th!$ !$ @ te$t"]