http://perlmonks.org/index.pl?node_id=977333に相互投稿
次のハッシュがあるとします。
my %hash = (1 => "i", 2 => "j", 3 => "k", 4=> "l");
と入力ペア
my @pair = (1,2);
my @pair2 = (2,3);
my @pair3 = (1,3);
my @pair4 = (2,4);
%hash
値が特定のペアのメンバーよりも小さいキーを見つけたいと考えています。
したがって、望ましい出力は次のとおりです。
@pair -> []
@pair2 -> [1]
@pair3 -> [2]
@pair4 -> [1,3]
それを行うための正しいアルゴリズムは何ですか? 以下は私のコードですが、失敗します:
sub get_output {
my ($inputhash,$pair) = @_;
my @output = ();
my %done = ();
foreach my $pr (@{$pair}){
foreach my $kn (keys %{$inputhash}){
next if ($pr <= $kn || $done{$kn});
push @output,$kn;
$done{$kn} = 1;
}
}
use Data::Dumper;
print Dumper \@output;
return @output;
}