Perlの配列から、重複しないものだけを選び出したい場合、どのようにすればいいでしょうか?

なお、配列には、文字列が入る場合もあります。
宜しくお願い致します。

データ
@test = (1,1,1,2,1,2,3,3,4,0);

結果
@test = (4,0);

回答の条件
  • 1人1回まで
  • 登録:2008/07/04 14:49:28
  • 終了:2008/07/04 15:44:09

回答(3件)

id:shintabo No.1

shintabo回答回数45ベストアンサー獲得回数102008/07/04 15:29:47

ポイント35pt

# う~ん、美しくない・・・orz

#!/usr/bin/perl

use strict;

use warnings;

my @res;

my @test = (1,1,1,2,1,2,3,3,4,0);

for my $t (@test) {

push(@res, $t) if (grep(/^$t$/, @test) <= 1);

}

print join(",", @res). "\n";

__END__

id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402008/07/04 15:32:42

ポイント35pt
my @test = (1,1,1,2,1,2,3,3,4,0);
my %count = ();
$count{$_}++ for @test;
@test = grep { $count{$_} == 1 } @test;

こんなところ?

がんばればもうちょっときれいに書けるかも。

id:GoldenDawn No.3

GoldenDawn回答回数426ベストアンサー獲得回数812008/07/04 15:36:48

ポイント10pt
my @test = (1,1,1,2,1,2,3,3,4,0) ;

my %count ;
foreach (@test) {$count{$_}++ ;}
@test = grep {$count{$_} < 2} @test ;

print @test ;

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません