Мне нужен метод, написанный на Ruby, который вычисляет Вариации.Я уже написал это на Java, но, поскольку я новичок в Ruby, мне просто не хватает реализации Ruby.
Метод предназначен для этого:
method (1, "01") => ["0", "1"]
method (2, "01") => ["00", "01", "10", "11"] ... так что вы поймете идею.
примечание: в выражении 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: в `Variation ': невозможно преобразовать nil в String (TypeError).