小编epi*_*pid的帖子

资本化排列

我想编写一个ruby片段,它将获取一个字符串并输出所有可能的大写排列.基本上,我有一个我记得的密码,但我不记得它是如何大写的.

到目前为止,我有以下内容:

def permute(str)

  perms = Array.new
  (2 ** str.size).times { perms << str }

  perms.each_index do |i|
    binary = i.to_s(2)
    str_arr = perms[i].split(//)

    bin_arr = binary.split(//)

    while ( bin_arr.size < str_arr.size )
      bin_arr.unshift('0')
    end

    bin_arr.each_index do |b|
      str_arr[b].upcase! if bin_arr[b] == '1'
    end

    puts str_arr.to_s

  end
end
Run Code Online (Sandbox Code Playgroud)

这很好用,但我想知道是否有任何rubyists可以帮助我改进它,这样它就不必在数字字符串上不必要地工作.

例如,字符串"tst1"生成:

tst1
tst1
tsT1
tsT1
tSt1
tSt1
tST1
tST1
Tst1
Tst1
TsT1
TsT1
TSt1
TSt1
TST1
TST1
Run Code Online (Sandbox Code Playgroud)

我正在寻找的输出是:

tst1
tsT1
tSt1
tST1
Tst1
TsT1
TSt1
TST1
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

ruby permutation capitalization

8
推荐指数
1
解决办法
895
查看次数

标签 统计

capitalization ×1

permutation ×1

ruby ×1