MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: efficiently testing a list

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122539] Re: efficiently testing a list
  • From: Ray Koopman <koopman at sfu.ca>
  • Date: Mon, 31 Oct 2011 06:52:13 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j8j5o2$fab$1@smc.vnet.net>

On Oct 30, 2:34 am, zb <zaeem.b... at gmail.com> wrote:
> Consider the list of pairs:
>
> List = Table[ {a[i],b[i]} , {i,1,N} ].
>
> or
>
> List = { {a[1],b[1]} , {a[2],b[2]} , {a[3],b[3]} , ... ,
> {a[N],b[N]} },
>
> and a given function f[a].
>
> What is the quickest way of testing if all elements of List satisfy
> f[a[i]] < b[i].

"List" and "N" are protected symbols in Mathematica. Use names
that start with lowercase letters, such as "abList" and "n".

The answer to your question depends on how fast your function f is
and how many terms in abList must be checked.

The faster f is, and the more likely it is that f[a[i]] < b[i]
will be true for all i, then the more likely it is that

  And @@ ( f@#1 < #2 & @@@ abList )

will be satisfactory (though there may be faster ways in this case,
especially if f is Listable).

On the other hand, the slower f is, and the more likely it is that
f[a[i]] < b[i] will be false for some small value of i, then the
more you will want something like David Bevan's mapAndF from
https://groups.google.com/group/comp.soft-sys.math.mathematica/browse_frm/thread/7196783d6bf28c7e

  If[Scan[If[f@#[[1]]>=#[[2]],Return@False]&,abList],Null,False,True]

The downside of that is that it is very slow if all the terms in
abList must be checked.

A compromise procedure would be something like the suggestions of
Carl Woll and Chris Chiasson in
https://groups.google.com/group/comp.soft-sys.math.mathematica/browse_frm/thread/966d232547bae196

  f@#1 < #2 & @@@ And @@ abList



  • Prev by Date: Re: Simple question about inverse of a function
  • Next by Date: Re: How to generate the final result of variable definitions in
  • Previous by thread: Re: efficiently testing a list
  • Next by thread: Simple question about inverse of a function