>>670 Squeak Smalltalk

| N M epsilon e x max |
N := 10000.
M := 3.
epsilon := 10 raisedTo: N negated.
e := 2 asScaledDecimal: N.
x := 1.
[ | delta | e := e + (delta := 1 / (x := x + 1) factorial). delta < epsilon] whileFalse.
e := e printString.
e := e copyFrom: 3 to: e size - 1 - N printString size.
max := 0.
($0 to: $9) asDigitsToPower: M do: [:digits |
 | loc |
 loc := e indexOfSubCollection: digits.
 loc = 0 ifTrue: [^'not found ', (digits as: String), '. try larger N'].
 loc > max ifTrue: [max := loc]
].
^max "=> 8089 "