Re: the simplest way ...?
- To: mathgroup at smc.vnet.net
 - Subject: [mg16490] Re: [mg16413] the simplest way ...?
 - From: David Withoff <withoff>
 - Date: Tue, 16 Mar 1999 03:59:44 -0500
 - Sender: owner-wri-mathgroup at wolfram.com
 
> Hello,
> 
> I have two (basic) questions with lists, each time to avoid the Length
> function.
> 
> 1) For example, how to write a function that will go thru the elements of
> integers list,
> and will return False as soon as an odd number is found, without the use of
> the Length function?
> 
> With Length it is easy, but not so clean ...
> f[l_]:= Block[{k},For[k=1,k<=Length[l],k++,If[OddQ[l[[k]]],Return[True]]];
> False];
f[l_] := Catch[Scan[If[OddQ[#], Throw[True]] &, l]; False]
or
f[l_] := (Scan[If[OddQ[#], Return[Return[True]]] &, l]; False)
> 2) Is it possible to write the following function without Length?
> 
> l={1,2,3};
> Table[ReplacePart[l,l[[i]]-1,i],{i,1,Length[l]}]
> {{0,2,3},{1,1,3},{1,2,2}}
MapIndexed[ReplacePart[l, l[[#2]][[1]] - 1, #2] &, l]
or
Map[l &, l] - DiagonalMatrix[Map[1 &, l]]
> More generally, is there a way to write something like:
> (for x in l ... collect (f x) ) , and the collection of the (f x) are
> returned in a list?
The Map function does this.
> I don't see how to write a Lisp style dolist function in Mathematica
> without the Length!
>
> Hope that the questions make sens ...
> 
> Thank you very much for your help.
> 
> antoine.zahnd at iprolink.ch
Dave Withoff
Wolfram Research