Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: A list of numbers without "73"

  • To: mathgroup at smc.vnet.net
  • Subject: [mg63027] Re: A list of numbers without "73"
  • From: Peter Pein <petsie at dordos.net>
  • Date: Sun, 11 Dec 2005 04:56:52 -0500 (EST)
  • References: <dnee1r$1ep$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Thomas Schmelzer schrieb:
> Experts,
> 
> S(i) should be a list of positive integers without the substring "73".
> 
> My code seems to be very inefficient. I multiply all numbers with 0 if they 
> contain "73", sort the new list, make the union (remove double elements) and 
> delete the first element. Therefore it is necessary to use an if statement 
> in order not to delete the first element of the numbers 1-9. Any more 
> sophisticated ideas?
> 
> L := Table[k, {k, 1, 9}]
> 
> S[i_] := S[i] =
> If[i == 1, L,
> Delete[Union[
> Table[k*(1 - Boole[StringMatchQ[ToString[k], "*73*"]]), {k,
> 10^(i - 1), 10^i - 1}]], 1]]
> 
> 
> 
> Best
> 
> Thomas
> 
> 
> 
> 
Hi Thomas,

it seems to be more efficient to construct only numbers without the 
sequence 73 instead of testing already existing ones:

s2[1] = Range[1, 9];
s2[i_] := Flatten[(10*#1 + If[Mod[#1, 10] == 7,
           {0, 1, 2, 4, 5, 6, 7, 8, 9},
            Range[0, 9]] & ) /@ s2[i - 1]]

Timing[Length[#1[6]]]& /@  {S, s2}
--> {{7.765*Second, 854569}, {0.953*Second, 854569}}

Ceers,
   Peter


  • Prev by Date: Re: Assign a value to a variable
  • Next by Date: Re: A list of numbers without "73"
  • Previous by thread: Re: A list of numbers without "73"
  • Next by thread: Re: A list of numbers without "73"