Re: Flat Strings
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: Flat Strings
- From: Roberto Sierra <73557.2101 at compuserve.com>
- Date: 01 Jun 93 21:06:53 EDT
> I took a quick look at your problem and this is a quick and dirty solution
> I bashed out in a minute or so, but it works.
> Here it is.
>
> FlatString[a_,b__]:=Module[{temp},
> temp={a,b}/.FlatString->StringJoin;
> temp[[0]]=StringJoin;
> FlatString[temp]]
Great idea. I tried it out and it showed about 10% speed improvement
over my best attempt. I refined your solution a little bit further
and came up with the following, which is an additional 10-15% faster.
Eliminating the Module block is important, since Module would cause
a large number of internal 'temp$xxxx' symbols to be generated and
slows everything down a little. [This version also flattens Lists.]
FlatString[a_,b__] :=
FlatString[{a,b} /. FlatString->StringJoin /. List->StringJoin];
Thanks for the excellent suggestion....
P.S.
You might find it easier and cleaner to use 'Apply' than saying
temp[[0]] = StringJoin,
as in
Apply[StringJoin,temp] -or- StringJoin @@ temp
So far as I know, these will all evaluate to the same result.
\\|//
- -
o o
J roberto sierra
O tempered microdesigns
\_/ 73557.2101 at compuserve.com