/ / Permitacja ruby ​​(wbudowana) - Wynik nie zawiera sąsiadujących identycznych liter - ruby, permutacja, ruby-1.8

Permitacja ruby ​​(wbudowana) - Wynik nie zawiera sąsiadujących identycznych liter - ruby, permutacja, ruby-1.8

Dziękuję za pomoc wczoraj i za nauczanie mnie czegoś nowego. :)

Mam inne pytanie oparte na permutacji ... algorytm mam działa, ale mam problem, że identyczne sąsiednie znaki nie są generowane na liście.

Na przykład, jeśli mam listę znaków a-z, 0-9, - i powiedzmy, że maksymalna długość to 2, to powinienem zobaczyć aa, bb, cc, dd, ee, ff, itp. Ad nauseum.

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

Jednak widzę tylko następujące:

file-ba.txt
file-bc.txt

zwróć uwagę na brakującą "bb", która trwa aż do zakończenia programu.

Jestem pewien, że czegoś brakuje, tylko nie jestem pewien co?

Odpowiedzi:

3 dla odpowiedzi № 1

Myślę, że chcesz użyć repeat_permutation zamiast permutacji.

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

Wygeneruje wszystkie permutacje, w tym "file-bb.txt".


1 dla odpowiedzi nr 2

Jest to czym jest permutacja. Jedynymi 6 permutacjami [1,2,3] są

123
132
213
231
312
321