ソートが最小値を選択しているperlコードを持っていますが、1つの値が0の場合は無視してください。 これはフィルタリングなしで機能をソートされます。Perlはゼロをフィルタリングして最小値を並べ替えます
sub desc_Emin
{
my($emin)=(sort{$b<=>$a} @_)[-1];
return $emin;
}
そして、この関数が呼び出されると、受け取る値:[それをソートした後
descs_a descs_b descs_c
1 4 5
0 1 3
0 0 0
2 2 0
:たとえば
$desc_mv[$n]=desc_Emin($descs_a[$n],$descs_b[$n],$descs_c[$n]);
は、リストがあります$ desc_mv]は次のとおりです。
1
1
0
2
'if'文をたくさん追加せずにフィルタする方法は? ?次のように "$ desc_mv [$ n]は= desc_Emin(..." の部分
私の速い時間的解決策が見える中でゼロをフィルタリングする方が良い:あなたは物事を過度に複雑だ
if($descs_a[$n] == $descs_b[$n] and $descs_b[$n] == $descs_c[$n]){
$desc_mv[$n]=$descs_a[$n];
}
else{
use Switch;
switch($descs_a[$n]){
case 0 {$descs_a[$n] = 99999999999999};
}
use Switch;
switch($descs_b[$n]){
case 0 {$descs_b[$n] = 99999999999999};
}
use Switch;
switch($descs_c[$n]){
case 0 {$descs_c[$n] = 99999999999999};
}
$desc_mv[$n]=desc_Emin($descs_a[$n],$descs_b[$n],$descs_c[$n]);
}
をあなたが使用する必要があります何かを見つける必要がある場合には、 'grepを/マップ/ –
@ OlegV.Volkovしかし、私は数値を持っているので、なぜgrepとmapを使うべきですか? '$ descs _a [1] 'は既に '1'であり、' $ descs_c [1] 'は '0'です。コードは私によって書かれていません - 私はそれを使用して、このバグを修正しようとしています。 – XuMuK
私はあなたの質問を得ることはありません。あなたは何とか 'grep'が文字列のためだと思っていますか?いいえ、そうではありません。 –