Search All of the Math Forum:

Views expressed in these public forums are not endorsed by NCTM or The Math Forum.

Notice: We are no longer accepting new posts, but the forums will continue to be readable.

Topic: List manipulation question - 2013
Replies: 5   Last Post: Feb 1, 2013 1:15 AM

 Messages: [ Previous | Next ]
 Lea Rebanks Posts: 5 Registered: 12/26/11
Re: List manipulation question - 2013
Posted: Feb 1, 2013 1:15 AM

Hi Bob,

This is excellent, really impressive & works a dream.

However, I did notice that a certain number of combinations of inputs for a
& b do not provide a result at all, which was a surprise.

For example :- f[19, 8, 6] does not provide a result or any multiple of 8
for b value.
Is this TRUE that certain combinations of integers here should not provide
a result?

Many thanks for your help. Really appreciated.
Best regards,
Lea...

On Fri, Feb 1, 2013 at 9:47 AM, Bob Hanlon <hanlonr357@gmail.com> wrote:

> Clear[f]
>
> f[a_, b_, outputLen_: (-1), c_: 2000] :=
> Module[{list1, list2},
> list1 = Table[24 + (a*n1), {n1, c}];
> list2 = Select[list1, IntegerQ[#/24] &];
> list3 = Last /@
> (Select[
> Solve[{12 + (b*n2) == #,
> Element[n2, Integers]}, n2] & /@
> list2,
> Length[#] > 0 &] // Flatten);
> If[outputLen == -1,
> list3,
> list3[[1 ;; Min[outputLen, Length[list3]]]]]];
>
> f[15, 3, 6]
>
> {44, 84, 124, 164, 204, 244}
>
> f[13, 7, 6]
>
> {180, 492, 804, 1116, 1428, 1740}
>
>
> Bob Hanlon
>
>
> On Thu, Jan 31, 2013 at 2:56 AM, Lea Rebanks <lrebanks@gmail.com> wrote:

> > Hi Bob,
> >
> > Your coding for lists 1,2,3 is exactly what I want.
> > And your statement - "Apparently you want list2 to consist of the

> members of
> > list1 that are
> > integer multiples of 24 rather than the integers in list1/24." is

> correct.
> >
> > But I tried changing the input values from the example given
> > From 24 + (15*n1) to 24 + (13*n1) .....15 to 13
> > From 12 + (3*n2) to 12 + (7*n2) .....3 to 7
> > This immediately caused me error messages, some of which I was able to
> > correct by expanding the list range of the Take function.
> > But I was unable to calculate the last part for list3 :-
> >
> > list1 = Table[24 + (13*n1), {n1, 2000}];
> > list2 = Take[Select[list1, IntegerQ[#/24] &], 40];
> > list3 = n2 /.
> > Solve[{12 + (7*n2) == #, Element[n2, Integers]}, n2][[1]] & /@
> > list2
> >
> > Hopefully the result should look something like :-
> > {1272, 3456, 5640, 7824, 10008, 12192}
> > These values above being the first & then following repetitions

> thereafter
> > of equal points of repetitions of n1 & n2 in list2 & list3 respectively.
> >
> > Please could you rewrite the enclosed code so that :-
> > (i) The above new values work & provide a similar result to that which I
> > have shown.
> > (ii) Also, if possible, allow in the rewrite the flexibility within the
> > function to accept much larger & challenging input values for list1 & 2.
> > This would include a domain allowance relative to the size of input

> values
> > as in this case its values are 13 & 7, but they could be integer values
> of
> > 127 & 56 for list1 & list3 respectively.
> > (Note higher value first.) Actually I will probably want to use much much
> > higher values later.
> > Ideally I am only looking for about 6 elements in the final answer list

> like
> > - {1272, 3456, 5640, 7824, 10008, 12192}
> >
> > Many thanks for your help & attention.
> > Really appreciated.
> > Best regards,
> > Lea...
> >
> >
> >
> >
> > On Thu, Jan 31, 2013 at 11:05 AM, Bob Hanlon <hanlonr357@gmail.com>

> wrote:
> >>
> >> list1 = Table[24 + (15*n1), {n1, 2000}];
> >>
> >> Take[Select[list1/24, IntegerQ], 9]
> >>
> >> {6, 11, 16, 21, 26, 31, 36, 41, 46}
> >>
> >> Take[Select[list1, IntegerQ[#/24] &], 9]
> >>
> >> {144, 264, 384, 504, 624, 744, 864, 984, 1104}
> >>
> >> Apparently you want list2 to consist of the members of list1 that are
> >> integer multiples of 24 rather than the integers in list1/24.
> >>
> >> list2 = Select[list1, IntegerQ[#/24] &];
> >>
> >> list3 = n2 /. Solve[
> >> {12 + (3*n2) == #, Element[n2, Integers]},
> >> n2][[1]] & /@ list2;
> >>
> >> Length[list2] == Length[list3]
> >>
> >> True
> >>
> >>
> >> Bob Hanlon
> >>
> >> Consequently, there is an integer n2 for every element of list2.
> >>
> >> On Wed, Jan 30, 2013 at 4:26 AM, Lea Rebanks <lrebanks@gmail.com>

> wrote:
> >> >
> >> > Dear All,
> >> >
> >> > I have the follow problem with the combination of a few lists.
> >> > I shall outline the problem or what I am trying to do.
> >> > I know that to solve this problem requires a number of processes, but

> I
> >> > am
> >> > not sure how to setup the coding to achieve my desired result.
> >> > Please could someone show me the coding for this problem.
> >> >
> >> > The problem:-
> >> > 1 - I have a list1 created from 24+(15*n1) All n1 are integers
> >> > 1,2,3,4.....to a large number of integers.
> >> > 2 - I want to divide the list1 by 24 and create another list2 with

> only
> >> > the
> >> > integer results in list2.
> >> > Table[24 + 15*i, {i, 100}]/24 ... so that integer results in
> >> > list2
> >> > = { 144, 264, 384, 504, 624, 744, 864, 984, 1104 }
> >> > 3 - I have another list3 created from 12+(3*n2) All n2 are integers
> >> > 1,2,3,4.....to a large number of integers.
> >> > 4 - With list3 I want to find :-
> >> > (i) The integer number of n2 that either equates 12+(3*n2) = 144

> or
> >> > the next FIRST available number in list2 that meets this equality.
> >> > then also (ii)The integer number(s) of n2 that equates 12+(3*n2) =
> >> > 24+(15*n1) after the first equal value for say 6 repetitions.
> >> > then also (iii)The integer number(s) of n1 that equates

> 12+(3*n2) =
> >> > 24+(15*n1) after the first equal value for say 6 repetitions.
> >> >
> >> > The above example is quite simple, but I am hoping to setup the coding
> >> > to
> >> > work with other integer values instead of 3 & 15 which will present

> more
> >> > of
> >> > a challenge.
> >> >
> >> > Any help or advice greatly appreciated.
> >> > Best regards,
> >> > Lea...
> >> >
> >> >

> >>
> >
>
>

Date Subject Author
1/30/13 Chris Arthur
1/30/13 Bob Hanlon
1/31/13 Lea Rebanks
1/31/13 Bob Hanlon
2/1/13 Lea Rebanks