バリエーションを計算するRubyで書かれたメソッドが必要です。私はすでにJavaで作成しましたが、Rubyを初めて使用するため、Rubyの実装について欠けている点があります。
メソッドはこれを行うと想定されています:
method(1、 "01")=> ["0"、 "1"]
method(2、 "01")=> ["00"、 "01"、 "10"、 "11"]...だからあなたはアイデアを得る。
注:Ruby implでは、次のようなパラメーターを指定します:method(2、["0"、1"])が、それは問題ではありません。
私のJavaimpl:
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'を受け取り続けます:nilを文字列に変換できません(TypeError)。