Я просматриваю проблемы с Ruby Primer Ruby Monk's Ruby.Метод комбинаций Ruby's Array
Заявление о проблемах Учитывая число из 3 или 4 цифр с различными цифрами, верните отсортированный массив из всех уникальных чисел, которые могут быть сформированы с этими цифрами. Пример: Дано: 123 Возврат: [123, 132, 213, 231, 312, 321]
Я думал, что массив # комбинация метод будет делать трюк. Мой код выглядит следующим образом:
def number_shuffle(number)
# take integer and turn it into an array of digits
digits = Array.new
number.to_s.split('').each do |element|
digits << element.to_i
end
# shuffle the elements
return digits.combination(digits.length).to_a
end
puts number_shuffle(123)
Но приведенный выше код возвращает:
1
2
3
Не уверен, что я делаю неправильно здесь. Я думал, что документация ясно дал понять:
http://www.ruby-doc.org/core-2.2.0/Array.html#method-i-combination
Любая помощь приветствуется.
Для 'number = 123' вы вычисляете' [1,2,3] .combination (3) .to_a => [[1,2,3]] 'и' puts [[1,2,3] ] 'будет печатать' 1', '2' и' 3' на последовательных строках. Напротив, 'p [[1,2,3]]' печатает '[[1, 2, 3]]' в одной строке. Вы получаете этот результат, потому что каждый массив 'a' имеет только одну комбинацию размера' a.size', а именно 'a', поэтому' [a] 'возвращается. С другой стороны, '[1,2,3] .combination (1).(1), [2], [3]] и [1,2,3] ]] '. Я считаю, что вам известно, что вам нужно использовать 'перестановка', а не' сочетание'. –