Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

All possible combinations of selected character substitution in a string in ruby

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 = "this is a test"
    subs = ['a'=>'@','i'=>'!','s'=>'$']
    subs.combination.each { |c|
        string.gsub c
    }

would yield

    "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"

Thanks for the help!

like image 293
user3207230 Avatar asked Nov 24 '25 00:11

user3207230


1 Answers

I'd do as below :

string = "this is a test"
subs = {'a'=>'@','i'=>'!','s'=>'$'}

keys = subs.keys
combinations = 1.upto(subs.size).flat_map { |i| keys.combination(i).to_a }

combinations.each do |ary|
  new_string = string.dup
  ary.each { |c| new_string.gsub!(c,subs) }
  puts new_string
end

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
like image 82
Arup Rakshit Avatar answered Nov 26 '25 16:11

Arup Rakshit