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

lovethecorners의 이미지
4449
points
2
points

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

@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의 이미지
4449
points

음...억지 스럽지만,

2
points

음...억지 스럽지만,

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

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의 이미지
3173
points

문제를 잘못이해해서

2
points

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

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

lovethecorners의 이미지
4449
points

예, 그런데 3번

2
points

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

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

기노욱의 이미지

제가 짰습니다.

1
point

#!/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;

댓글 보기 옵션

원하시는 댓글 전시 방법을 선택한 다음 "설정 저장"을 누르셔서 적용하십시오.