2013-02-08 54 views
6

Làm cách nào để tạo chuỗi chuỗi ký tự và số?Tạo chuỗi ký tự chữ và số trong Ruby

Mỗi chuỗi chỉ được 8 ký tự.

Các nhân vật có thể cho mỗi vị trí là:

["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "V", "W", "X", "Y", "Z"] 

Ngoài ra, Nếu có thể tôi muốn chọn điểm khởi đầu của chuỗi.

Ví dụ:

00000001 
00000002 
00000003 
00000005 
... 
0000L3FH 
0000L3FJ 
0000L3FK 
0000L3FL 
0000L3FM 
0000L3FN 
0000L3FP 
... 
0000L4FP 
0000L4FQ 
0000L4FR 
0000L4FS 
... 
0000M000 
0000M001 
0000M002 

Trả lời

13

Đó là một hoán vị với sự lặp lại. Mảng có thể làm điều đó ra khỏi hộp.

chars = %w(0 1 2 B C) 
sequencer = chars.repeated_permutation(chars.size) #OP:replace chars.size by 8 
10.times{p sequencer.next} 
#["0", "0", "0", "0", "0"] 
#["0", "0", "0", "0", "1"] 
#["0", "0", "0", "0", "2"] 
#["0", "0", "0", "0", "B"] 
#["0", "0", "0", "0", "C"] 
#["0", "0", "0", "1", "0"] 
#["0", "0", "0", "1", "1"] 
#["0", "0", "0", "1", "2"] 
#["0", "0", "0", "1", "B"] 
#["0", "0", "0", "1", "C"] 

p sequencer.next 
#["0", "0", "0", "2", "0"] 
+1

câu trả lời rất tốt và hoàn toàn obsoletes tôi. Đã học một điều mới khác trong ruby ​​:) –

+0

Huh, tìm hiểu điều gì đó mới mẻ mỗi ngày! – bheeshmar

+0

Có thể gieo hạt giống với điểm xuất phát không? – holaSenor

0

một Điều này cho phép thiết lập các điểm xuất phát:

dial = %w(0 1 2 A B) 
start_position = %w(A B 0) #for instance. 

p clock = start_position.map{|char| dial.rotate(dial.index(char))} 
#[["A","B","0","1","2"], ["B","0","1","2","A"], ["0","1","2","A","B"]] 

# start ticking: 
clock.shift.product(*clock){|tick|p tick} 
#["A", "B", "0"] 
#["A", "B", "1"] 
#["A", "B", "2"] 
#["A", "B", "A"] 
#["A", "B", "B"] 
#["A", "0", "0"] 
#... 
+0

Tôi có thể tìm tài liệu về phương pháp dup trên dòng 4 trong khối ở đâu? – holaSenor

+0

tìm thấy nó Lớp đối tượng. http://ruby-doc.org/core-1.9.3/Object.html#method-i-dup – holaSenor

+0

@ tester123 Làm cho nó ngắn hơn (và song song). – steenslag

Các vấn đề liên quan