2013-06-05 53 views
0

我想要生成看起来像ABCDAABC的四位数字(从00009999)。 因此,例如模式ABCD将有号码,如根据模式生成数字

0123012401250126012701280129等。

模式AABC,如:

00120013001400150016

+1

你能提供一些代码示例来理解你的做法? – Rubyist

+1

不知道你需要什么。一个发生器具有相等的概率来产生每个字符串,或者只是生成它们全部? – halfelf

+0

我继续生成ABCD的示例代码。 ('0000'..'9999')。each {| x | X如果x =〜/^(?!.*(.).*\1)\d{4}$/} ,我期待生成所有这些(导致阵列) –

回答

2
(0..9).to_a.permutation(4).map{|a, b, c, d| [a, b, c, d].join} 

(0..9).to_a.permutation(3).map{|a, b, c| [a, a, b, c].join} 

或者

(0..9).to_a.permutation(4).map{|a, b, c, d| "#{a}#{b}#{c}#{d}"} 

(0..9).to_a.permutation(3).map{|a, b, c| "#{a}#{a}#{b}#{c}"} 
+0

这是一个很好的方式!谢谢 –