Re: Elegant syntax for multiple conditional assignment?
- To: mathgroup at smc.vnet.net
- Subject: [mg54426] Re: [mg54337] Elegant syntax for multiple conditional assignment?
- From: Scott Hemphill <hemphill at hemphills.net>
- Date: Sun, 20 Feb 2005 00:09:40 -0500 (EST)
- Reply-to: hemphill at alumni.caltech.edu
- Sender: owner-wri-mathgroup at wolfram.com
On Sat, 19 Feb 2005, DrBob wrote:
> (inputs)
> old = Array[o, {4}]
> new = Array[n, {4}]
> cond = Array[1 == Random[Integer, {0, 1}] & , {4}]
>
> (outputs)
> {o[1], o[2], o[3], o[4]}
> {n[1], n[2], n[3], n[4]}
> {True, False, True, False}
>
> (input)
> Thread[If[cond, Evaluate[new], Evaluate[old]]]
>
> (result)
> {n[1], o[2], n[3], o[4]}
>
> or:
>
> old = {a, c, x, y} = Array[o, {4}]
> new = {a, c, x, y} = old^2
> cond = Array[1 == Random[Integer, {0, 1}] &, {4}]
>
> {o[1], o[2], o[3], o[4]}
> {o[1]^2, o[2]^2, o[3]^2, o[4]^2}
> {True, False, False, False}
>
> {a, c, x, y} = Thread[If[cond, Evaluate@new, Evaluate@old]]
>
> {o[1]^2, o[2], o[3], o[4]}
This isn't quite what I had in mind. What I have is more like:
n=100
old={Array[olda,{n}], Array[oldc,{n}], Array[oldx,{n}], Array[oldy,{n}]}
new={Array[newa,{n}], Array[newc,{n}], Array[newx,{n}], Array[newy,{n}]}
cond=Table[Random[Integer]==1,{n}]
Now "a" should be assigned a list whose k'th element is picked from either
olda[[k]] or newa[[k]] depending on cond[[k]], and similarly for c, x, and
y.
Thanks for your help!
Scott
--
Scott Hemphill hemphill at alumni.caltech.edu
"This isn't flying. This is falling, with style." -- Buzz Lightyear