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('', ($n-$i-1), ' '). str_pad('', $i*2+1, $s)."\r\n"; }else{ // 下部 $str .= str_pad('', ($i-$n+1), ' '). str_pad('', ($rows-$i)*2-1, $s). "\r\n"; } } return $str; } echo '<xmp>'; echo solidDiamond(5); echo '</xmp>';
* *** ***** ******* ********* ******* ***** *** *
/** * 打印空心菱型 * @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('', ($n-$i-1), ' '). str_pad(str_pad('', $tmp-2, ' ', STR_PAD_BOTH), $tmp, $s, STR_PAD_BOTH)."\r\n"; }else{ // 下部 $tmp = ($rows-$i)*2-1; $str .= str_pad('', ($i-$n+1), ' '). str_pad(str_pad('', $tmp-2, ' ', STR_PAD_BOTH), $tmp, $s, STR_PAD_BOTH). "\r\n"; } } return $str; } echo '<xmp>'; echo hollowDiamond(5); echo '</xmp>';
* * * * * * * * * * * * * * * *
위 내용은 관련 내용을 포함하여 단단하고 속이 빈 다이아몬드를 측면 길이 N으로 인쇄하는 PHP를 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.