[완료] perl 배열에 관한 질문입니다.

lovethecorners의 이미지

예를 들어서 서로 다른 배열이 다음과 같을때,

@arr1 = ( 1, 2, 3, 3, 4, 5 );
@arr2 = ( 1, 2, 3, 4, 5, 5 );
@arr3 = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11 );

여기서 두번 겹치는 수인 3, 5, 9만을 각각 따로 빼내서 다른 변수에 넣으려 하는데 방법이 있을까요?

lovethecorners의 이미지

음...억지 스럽지만,

구글링 해서 찾은것을 응용 했습니다.

sub uniqueElements {
	my ($item, %seen, @result);
 
	foreach $item (@_) {
		push(@result, $item) if $seen{$item}++;
	}
 
	return @result;
}

==
more than one way to do it
말로만 블로거: http://gojdweb.egloos.com
pung96의 이미지

문제를 잘못이해해서 잘 못 댓글을 달았네요.

전혀 억지스럽지 않습니다.^^ 다만 3번 중복되면!! 배열에 2번 들어가겠군요.

lovethecorners의 이미지

예, 그런데 3번 중복될일은 없을것 같습니다. 참 perl 어떻게 보면 어렵기도 하고 쉽기도 하고, 생각하기 나름인것같은데, 생각잘하기가 가끔어렵습니다.

==
more than one way to do it
말로만 블로거: http://gojdweb.egloos.com

기노욱의 이미지

#!/usr/bin/perl
@arr1 = ( 1, 2, 3, 3, 4, 5 );
@arr2 = ( 1, 2, 3, 4, 5, 5 );
@arr3 = ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 10, 11 );
 
 
for(1..3)
{
	if($_ == 1)
	{
		%DEST = map{$_, 1} @{"arr".$_};
		next ;
	}
 
	for my $in(@{"arr". $_})
	{
		delete $DEST{$in} if($DEST{$in} != 1);
	}
 
}
 
print sort {$a <=> $b} keys  %DEST;