16

私はプロジェクトオイラーの問題に取り組んできましたが、他の人が投稿した解決策のいくつかは、トリプルアットマーク、つまり「@@@」を使用しています。v7のヘルプブラウザで、@@のエントリ(「Apply」のインフィックスバージョンであると表示されます)が見つかりましたが、@@@のエントリはありません。どういう意味ですか?

編集:これが例です。プロジェクトオイラーの精神に違反することなく投稿できると思います。

bloc[n_, f_][t_] := {f @@@ #, #~Tr~f} & /@ Join @@ Partition[t, {n, n}, 1];
4

3 に答える 3

24

他の人が指摘しているように@@@、技術的には、のドキュメントでApply深く説明されているように、オプションの3番目の引数の省略形です。Apply

しかし、私は考えるのが好きです

f @@@ {{a,b}, {c,d}, {e,i}}

の省略形として

f @@#& /@ {{a,b} {c,d}, {e,i}}

言い換えると、引数のリストに対して(shorthand :)を実行し、そのような引数のリストのリストに対して(shorthand :)...#...&を実行する純粋関数(shorthand:)を取ります。結果はApply@@Map/@

{f[a,b], f[c,d], f[e,i]}
于 2009-07-17T06:39:45.833 に答える
11

@@@は、レベル1で適用するための短縮形です。

f @@@ {{a, b, c}, {d, e}}

と同等です

Apply[f, {{a, b, c}, {d, e}}, {1}]

参照: http: //reference.wolfram.com/mathematica/ref/Apply.html

スコープとレベルの仕様セクションを拡張する必要がある場合があります。

于 2009-07-17T02:38:20.730 に答える
8

f @@@ exprは、Apply [f、expr、{1}]と同等です。

document.wolfram.com

于 2009-07-17T02:34:15.090 に答える