2009-07-17 22 views
14

Pracuję nad problemami pod numerem Project Euler, a niektóre z rozwiązań, które zostały opublikowane przez inne osoby, używają potrójnego znaku, tj. "@@@". W przeglądarce pomocy dla wersji 7 znajduje się pozycja dla @@ (która mówi, że jest to wersja "Zastosuj"), ale żadna dla @@@. Co to znaczy?W języku Mathematica, co oznacza @@@?

EDIT: Oto przykład, który myślę, że mogę pisać bez naruszania ducha Project Euler:

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

Odpowiedz

20

Jak zauważyli inni, @@@ jest, technicznie, skrótem dla Apply z opcjonalnym trzecim argumentem, jak wyjaśniono w głębi dokumentu documentation for Apply.

Ale lubię myśleć o

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

jako skrót dla

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

Innymi słowy, ma czystą funkcję (skrótowej: ...#...&), które robi się Apply (skrót: @@) do lista argumentów i Map (stenografia: /@) na liście takich list argumentów. Wynik:

{f[a,b], f[c,d], f[e,i]} 
+0

Musiałem uruchomić to na kilka sposobów, zanim miało to sens! Ale masz rację, to wydaje się być najbardziej naturalną interpretacją. – Eric