シークレットサンタへの回答を準備しているときに、 「有効な」順列を生成しているときに、リストにゼロが含まれているかどうかを確認する必要がありました。Mathematica 7でこれを行う最も速い方法は、非負の整数の短いリストに重点を置いて、何であるか疑問に思っています。
使用Min[list] === 0
は私が見つけた最速で、MemberQ
またはよりも高速ですが、以下の操作FreeQ
と同等のより高速な方法があることを望んでいます。BitXor
r = Range@9;
p = Permutations@r;
BitXor[r, #] & /@ p; // Timing
0 === Min[BitXor[r, #]] & /@ p; // Timing
{0.062、Null}
{0.452、Null}