Ruby Permutation (Builtin) - результат не содержит соседних одинаковых букв - PullRequest
0 голосов
/ 31 мая 2011

Спасибо за вчерашнюю помощь и за то, что научили меня чему-то новому. :)

У меня есть еще один вопрос, основанный на перестановке ... алгоритм, который у меня есть, работает, однако у меня есть проблема, что идентичные смежные символы отсутствуют в сгенерированном списке.

Например, если у меня есть список символов az, 0-9, - и допустим, что максимальная длина равна 2, то я должен увидеть aa, bb, cc, dd, ee, ff и т. Д. До тошноты.

length = 1
alphabet = [('a'..'z').to_a, ('0'..'9').to_a, ('-').to_a].flatten
prefix = 'file-'
suffix = '.txt'


while length < 3


alphabet.permutation(length).each do |x|

@name =  prefix+x.join('').to_s+suffix
puts @name

end

length += 1

end

Однако я вижу только следующее:

file-ba.txt
file-bc.txt

обратите внимание на пропущенный «bb», и это продолжается до завершения программы.

Я уверен, что что-то упустил, просто не уверен, что?

Ответы [ 2 ]

3 голосов
/ 31 мая 2011

Я думаю, что вы хотите использовать repeat_permutation вместо перестановки.

http://www.ruby -doc.org / core / classes / Array.html # M000289

Он будет генерировать все перестановки, включая «file-bb.txt».

1 голос
/ 31 мая 2011

Это что такое перестановка . Единственные 6 перестановок [1,2,3]

123
132
213
231
312
321
...