Хорошо, я искал в Интернете ответы и также искал часы у своего рубинового программиста, но я не могу разобраться в этом. Я пишу скрипт для создания всех видов комбинаций из элементов в массиве.Ruby Комбинации с элементами массива
ar = ["a","b","c","d"]
На данный момент я могу сделать эти комбинации:
["a"],["a","b"],["a","b","c"],["a","b","c","d"],["b"],["b","c"],["b","c","d"],["c"],["c","d"],["d"]
Это нормально, но я не могу найти способ для поиска этих комбинаций, например ["a","c"] or ["a","c","d"] or ["a","d"]
, и т.д ...
На данный момент мой код выглядит следующим образом:
def combinaties(array)
combinaties = []
i=0
while i <= array.length-1
combinaties << array[i]
unless i == array.length-1
array[(i+1)..(array.length-1)].each{|volgend_element|
combinaties<<(combinaties.last.dup<<volgend_element)
}
end
i+=1
end
end
какой у вас вопрос ...? – sethvargo
Вы ищете перестановки? Вы можете попробовать это с помощью индексов массива. – three
@three Class Array имеет [метод перестановки] (http://ruby-doc.org/core-1.9.3/Array.html#method-i-permutation). – steenslag