16/05/02 11:11:18.30 ybUtGNCd.net
>>479 Squeak/Pharo Smalltalk
| fn |
fn := [:x |
| factFloat factStr n nines |
n := 0.
factFloat := 1.0.
nines := String new: x withAll: $9.
[ n := n + 1.
factFloat := factFloat * n.
factFloat := factFloat / (10 raisedTo: factFloat log asInteger).
factStr := factFloat asString copyWithout: $. .
factStr first = $0 ifTrue: [factStr := factStr allButFirst].
factStr size >= x and: [(factStr first: x) = nines]
] whileFalse.
{#x->x. #n->n. factStr truncateWithElipsisTo: 13}
].
fn value: 1. "=> {#x->1 . #n->97 . '9916779348...'} "
fn value: 2. "=> {#x->2 . #n->97 . '9916779348...'}"
fn value: 3. "=> {#x->3 . #n->262 . '9996811196...'} "
fn value: 4. "=> {#x->4 . #n->17411 . '9999777368...'} "
fn value: 5. "=> {#x->5 . #n->583104 . '9999906872...'} "
fn value: 6. "=> {#x->6 . #n->2064173 . '9999993058...'} "