2009-07-17 12 views
14

He estado trabajando en problemas en Project Euler, y algunas de las soluciones que otras personas han publicado utilizan un triple al firmar, es decir, '@@@'. En el navegador de ayuda para v7, encuentro una entrada para @@ (que dice que es la versión infija de 'Aplicar') pero ninguna para @@@. Qué significa eso?En Mathematica, ¿qué significa @@@?

EDIT: He aquí un ejemplo, que creo que me pueden enviar sin violar el espíritu del Proyecto Euler:

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

Respuesta

20

Como han señalado otros, @@@ es, técnicamente, abreviatura de Apply con un tercer argumento opcional, como se explica en profundidad en el documentation for Apply.

Pero me gusta pensar en

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

como forma abreviada de

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

En otras palabras, tener una función pura (abreviatura: ...#...&) que hace un Apply (abreviatura: @@) a una lista de argumentos, y Map (taquigrafía: /@) que sobre una lista de tales listas de argumentos. El resultado es

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

¡Tuve que hacerlo de varias maneras antes de que tuviera sentido! Pero tienes razón, parece ser la interpretación más natural. – Eric