Posted to tcl by mjanssen at Fri Feb 26 07:32:25 GMT 2021view pretty

## Tcl

#%timeit
proc encode {m c} {return "[string length $m]$c"}

proc say n {
    regsub -all -command  {(.)\1*} $n encode
}
set s 1321131112
for {set i 0} {$i  < 16} {incr i} {
    set s [say $s]
}
puts $s

860
36676996 microseconds per iteration



# Python

%time
import re
re_d = re.compile(r'((\d)\2*)')

def replace(match_obj):
    s = match_obj.group(1)
    return str(len(s)) + s[0]

s = '1321131112'
for i in range(16):
    s = re_d.sub(replace,s)
print(len(s))

CPU times: user 4 µs, sys: 1 µs, total: 5 µs
Wall time: 8.82 µs
860