自动递增字母数字序列

时间:2017-04-11 21:32:41

标签: php mysql algorithm

需要生成字母数字序列的算法指针。要求如下。

只能使用0-9,A-Z和a-z字符。最初序列将仅以一个字符开始,当序列耗尽时,它将转到两个字符,类似地,当前一个序列用尽时,序列将递增。

序列的例子如下:

一个字符序列

  

0 1 2 .. 9 A B .. Z a b .. z

现在一个字符序列已经用完了。然后将开始一个2位数的系列。

  

00 01 02 .. 09 0A 0B .. 0Z 0a 0b .. 0z 10 11 .. 19 1A .. 1Z 1a 1b ..   ZZ

在两个角色系列已经用尽之后,将开始3个角色系列,如下所示

  

000 ... zzz

系列将会产生,直到12个角色系列已经用尽。

有人可以帮我指点一些链接或建议我这样做的机制吗?

我想在PHP中这样做。

由于

2 个答案:

答案 0 :(得分:1)

的Python:

digits="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

def NthStr(n):
    str=digits[n%len(digits)];
    while n>=len(digits):
        n=(n/len(digits) - 1)
        str=digits[n%len(digits)]+str
    return str

尝试(使用较少的数字,以便您可以看到模式):https://ideone.com/rZEV1m

我想这可以很容易地转换成PHP

答案 1 :(得分:1)

下面给出了Matt的python代码的PHP实现。

以下字符已从实施中删除 0,O,O,1,I,I

<?php
function GenerateShortCodes($n)
{
    $alphabet=array('A','B','C','D','E','F','G','H','J','K','L','M','N','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','j','k','m','n','o','p','q','r','s','t','u','v','w','x','y','z','2','3','4','5','6','7','8','9');
    $len=56;
    $ns=$alphabet[$n%$len];
    while ($n>=$len)
    {
       $n=($n/$len-1);
       $ns=$alphabet[$n%$len].$ns;
    }
    return $ns;
}
$startval=0;

for( $i = $startval; $i<$startval+10000; $i++ ) 
{
    echo GenerateShortCodes($i);
    echo '</br>';
}
?>