当前位置: 代码迷 >> PHP >> 请问生成字母加数字
  详细解决方案

请问生成字母加数字

热度:86   发布时间:2016-04-28 17:03:46.0
请教生成字母加数字
有26个字母{a-Z}和10个数字{0-9}
如果要生成8位字符的,区分大小写,
这样的排列是(26+26+10)8次方=218340105584896个,这218万亿
但相邻不能有两个或以上相同的如{a1b2cc90,这个字符出现了两次cc}
这样的数据可以用PHP来产生吗?
如果生成单个文本数据应该不太可能,得切割成好多份……
------解决思路----------------------
这个意思?
$d = str_split('abcd');
print_r(array_map('join', f(4, $d)));

function f($n, $d) {
  $t = array_chunk($d, 1);
  if($n > 2) $t = f($n-1, $d);
  foreach($t as $x)
    foreach(array_chunk($d, 1) as $y) {
      if(end($x) != end($y)) $r[] = array_merge($x, $y);
    }
  return $r;
}
Array
(
    [0] => abab
    [1] => abac
    [2] => abad
    [3] => abca
    [4] => abcb
    [5] => abcd
    [6] => abda
    [7] => abdb
    [8] => abdc
    [9] => acab
    [10] => acac
    [11] => acad
    [12] => acba
    [13] => acbc
    [14] => acbd
    [15] => acda
    [16] => acdb
    [17] => acdc
    [18] => adab
    [19] => adac
    [20] => adad
    [21] => adba
    [22] => adbc
    [23] => adbd
    [24] => adca
    [25] => adcb
    [26] => adcd
    [27] => baba
    [28] => babc
    [29] => babd
    [30] => baca
    [31] => bacb
    [32] => bacd
    [33] => bada
    [34] => badb
    [35] => badc
    [36] => bcab
    [37] => bcac
    [38] => bcad
    [39] => bcba
    [40] => bcbc
    [41] => bcbd
    [42] => bcda
    [43] => bcdb
    [44] => bcdc
    [45] => bdab
    [46] => bdac
    [47] => bdad
    [48] => bdba
    [49] => bdbc
    [50] => bdbd
    [51] => bdca
    [52] => bdcb
    [53] => bdcd
    [54] => caba
    [55] => cabc
    [56] => cabd
    [57] => caca
    [58] => cacb
    [59] => cacd
    [60] => cada
    [61] => cadb
    [62] => cadc
    [63] => cbab
    [64] => cbac
    [65] => cbad
    [66] => cbca
    [67] => cbcb
    [68] => cbcd
    [69] => cbda
    [70] => cbdb
    [71] => cbdc
    [72] => cdab
    [73] => cdac
    [74] => cdad
    [75] => cdba
    [76] => cdbc
    [77] => cdbd
    [78] => cdca
    [79] => cdcb
    [80] => cdcd
    [81] => daba
    [82] => dabc
    [83] => dabd
    [84] => daca
    [85] => dacb
    [86] => dacd
    [87] => dada
    [88] => dadb
    [89] => dadc
    [90] => dbab
    [91] => dbac
    [92] => dbad
    [93] => dbca
    [94] => dbcb
    [95] => dbcd
    [96] => dbda
    [97] => dbdb
    [98] => dbdc
    [99] => dcab
    [100] => dcac
    [101] => dcad
    [102] => dcba
    [103] => dcbc
    [104] => dcbd
    [105] => dcda
    [106] => dcdb
    [107] => dcdc
)


------解决思路----------------------
  相关解决方案