fork(2) download
  1. ; reverse string ignoring special characters
  2.  
  3. (define (string-reverse! str)
  4. (let loop ((lo 0) (hi (- (string-length str) 1)))
  5. (cond ((<= hi lo) str)
  6. (else (let ((t (string-ref str lo)))
  7. (string-set! str lo (string-ref str hi))
  8. (string-set! str hi t)
  9. (loop (+ lo 1) (- hi 1)))))))
  10.  
  11. (display (string-reverse! "a!b3c")) (newline)
  12.  
  13. (define (string-reverse! str)
  14. (let loop ((lo 0) (hi (- (string-length str) 1)))
  15. (cond ((<= hi lo) str)
  16. ((not (char-alphabetic? (string-ref str lo)))
  17. (loop (+ lo 1) hi))
  18. ((not (char-alphabetic? (string-ref str hi)))
  19. (loop lo (- hi 1)))
  20. (else (let ((t (string-ref str lo)))
  21. (string-set! str lo (string-ref str hi))
  22. (string-set! str hi t)
  23. (loop (+ lo 1) (- hi 1)))))))
  24.  
  25. (display (string-reverse! "a!b3c")) (newline)
Success #stdin #stdout 0s 7264KB
stdin
Standard input is empty
stdout
c3b!a
c!b3a