「perlで配列の引き算」をやってみた
perlで配列の引き算、再調査 – 鈍足ランナーのIT日記
っていうのを見つけたので、面白そうだからやってみる。
配列同士の引き算はPDLに任せるとして、
配列の引き算っていうのは、
配列1から配列2に存在する値を取り除くことを意味している。
つまり、こんな感じ???
use v5.14; use strict; use warnings; my @array1 = ( 1, 2, 3, 4, 5 ); my @array2 = ( 3, 4, 5, 6, 7 ); my @diff = (); foreach my $val (@array1) { while ( $array2[0] < $val ) { shift @array2; last if scalar(@array2) == 0; } if ( 0 < scalar(@array2) ) { if ( $val < $array2[0] ) { push @diff, $val; } else { # @array1と@array2に同じ値が存在する } } else { push @diff, $val; } } say join(', ', @diff);
これを実行すると、こんな感じ。
$ perl aaa.pl
1, 2
ところで、これソートされていること前提にしてる訳ですが、
ソートされていない場合は、ソートしてから実行して頂きたく!!!
おしまい。
Leave a Comment