8 lines
318 B
Groovy
8 lines
318 B
Groovy
import groovy.transform.TailRecursive
|
|
import static java.lang.Math.min
|
|
|
|
@TailRecursive
|
|
String wordWrap(str, w, i=w, b=''<<'', len=str.length()-1, x=0) {
|
|
b.setCharAt(x = (b << str[b.length()..i]).lastIndexOf(' '), '\n' as char)
|
|
b.length()+w >= len ? b << str[i..-1] : wordWrap(str, w, min(x+w+1, len), b, len, 0)
|
|
}
|