>  기사  >  백엔드 개발  >  PHP는 측면 길이가 N인 단단하고 속이 빈 다이아몬드를 인쇄합니다.

PHP는 측면 길이가 N인 단단하고 속이 빈 다이아몬드를 인쇄합니다.

WBOY
WBOY원래의
2016-08-08 09:29:201182검색

php는 변의 길이가 N인 속이 빈 마름모를 인쇄합니다.

실선 마름모 계산 방법:

$n: 변 길이
$i: 현재 행, 0부터 시작
$rows: 총 행 수

상단
앞 공백 수=$n-$i-1
문자 수=$i*2+1
하단
앞 공백 수 =$i-$n+ 1
문자 수=($rows-$i)*2-1

str_pad를 사용하면 줄일 수 있습니다. for/while 및 기타 루프

/**
 * 打印实心菱型
 * @param  int    $n 边长,默认5
 * @param  String $s 显示的字符, 默认*
 * @return String
 */
function solidDiamond($n=5, $s='*'){

    $str = '';

    // 计算总行数
    $rows = $n*2-1;

    // 循环计算每行的*
    for($i=0; $i<$rows; $i++){
        if($i<$n){ // 上部
            $str .= str_pad(&#39;&#39;, ($n-$i-1), &#39; &#39;). str_pad(&#39;&#39;, $i*2+1, $s)."\r\n";
        }else{     // 下部
            $str .= str_pad(&#39;&#39;, ($i-$n+1), &#39; &#39;). str_pad(&#39;&#39;, ($rows-$i)*2-1, $s). "\r\n";
        }
    }

    return $str;

}

echo &#39;<xmp>';
echo solidDiamond(5);
echo '</xmp>';

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

중공 다이아몬드 계산 방법:
$n: 변 길이
$i: 0부터 시작하는 현재 행
$rows: 총 행 수
상단
앞 공백 수=$n-$i-1
빈 공백 수= $i*2+1-2
문자수 =$i*2+1 -

하단과 앞의 공백 개수 =$i-$n+ 1
앞 부분의 공백 개수 =($rows-$i)*2-1- 2
문자 수=($rows-$i)*2-1 - 공백 개수

/**
 * 打印空心菱型
 * @param  int    $n 边长,默认5
 * @param  String $s 显示的字符, 默认*
 * @return String
 */
function hollowDiamond($n=5, $s='*'){

    $str = '';

    // 计算总行数
    $rows = $n*2-1;

    // 循环计算每行的*
    for($i=0; $i<$rows; $i++){
        if($i<$n){ // 上部
            $tmp = $i*2+1;
            $str .= str_pad(&#39;&#39;, ($n-$i-1), &#39; &#39;). str_pad(str_pad(&#39;&#39;, $tmp-2, &#39; &#39;, STR_PAD_BOTH), $tmp, $s, STR_PAD_BOTH)."\r\n";
        }else{     // 下部
            $tmp = ($rows-$i)*2-1;
            $str .= str_pad(&#39;&#39;, ($i-$n+1), &#39; &#39;). str_pad(str_pad(&#39;&#39;, $tmp-2, &#39; &#39;, STR_PAD_BOTH), $tmp, $s, STR_PAD_BOTH). "\r\n";
        }
    }

    return $str;

}

echo &#39;<xmp>';
echo hollowDiamond(5);
echo '</xmp>';

    *
   * *
  *   *
 *     *
*       *
 *     *
  *   *
   * *
    *

위 내용은 관련 내용을 포함하여 단단하고 속이 빈 다이아몬드를 측면 길이 N으로 인쇄하는 PHP를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.