2
我需要一個用Ruby編寫的方法來計算變化。我已經用Java編寫了它,但是因爲我是Ruby的新手,所以我錯過了Ruby實現。紅寶石與重複越野車方法的差異
的方法suposed做到這一點:
方法(1, 「01」)=> [ 「0」, 「1」]
方法(2, 「01」)=> [ 「00」, 「01」,「10」,「11」] ...所以你明白了。
注:在Ruby IMPL,我給paralms這樣的:方法(2,[ 「0」,1" ]),但是這不是一個問題
我的Java IMPL:
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:'變異':不能轉換成零字符串(類型錯誤)。
謝謝,工作正常。我有意地聲明瞭數組的大小,以免在每次添加新元素時增加大小(在Java中,我不需要聲明大小)。有什麼辦法可以在Ruby中做到這一點? – 2010-12-04 14:51:27