module StringPermutations

Public Class Methods

combination(arr,len,start,k) click to toggle source
# File lib/string_permutations.rb, line 17
def self.combination(arr,len,start,k)
        if(len == 0)
                @for_perms.push(@result.join(""))
                return
        end
        for i in start..(arr.length - len)
                @result[k - len] = arr[i]
                combination(arr,len-1,i+1,k)
        end
end
permutate(str,k) click to toggle source
# File lib/string_permutations.rb, line 3
    def StringPermutations.permutate(str,k)
return nil unless k.class == Fixnum && str.class == String
            arr = str.split("")
            @for_perms = []
            @result = []
            @final = []
            combination(arr,k,0,k)
            @for_perms.each{|x|
                    arr = x.split("")
                    permutation(arr,0,k)
            }
            @final.uniq
    end
permutation(a,i,n) click to toggle source
# File lib/string_permutations.rb, line 28
def self.permutation(a,i,n)
        if i==n
                @final.push(a.join(""))
        else
                for j in i..n
                        a[i],a[j] = a[j],a[i]
                        permutation(a,i+1,n)
                        a[i],a[j] = a[j],a[i]
                end
        end
end