0
たとえば(1,2,5,6,7)と指定して、3と4がないと判断したいのですか?Perlのリストに見つからない数字を見つける
私は目標を達成するために次のコードを見つけました。
#!/usr/bin/perl
use Data::Dumper;
@list= (1,2,5,6,7);
@missing = map $list[$_-1]+1..$list[$_]-1, [email protected];
print Dumper(\@missing);
出力:
$VAR1 = [
3,
4
];
誰かが上記のコードの背後にあるロジックを説明していただけますか?
あなたがそのコードを得たが、私はそれで1つのわずかな屁理屈を持っているところわかりません。 '@ list-1'は' $#list'として書かれています。スカラーコンテキストの '@list'は、' @list'の要素の数を返します。その中から1つを減算すると、配列の最後のインデックスが得られます。しかし、 '$#list'は、減算を必要とせずに' @list'の最後のインデックスを与える特別な変数です。それはより効率的で、あなたの意図をよりよく表します。 –
ああ。実際に私はそのコードに別の問題があります。 '@list'は配列変数のひどい名前です。これはPerlの配列とリストが同じものであるという誤った(しかしうつ病のような)考えを助長します。 –
@DaveCross情報をありがとう。私はここからコードを取った:http://www.perlmonks.org/?node_id=388315 –