MathGroup Archive 1993

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

Search the Archive

FlatString - Faster + Correction


 
 FASTER
 
 Another fast way - using the HoldAll attribute to enable the evaluation
 to be tuned to the known sructure gives 5 to 11 times speed up.

 
	Attributes[FlatString] = {HoldAll};
	FlatString[s___] :=
		Block[{FlatString,temp},		
			FlatString[
				Flatten[
					Flatten[ temp, Infinity, FlatString ]/.
				 	FlatString -> List
				]/.List -> StringJoin
			]/; 
			Length[(temp={s})] =!=1 || !FreeQ[ temp,FlatString ]
		]
		
Here are some timings, the numbers down the left give the 
depth of the FlatString nesting. HS is the RobertoSierra)s 
modification of Jason Harris)s contribution, HSH is my further 
modification.

     HS        HSH
      
1    0.23333   0.05

2    0.48333   0.05

3    0.71667   0.083333

4    0.98333   0.1

5    1.2167    0.13333

6    1.4667    0.15

7    1.7167    0.16667

8    1.9833    0.18333

9    2.25      0.23333

10   2.5       0.26667

CORRECTION

Roberto found that my previous posting gave some very nasty loops. 
Changing Head[temp] =!=String to MemberQ[temp, _FlatString] 
will, I hope, correct this.




Allan Hayes
hay at leicester.ac.uk


  • Prev by Date: finaincial analysis?
  • Next by Date: Aborts
  • Previous by thread: finaincial analysis?
  • Next by thread: Aborts