; abbreviated sentences
(define (abbrev sentence)
(with-output-to-string (lambda ()
(define (word head len prev)
(display head)
(when (positive? len) (display (number->string len)))
(when prev (display prev)))
(let loop ((cs (string->list sentence))
(head #f) (len -1) (prev #f))
(cond ((null? cs) ; end of sentence
(when head (word head len prev)))
((char-alphabetic? (car cs)) ; in a word
(if head
(loop (cdr cs) head (+ len 1) (car cs))
(loop (cdr cs) (car cs) -1 #f)))
(else ; not in a word
(when head (word head len prev))
(display (car cs))
(loop (cdr cs) #f 0 #f)))))))
(display (abbrev "1Texas2Step3"))
OyBhYmJyZXZpYXRlZCBzZW50ZW5jZXMKCihkZWZpbmUgKGFiYnJldiBzZW50ZW5jZSkKICAod2l0aC1vdXRwdXQtdG8tc3RyaW5nIChsYW1iZGEgKCkKICAgIChkZWZpbmUgKHdvcmQgaGVhZCBsZW4gcHJldikKICAgICAgKGRpc3BsYXkgaGVhZCkKICAgICAgKHdoZW4gKHBvc2l0aXZlPyBsZW4pIChkaXNwbGF5IChudW1iZXItPnN0cmluZyBsZW4pKSkKICAgICAgKHdoZW4gcHJldiAoZGlzcGxheSBwcmV2KSkpCiAgICAobGV0IGxvb3AgKChjcyAoc3RyaW5nLT5saXN0IHNlbnRlbmNlKSkKICAgICAgICAgICAgICAgKGhlYWQgI2YpIChsZW4gLTEpIChwcmV2ICNmKSkKICAgICAgKGNvbmQgKChudWxsPyBjcykgOyBlbmQgb2Ygc2VudGVuY2UKICAgICAgICAgICAgICAod2hlbiBoZWFkICh3b3JkIGhlYWQgbGVuIHByZXYpKSkKICAgICAgICAgICAgKChjaGFyLWFscGhhYmV0aWM/IChjYXIgY3MpKSA7IGluIGEgd29yZAogICAgICAgICAgICAgIChpZiBoZWFkCiAgICAgICAgICAgICAgICAgIChsb29wIChjZHIgY3MpIGhlYWQgKCsgbGVuIDEpIChjYXIgY3MpKQogICAgICAgICAgICAgICAgICAobG9vcCAoY2RyIGNzKSAoY2FyIGNzKSAtMSAjZikpKQogICAgICAgICAgICAoZWxzZSA7IG5vdCBpbiBhIHdvcmQKICAgICAgICAgICAgICAod2hlbiBoZWFkICh3b3JkIGhlYWQgbGVuIHByZXYpKQogICAgICAgICAgICAgIChkaXNwbGF5IChjYXIgY3MpKQogICAgICAgICAgICAgIChsb29wIChjZHIgY3MpICNmIDAgI2YpKSkpKSkpCgooZGlzcGxheSAoYWJicmV2ICIxVGV4YXMyU3RlcDMiKSk=