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
I'd do as follows using String#gsub(pattern, hash) :
string = "this is a test"
subs = {'a'=>'@','i'=>'!','s'=>'$'} # copied from @ArupRakshit
keys = subs.keys
And core code:
1.upto(keys.length).flat_map { |i|
keys.combination(i).flat_map { |c| string.gsub(/[#{c.join}]/, subs) }
}
Output:
=> ["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"]