| a b result memo index |
a := 3.
b := 14.
result := '0.'.
memo := OrderedCollection new.
[a isZero] whileFalse: [
memo add: a.
a := a * 10.
result := result, (a // b) printString.
a := a \\ b.
(index := memo indexOf: a) > 0
ifTrue: [^(result first: index + 1), '{', (result allButFirst: index + 1), '}']].
^result
"=> '0.2{142857}' "
sumim
#214()
[
Smalltalk
]
Rating0/0=0.00
| a b result memo index | a := 3. b := 14. result := '0.'. memo := OrderedCollection new. [a isZero] whileFalse: [ memo add: a. a := a * 10. result := result, (a // b) printString. a := a \\ b. (index := memo indexOf: a) > 0 ifTrue: [^(result first: index + 1), '{', (result allButFirst: index + 1), '}']]. ^result "=> '0.2{142857}' "Rating0/0=0.00-0+
[ reply ]