반응형
php 한 변이 N인 솔리드 및 속이 빈 마름모꼴을 인쇄
솔리드 마름모꼴 계산 방법:
$n: 에지 길이
$i: 현재 줄, 0 시작
$rows: 총 행 수
상부
전면 공백 수=$n-$i-1
문자수=$i*2+1
하부
전면 공백 수=$i-$n+1
문자 수= ($rows-$i)*2-1
str_pad를 사용하면 for/wh를 줄일 수 있다ile 등순환
/**
* 인쇄 솔리드 마름모꼴
* @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>';
*
***
*****
*******
*********
*******
*****
***
*
중공마름모형 계산방법:
$n: 에지 길이
$i: 현재 줄, 0 시작
$rows: 총 행 수
상부
전면 공백 수=$n-$i-1
빈 공간 수=$i*2+1-2
문자수=$i*2+1 - 빈 칸 수
하부
전면 공백 수=$i-$n+1
빈 칸 수 = ($r)ows-$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('', ($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>';
*
* *
* *
* *
* *
* *
* *
* *
*
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php ip2long 음수 발생 원인과 해결 방법 (0) | 2022.08.23 |
---|---|
php 배열 요소 찾기 효율 향상 방법 (0) | 2022.08.22 |
curl https 요청 방법 가져오기 (0) | 2022.08.22 |
php 스트림 파일 전송 및 수신 (0) | 2022.08.22 |
php Y2K38 취약점 해결 방법 (0) | 2022.08.22 |