Re: A list of numbers without "73"

• To: mathgroup at smc.vnet.net
• Subject: [mg63010] Re: [mg63005] A list of numbers without "73"
• From: "Carl K. Woll" <carlw at wolfram.com>
• Date: Sun, 11 Dec 2005 04:56:32 -0500 (EST)
• References: <200512101103.GAA29418@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Thomas Schmelzer wrote:
> 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]]
>

A simpler approach is to use Pick:

S[i_] := Module[{rng = Range[10^(i - 1), 10^i - 1]},
Pick[rng, StringMatchQ[ToString /@ rng, "*73*"], False]]

This version seems to be about 2.5 times faster. Most of the time is
taken up in using ToString to convert the numbers into strings.

Carl Woll
Wolfram Research

>
>
> Best
>
> Thomas
>
>
>

```

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