java - 具有重复错误方法的 Ruby 变体

标签 java ruby

我需要一个用 Ruby 编写的方法来计算变体。我已经用 Java 编写了它,但由于我是 Ruby 的新手,所以我在 Ruby 实现方面缺少一些东西。

该方法应该这样做:

method(1, "01") => ["0", "1"] <br>
method(2, "01") => ["00", "01", "10", "11"] ...so you get the idea.

注意:在 Ruby 实现中,我给出这样的参数:

method(2, ["0", 1"])

但这不是问题。

我的 Java 实现:

public static List<String> Variations(int strength, String usableChars) {
    List<String> list = 
        new ArrayList<String>((int) Math.pow(usableChars.length(), strength));

    if (strength == 0) {
        list.add("");
    } else {
        List<String> l = Variations(strength - 1, usableChars);
        for (char c : usableChars.toCharArray()) {
            for (String s : l) {
                list.add(c + s);
            }
        }
    }
    return list;
}

而且它工作正常。但这是我的 Ruby 实现:

def Variation (strength, arrayOfString)
    array = Array.new(arrayOfString.size**strength)

    if strength == 0
        array << ""
    else
        a = Variation(strength-1, arrayOfString)
        for i in arrayOfString do
            for j in a do
                array << (i + j)
            end
        end
    end
    return array 
end

在这个过程中,我不断收到错误消息

test.rb:10:in `Variation': can't convert nil into String (TypeError).

最佳答案

在 Ruby 中,数组会根据需要自动增长。所以改变你的数组初始化:

array = Array.new(arrayOfString.size**strength)

array = []

枚举字符串中的每个字符,而不是

for i in arrayOfString do

这样做:

arrayOfString.each_char do |i|

最终结果:

#!/usr/bin/ruby1.8

def Variation (strength, arrayOfString)
  array = []
  if strength == 0
    array << ""
  else
    a = Variation(strength - 1, arrayOfString)
    arrayOfString.each_char do |i|
      for j in a do
        array << (i + j)
      end
    end
  end
  return array
end

p Variation(2, '01')    # => ["00", "01", "10", "11"]

each_char 在 Ruby >= 1.8.7 中,或者您可以从 backports gem 中获取它.

关于java - 具有重复错误方法的 Ruby 变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4353929/

相关文章:

java - 读取大量文件而不对其路径进行硬编码

javascript - Rails 操作仅调用一次,但我在 ajax 中每秒调用一次

ruby - 为什么从基于大型数组的大型散列中选择值如此缓慢?

ruby - 我可以判断一个方法是否需要在 ruby​​ 中返回一些东西吗?

ruby-on-rails - Rails partials 的依赖关系图

ruby - Nokogiri 替换 HTML 的 strip 内容

java - 有很多 @Service 方法来检查 id 是否有结果

java - Zookeeper - 跟随领导者时出现异常 java.lang.IllegalArgumentException

java - 在抽屉导航标题中设置文本

java - 实现多个表的 JOIN