2008-02-29から1日間の記事一覧

4.12 配列内の複数の要素を一度に処理する

# @ARRAYの先頭から$N個の要素を削除する @FRONT = splice(@ARRAY, 0, $N); # @ARRAYの末尾から$N個の要素を削除する @END = splice(@ARRAY, -$N); # shift2 sub shift2 (\@) { return splice(@{$_[0]}, 0, 2); } # pop2 sub pop2 (\@) { return splice(@{$_…

4.11 配列の要素を逆順にする

# 方法1 @REVERSED = reverse @ARRAY; # 方法2 foreach ($i = $#ARRAY; $i >= 0; $i--) { # $ARRAY{$i}に対する処理を書く }

4.10 一方の配列を他方の配列に連結する

push(@ARRAY1, @ARRAY2);

4.9 2つのユニークなリストの和、差、積を求める。

# 配列、ハッシュを初期化 @a = (1, 3, 5, 6, 7, 8); @b = (2, 3, 5, 7, 9); @union = @isect = @diff = (); %union = %isect = (); %count = (); ## 和集合と積集合を求める簡単な方法 foreach $e (@a) { $union{$e} = 1 } foreach $e (@b) { if ($union{$e…

4.8 一方の配列にあってもう一方にない要素を見つける

## 単純な方法 # @Aと@Bにはすでに要素が格納されている %seen = (); # @Bの要素を判定するためのルックアップテーブル @aonly = (); # 結果 # ルックアップテーブルの作成 foreach $item (@B) { $seen{$item} = 1 } # @Aにはあり、@Bにはない要素を検出 for…

4.7 リストからユニークな要素を抽出する

# 単純な方法 %seen = (); @uniq = (); foreach $item (@list) { unless ($seen{$item}) { # ここに到達したら、そのアイテムはユニークである。 $seen{$item} = 1; push(@uniq, $item); } } # 処理速度の速い方法1 %seen = (); foreach $item (@list) { pus…

4.6 リファレンスで配列を繰り返し処理する

# 方法1 foreach $item (@$ARRAYREF) { # $itemに対する処理を書く } # 方法2 for ($i = 0; $i <= $#$ARRAYREF; $i++) { # $ARRAYREF->[$i]に対する処理を書く }