ホームページ  >  記事  >  バックエンド開発  >  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 までご連絡ください。