Something went wrong. Try again.
Measure the width of text in the terminal and build simple layouts!
Something went wrong. Try again.
558 B · 24 lines
JavaScript
at main
12345678910111213141516171819202122232425const str = "😀".repeat(10)
function fold_graphemes(str, state, fun) { let arr while(null !== (arr = pop_grapheme(str))) { state = fun(arr[0], state) str = arr[1] } return state}
function pop_grapheme(str) { if (str === "") return null; const segmenter = new Intl.Segmenter(); const grapheme = segmenter.segment(str)[Symbol.iterator]().next().value.segment; return [grapheme, str.slice(grapheme.length)]}
let sum = 0for(let i = 0; i < 100000; ++i) { sum += fold_graphemes(str, 0, (a, b) => b + a.length)}console.log(sum)