let base = [[[-200, 0], [200, 0]]]; const doc = [...Array(12)].reduce((doc_a, _, lvl) => { const rg = step => `0${(80 + (lvl - 2) * step).toString(16)}`.slice(-2); return doc_a + base.splice(0).reduce((ga, [a, b]) => { const v = [b[0] - a[0], b[1] - a[1]]; const [c, d, w] = [a, b, v].map(p => [p[0] + v[1], p[1] - v[0]]); const e = [c[0] + w[0] / 2, c[1] + w[1] / 2]; base.push([c, e], [e, d]); return ga + '\n' + ``; }, ``) + '\n\n'; }, '\n') + ''; const [x, y] = base.flat().reduce((a, p) => a.map((xy, i) => Math.min(xy, p[i]))); const svg = doc.replace(' tag of an html document // - display svg in the browser window document.documentElement.innerHTML = svg, ''; }