1. 程式人生 > >z型字串轉換(演算法)

z型字串轉換(演算法)

這裡寫圖片描述

<?php 
header("Content-type:text/html;charset=utf-8");
/**
* 處理最小週期內的字串 
* @author   syh
* @param    array $arr 最小處理陣列
* @param    int $t_num 每個週期內字串個數
* @return   array
*/
function fun($arr,$t_num)
{
    // 如果不夠最小週期補空串
    if (count($arr)<$t_num) 
    {
        $arr_new=array_fill(0,$t_num-count($arr
), ''); $arr=array_merge($arr,$arr_new); } $i=0; $list[$i]=array_shift($arr); while (count($arr)>0) { $i++; // 合併最小週期內同行內的字串 $list[$i]=array_shift($arr).array_pop($arr); } return $list; } /** * 主程式 * @author syh * @param string $str 字串 * @param
string $rows 行數 * @return array */
function main($str,$rows) { $num=2*$rows-2;//每個週期裡的字元個數 $arr=array_chunk(str_split($str),$num);//分割陣列 for ($i=0; $i <=$rows; $i++) { foreach ($arr as $key => $value) { $list=fun($value,$num); @$list_new
[$i].=$list[$i]; } } return implode(' ',$list_new); } $str='abcdefghijklmnopqrstuvwxyz'; $str_new=main($str,4); //4行 var_dump($str_new); ?>