Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby中生成字母数字序列_Ruby_String - Fatal编程技术网

在Ruby中生成字母数字序列

在Ruby中生成字母数字序列,ruby,string,Ruby,String,我如何生成一个连续的字母数字字符串 每个字符串只能包含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 0000000

我如何生成一个连续的字母数字字符串

每个字符串只能包含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

这是一种重复排列。阵列可以在开箱即用的情况下实现这一点

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

此选项允许设置起点:

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"]
#...

回答得很好,完全淘汰了我的。在ruby中又学到了一个新东西:)我不这么认为。在可能的地方添加了另一个答案。在块的第4行我可以在哪里找到关于dup方法的文档?@tester123使它更短(并且dup更少)。很可爱,但这将产生所有的可能性(例如000),我不认为这是什么required@Marc-安德烈拉福琼:你的意思是在[0]、[0]、[0]之前停下来吗?