       Re: How to simplify this code with variable number of

• To: mathgroup at smc.vnet.net
• Subject: [mg124292] Re: How to simplify this code with variable number of
• From: James Stein <mathgroup at stein.org>
• Date: Mon, 16 Jan 2012 17:06:59 -0500 (EST)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <201201150951.EAA19677@smc.vnet.net> <CAKStUKpK54q6uiUBLmMO+w3KJu5dEXCxveqDfrca2AGzS=i26w@mail.gmail.com>

```Just noticed a typo in my code; second line should be
a = Table[0, {k, 1, g+1}];

On Sun, Jan 15, 2012 at 6:14 PM, James Stein <mathgroup at stein.org> wrote:

> therefore incorrect);-- it seems to me that loop variables are being
> conflated with initial values of loop variables. For example, by the time
> your inner computation is performed for the first time, all elements of the
> array a, except the first, will have been "initialized" based on the
>  initial value of a.  This is overly complex: you should initialize
> ALL the values of a before entering the outer loop, and use simple
> variables, not members of vectors, for you loop variables.
>
> Nevertheless, I think something like the following replicates in
> Mathematica approximately what you have written in pseudo code, and may be
> of some help to you.
>
>  looper[g_] := Module[{a, computations, f},
>    a = Table[0, {k, 1, g} + 1];
>    (*Note: your a is Mathematica's a[] *)
>    a[] := initializeA0[];(* or all of a?? *)
>    computations = initializeComputations[];
>    f[i_] := If[i-1 <= g,
>      For[a[[i]] = a[[i - 1]] + 1, a[[i]] <= 2 i - 1, ++a[[i]],
>        computations = f[i + 1]
>        ];
>      ];
>    Return[f];
>    ];
>
>
>
> On Sun, Jan 15, 2012 at 1:51 AM, Rex <aoirex at gmail.com> wrote:
>
>> Considering an array a[i], i=0,1,...,g, where g could be any given
>> number, and a=1.
>>
>>    for a=a+1 to 1 do
>>        for a=a+1 to 3 do
>>           for a=a+1 to 5 do
>>             ......
>>              for a[g]=a[g-1]+1 to 2g-1 do
>>                ###some computations here###
>>
>> The problem is that everytime we change the value of g, we need to
>> modify the code, those loops above. So this is not a good code.
>>
>> Any advice would be greatly appreciated.
>>
>>
>

</p><p><font face="&#39;courier new&#39;, monospace">looper[g_] := Modu=
le[{a, computations, f},<br>
a = Table[0, {k, 1, g} + 1];<br>
(*Note: your a is Mathematica&#39;s a[] *)<br>
a[] := initializeA0[];(* or all of a?? *)<br>
computations = initializeComputations[];<br>
f[i_] := If[i-1 &lt;= g,<br>
For[a[[i]] = a[[i - 1]] + 1, a[[i]] &lt;= 2 i - 1, ++a[[i]],=
<br>
computations = f[i + 1]<br>
];<br>
];<br>
Return[f];<br>
];</font></p>
<p></p></div><div><div class="h5"><div><br><br><div class="gmail_quote"=
>On Sun, Jan 15, 2012 at 1:51 AM, Rex <span dir="ltr">&lt;<a href="mail=
to:aoirex at gmail.com" target="_blank">aoirex at gmail.com</a>&gt;</span> wrot=
e:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1p=
Considering an array a[i], i=0,1,...,g, where g could be any given<br>
number, and a=1.<br>
<br>
for a=a+1 to 1 do<br>
for a=a+1 to 3 do<br>
for a=a+1 to 5 do<br>
......<br>
for a[g]=a[g-1]+1 to 2g-1 do<br>
###some computations here###<br>
<br>
The problem is that everytime we change the value of g, we need to<br>
modify the code, those loops above. So this is not a good code.<br>
<br>
Any advice would be greatly appreciated.<br>
<br>
</blockquote></div><br></div></div></div></div>
</blockquote></div><br>

--0015175cd5ce5edf0104b6a0ed7b--

```

• Prev by Date: Re: How to check whether an infinite set is closed under addition?
• Next by Date: Re: Function return type in Compile
• Previous by thread: Re: How to simplify this code with variable number of
• Next by thread: Re: How to simplify this code with variable number of nesting loops?