Compress ASCII Art
by Daniel Cheung
HTML
<pre><code id="o"></code></pre>
JavaScript
let ascii = `......XXXXXX..XX......XX.....XXXXX....XXXXX..XX...XX......XXXXX....XX..XXXXX....XXXXX...
.....XX......XX.....XX.XX...XX...XX..XX...XX.XX..XX......XX...XX..XX..XX...XX..XX...XX..
....XXXXx...XX....XX...XX..XX...XX..XX...XX..XXXX.......XXXXXX...XX..XX...XX..XX...XX...
...XX......XX....XXXXXXX..XXXXXX...XXXXXX....XX........XX...XX..XX..XXXXXX...XX...XX....
..XX......XXXX..XX...XX..XX.......XX........XX........XXXXXX...XX..XX...XX..XXXXXX......`;
function getCompressedArray(string) {
let lines = string.split("\n");
let returnArray = [];
lines.forEach(line => {
let lineArray = [];
let chars = line.split("");
let rangeStart = 0;
let inRange = false;
for (let i = 0; i < chars.length; i++) {
let char = chars[i];
if (char == "X" && !inRange) {
inRange = true;
rangeStart = i;
} else if (char != "X" && inRange) {
inRange = false;
lineArray.push([rangeStart, i]);
}
}
returnArray.push(lineArray);
});
return JSON.stringify(returnArray, null, " ");
}
document.getElementById("o").innerHTML = getCompressedArray(ascii);