Array balanced interlace

Jmnote (토론 | 기여)님의 2014년 2월 16일 (일) 23:22 판 (→‎소스코드)
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;
}

$ws = array('W1', 'W2', 'W3', 'W4', 'W5', 'W6', 'W7');
$ss = array('S1', 'S2');
$ds = array('D1', 'D2');
$as = array('A1');

$arr = array_balanced_interlace($ws, $ss);
$arr = array_balanced_interlace($arr, $ds);
$arr = array_balanced_interlace($arr, $as);
xmp($arr);

2 실행결과

Array
(
    [0] => W1
    [1] => W2
    [2] => D1
    [3] => S1
    [4] => W3
    [5] => W4
    [6] => A1
    [7] => W5
    [8] => S2
    [9] => D2
    [10] => W6
    [11] => W7
)

3 참고 자료

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