"Array balanced interlace"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-==참고 자료== +==참고==))
 
(다른 사용자 한 명의 중간 판 6개는 보이지 않습니다)
1번째 줄: 1번째 줄:
;array_balanced_interlace
;array_balanced_interlace
;배열 균형 배치
;배열 균형 병합
;배열 균형 병합


7번째 줄: 8번째 줄:
function xmp($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function xmp($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function array_balanced_interlace($arr1, $arr2) {
function array_balanced_interlace($arr1, $arr2) {
if(count($arr2)>count($arr1)) list($arr1, $arr2)=array($arr2,$arr1);
if(count($arr2)>count($arr1)) list($arr1,$arr2)=array($arr2,$arr1);


$cnt1 = count($arr1);
$cnt1 = count($arr1);
20번째 줄: 21번째 줄:
}
}


$ws = array('W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7');
$as = array('A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7');
$ss = array('S1', 'S2');
$bs = array('B1', 'B2');
$ds = array('D1', 'D2');
$cs = array('C1', 'C2');
$as = array('A1');
$ds = array('D1');


$arr = array_balanced_interlace($ws, $ss);
$arr = array_balanced_interlace($as, $bs);
$arr = array_balanced_interlace($arr, $cs);
$arr = array_balanced_interlace($arr, $ds);
$arr = array_balanced_interlace($arr, $ds);
$arr = array_balanced_interlace($arr, $as);
xmp($arr);
xmp($arr);
</source>
</source>
35번째 줄: 36번째 줄:
Array
Array
(
(
     [0] => W1
     [0] => A1
     [1] => W2
     [1] => A2
     [2] => D1
     [2] => C1
     [3] => S1
     [3] => B1
     [4] => W3
     [4] => A3
     [5] => W4
     [5] => A4
     [6] => A1
     [6] => D1
     [7] => W5
     [7] => A5
     [8] => S2
     [8] => B2
     [9] => D2
     [9] => C2
     [10] => W6
     [10] => A6
     [11] => W7
     [11] => A7
)
)
</source>
</source>


==참고 자료==
==같이 보기==
*[[swap]]
*[[PHP 배열 합집합, 교집합]]
*[[PHP 가중치 랜덤]]
 
==참고==
*http://us2.php.net/manual/es/function.array-merge.php
*http://us2.php.net/manual/es/function.array-merge.php


[[분류: 배열]]
[[분류: 배열]]

2017년 6월 27일 (화) 00:14 기준 최신판

array_balanced_interlace
배열 균형 배치
배열 균형 병합

1 소스코드[ | ]

<?php
function xmp($arr) { echo '<xmp>'; print_r($arr); echo '</xmp>'; }
function array_balanced_interlace($arr1, $arr2) {
	if(count($arr2)>count($arr1)) list($arr1,$arr2)=array($arr2,$arr1);

	$cnt1 = count($arr1);
	$cnt2 = count($arr2);
	$interval = $cnt1/$cnt2;

	for($i=$cnt2-1;$i>-1;$i--) {
		$pos = round(($i+0.5)*$interval);
		array_splice($arr1, $pos, 0, $arr2[$i]);
	}
	return $arr1;
}

$as = array('A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7');
$bs = array('B1', 'B2');
$cs = array('C1', 'C2');
$ds = array('D1');

$arr = array_balanced_interlace($as, $bs);
$arr = array_balanced_interlace($arr, $cs);
$arr = array_balanced_interlace($arr, $ds);
xmp($arr);

2 실행결과[ | ]

Array
(
    [0] => A1
    [1] => A2
    [2] => C1
    [3] => B1
    [4] => A3
    [5] => A4
    [6] => D1
    [7] => A5
    [8] => B2
    [9] => C2
    [10] => A6
    [11] => A7
)

3 같이 보기[ | ]

4 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}