Re: Dont Understand
- To: mathgroup at smc.vnet.net
- Subject: [mg15895] Re: Dont Understand
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Wed, 17 Feb 1999 23:33:41 -0500
- References: <7a2bm8$1ts@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Don McKenzie Paul wrote in message <7a2bm8$1ts at smc.vnet.net>...
>
>I'm not an expert in Mathematica and would appreciate comments on why
>init1 returns a list with all zeros replaced by -1, but init does not.
>Its probably very simple but its confused me.
>
>Don
>
>init[n_Integer]:=Module[
> {s=Table[Random[Integer],{n n}]},
> s/.{0->-1};
> Partition[s,n]
> ]
>
>init1[n_Integer]:=Module[
> {s=Table[Random[Integer],{n n}]},
> s/.{0->-1}
> ]
>
>
>--
>
>Prof. Don McKenzie Paul tel. (1203) 523603 Department of
>Physics fax. (1203) 692016 University of Warwick
>email phrje at csv.warwick.ac.uk COVENTRY CV4 7AL
>UK
>
>
Don:
The problem has nothing to do with Module - which is in fact not needed.
A) With
>init[n_Integer]:=Module[
> {s=Table[Random[Integer],{n n}]},
> s/.{0->-1};
> Partition[s,n]
> ]
s/.{0->-1} give s with 0 replaced by -1, but the value of the symbol s is
unchange and this unchange value is used in Partition[s,n}
Two ways out:
1) to illustrate the problem
init[n_Integer]:=Module[
{s=Table[Random[Integer],{n n}]},
s = s/.{0->-1};
Partition[s,n]
]
2) better Mathematic (functional) code
init[n_Integer]:= Partition[Table[Random[Integer],{n n}]/. {0->-1}, n]
3) Avoiding Partition
init[n_Integer]:= Table[Random[Integer],{n},{n}]/. 0->-1
B) With
init1[n_Integer]:=Module[
{s=Table[Random[Integer],{n n}]},
s/.{0->-1}
]
s is operated on to give the result.
We get the same result with
init1[n_Integer]:= Table[Random[Integer],{n n}]/.{0->-1}
Allan
---------------------
Allan Hayes
Mathematica Training and Consulting
Leicester, UK
www.haystack.demon.co.uk
hay at haystack.demon.co.uk
Voice: +44 (0)116 271 4198
Fax: +44 (0)870 164 0565