随机播放一个字符串以产生唯一的字符串并带回原始字符串?

时间:2013-08-05 14:46:03

标签: php algorithm

是否有任何算法会对字符串中的字符进行洗牌,以便每个shuffle返回一个唯一的组合,但如果我们知道它被洗牌了多少时间,那么它可以重新转换回原始字符串?

这是我到目前为止所做的,但这不是我想要的。在它返回到原始字符串

之后,它只能刷新(n / 2)+1次
//scramble data systematicslly
function Scramble($contents)
{
    $fsize=strlen($contents);
    $m=intval($fsize/2);
    $buffer=$contents[$m];
    for($i = 1; $i < $fsize; $i++)
    { 
        if($i%2==0)
        {
            if($m+$i<=$fsize){$buffer.= $contents[$m+$i];}
            if($m-$i>=0){$buffer.= $contents[$m-$i];}
        }else
        {
            if($m+$i<=$fsize){$buffer.= $contents[$m+$i];}
            if($m-$i>=0){$buffer.= $contents[$m-$i];}
        }
    }    
    return $buffer;
}

1 个答案:

答案 0 :(得分:0)

创建执行操作的函数。如果你这样做,你知道这个过程,所以要找到原始字符串,创建另一个以整数作为参数的函数,并执行与原始函数相反的 n 次。