[Date Index]
[Thread Index]
[Author Index]
Re: doing things on a procedural way and doing them on a functional way
*To*: mathgroup at smc.vnet.net
*Subject*: [mg46981] Re: doing things on a procedural way and doing them on a functional way
*From*: DrBob <drbob at bigfoot.com>
*Date*: Thu, 18 Mar 2004 01:25:17 -0500 (EST)
*Sender*: owner-wri-mathgroup at wolfram.com
This seems to work:
Clear[done, combo1, combo2, raw, combos]
combo1 = {raw[a_, b_] :> done[a, b], a_raw :> combo2[a] /@
Range[Length@a - 1]};
combo2[raw[a___, b_, c_, d___]][
n_Integer] /; Length@{a, b} == n := raw[a, done[b, c], d]
combos[a_List, op_] := Union@(Flatten[raw @@ a //. combo1] /. done -> op)
Some tests:
combos[{a, b}, Power]
combos[{a, b, c}, Power]
combos[{a, b, c, d}, Power]
combos[{a, b, c, d, e}, Power]
combos[{a, b, c, d, e, f}, Plus]
combos[{a, b, c, d, e, f}, List]
It seems a tad too involved, but I don't see a better way so far.
Bobby
Pedrito <pedrito6 at softhome.net> wrote in message
news:<c38uvb$g39$1 at smc.vnet.net>...
> Hello Mathgroup!
>
>
> I wanted to figure how to obtain all the possible combinations of five
> numbers and four non-conmutative non-asociative operations.
>
> This means:
> if we have numbers: a b c d e
> and the non-conmutative non-asociative operation: ?
>
> it's possible to make the following (different) expressions:
> a ? (b ? (c ? (d ? e)))
> a ? (b ? (c ? d) ? e))
> ...
> (a ? b) ? (c ? d) ? e
>
>
> For practical reasons you can think that the operation ? is ^ (power).
>
>
>
> I have already obtained (by hand) all the possible combinations:
> lst={{a, {b, {c, {d, e}}}}, {a, {b, {{c, d}, e}}}, {a, {{b, c}, {d,
> e}}}, {a, {{b, {c, d}}, e}}, {a, {{{b, c}, d}, e}}, {{a, b}, {c, {d,
> e}}},
> {{a, b}, {{c, d}, e}}, {{a, {b, c}}, {d, e}}, {{{a, b}, c}, {d, e}}, {{a,
> {b, {c, d}}}, e}, {{a, {{b, c}, d}}, e}, {{{a, b}, {c, d}}, e}, {{{a, {b,
> c}}, d}, e}, {{{{a, b}, c}, d}, e}}
>
> And then I transformed them into an expressions by:
> Module[{x = 1}, ToExpression[
> StringReplace[
> ToString[#1], {"{" -> "(", "}" -> ")", "," :>
> {"^", "^", "^", "^"}\[LeftDoubleBracket]
> x++\[RightDoubleBracket]}]]] & /@ lst
>
>
> If you can help me to do it better...
>
>
> Pedro L.
Prev by Date:
**Re: Physical Constants package**
Next by Date:
**Re: Exact real solutions of cubic equations**
Previous by thread:
**Re: Re: doing things on a procedural way and doing them on a functional way**
Next by thread:
**RE: doing things on a procedural way and doing them on a functional way**
| |