2013-02-08 16 views
6

में अल्फान्यूमेरिक अनुक्रम उत्पन्न करें मैं अनुक्रमिक अल्फान्यूमेरिक स्ट्रिंग उत्पन्न करने के बारे में कैसे जाऊं?रुबी

प्रत्येक स्ट्रिंग केवल 8 वर्ण होने चाहिए।

वर्ण प्रत्येक स्थिति के लिए संभव हो रहे हैं:

["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"] 

इसके अलावा, यदि संभव हो तो मैं अनुक्रम का प्रारंभिक बिंदु का चयन करना चाहते हैं।

उदाहरण के लिए:

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

उत्तर

13

दोहराव के साथ एक क्रमपरिवर्तन है यही कारण है कि। Arrays बॉक्स से बाहर कर सकते हैं।

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

बहुत अच्छा जवाब और पूरी तरह से मेरा अप्रयुक्त बना दे। रूबी में अभी तक एक और नई बात सीखी :) –

+0

हू, हर रोज कुछ नया सीखो! – bheeshmar

+0

क्या शुरुआती बिंदु से इसे बीज करना संभव होगा? – holaSenor

0

यह एक प्रारंभिक बिंदु स्थापित करने के लिए अनुमति देता है:

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

ब्लॉक में लाइन 4 पर डुप्ली विधि पर मुझे दस्तावेज़ कहां मिल सकता है? – holaSenor

+0

ने इसे ऑब्जेक्ट क्लास पाया। http://ruby-doc.org/core-1.9.3/Object.html#method-i-dup – holaSenor

+0

@ tester123 इसे छोटा (और डुप्लिकेट) बनाया गया। – steenslag