【问题标题】:Generate all possible permutations of string in Ruby在 Ruby 中生成所有可能的字符串排列
【发布时间】:2014-03-05 21:29:07
【问题描述】:

我有一个长字符串,其中每个字符都有指定数量的选项。举一个更简短的例子,假设我有一个 4 个字符的字符串。第一个字符可以是数字 1-6,第二个字符可以是 1-5 或 a-e,第三个字符只能是 a 或 b,第四个字符可以是 0-9 或 a-z。如何使用 Ruby (RoR) 实用地生成字符串的所有可能排列的列表或数组?空格也可以用于任何字符。

所以字符串的一个例子可能是:

1aaz
21b0
21 0
1 a1

【问题讨论】:

  • 你写了什么代码来解决这个问题?
  • 所选答案中的代码。

标签: ruby string ruby-on-rails-3 permutation combinatorics


【解决方案1】:

这是一个简单的解决方案:

strform = [%w(1 2 3 4 5 6), %w(1 2 3 4 5 a b c d e), %w(a b), %w(0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z)]
strform[0].product(*strform[1..-1]).map(&:join)

【讨论】:

  • 是否可以使用 %w 并在每个字符位置包含一个空格 " ",还是我必须以长格式拼出数组?
  • @sabrams:是的。像这样的东西:%w(a b \ )(这是一个反斜杠空格)。
  • 太棒了。谢谢!
  • 如果可以修改strformstrform.shift.product(*strform).. 是一个不错的方法。
  • @CarySwoveland:这很有趣。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-18
  • 2011-05-13
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多