【问题标题】:Ruby Output every possible character (A-Z, a-z, 0-9) combination between 8 and 16 characters longRuby 输出长度在 8 到 16 个字符之间的每个可能的字符(A-Z、a-z、0-9)组合
【发布时间】:2016-04-04 22:16:31
【问题描述】:

如何使用字符 AZ(大写和小写)和数字 0-9 输出每个可能的字符组合(8 到 16 之间),同时还使用一些特殊字符,例如下划线和美元符号。

【问题讨论】:

  • 你要运行这个程序多少年?这里有 62^16 种可能性。这大约是 1.5 万亿年,每秒 10 亿次迭代。
  • 欢迎来到 Stack Overflow。除了在这里问之外,您还为此付出了哪些努力?这是作业吗?

标签: arrays ruby combinations permutation


【解决方案1】:

正如@tadman 所说,这不会在我们太阳系的生命周期内完成,但理论上,你可以这样完成:

chars = [*:A..:Z, *:a..:z, *0..9, ?$, ?_]

(8..16).each do |n|
  chars.permutation(n) do |a|
    puts a.join
  end
end

如果要在开始前计算输出的行数:

(8..16).reduce(0) {|sum,n| sum + chars.permutation(n).size }

注意:有四种Array 方法可以获取字符的“组合”:permutationcombinationrepeated_permutationrepeated_combination。您应该检查文档或对每个进行试验,以确保您获得了正确的“组合”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多