APL に慣れていると、問題解決のためのアルゴリズムのアイデアが得られることがあります。それを、自分が持っている言語 (たとえば Perl) で再実装します。
そのため、テキスト ファイルを処理して、区切りファイルで使用されているフィールドを示すブール ベクトルを作成しました。これらの使用されているフィールドのインデックスと、使用されているフィールドの名前を出力したいと考えています。APL では、フィールド名のベクトルとフィールド数のイオタに対して圧縮演算子を使用します。
Perl では、次のようにしました。
my @UsedFieldNames = map { $UsedFields[$_] ? $FieldNames[$_] : () } 0 .. $#UsedFields;
と
say join " ", map { $UsedFields[$_] ? $) : () } 0 .. $#UsedFields;
ここ@UsedFields
で、未使用のフィールドは 0、使用済みのフィールドは 1 の配列です。
?:()
圧縮をシミュレートするためにmap with を使用するのはあまり好きではありません- もっと良い方法はありますか?結果を得るためにインデックスをマップするのは本当に好きではありません - それを計算するためのより良い方法はありますか? (最適化の 1 つは、使用されているインデックスを最初に計算してから、
@UsedFieldNames = @FieldNames[@UsedIndexes];