JSFiddle - React, Tailwind, and code Playground

by vjeux

JavaScript

Array.prototype.last = function () { return this[this.length - 1]; };

function step(str) {
    return str.split('')
        .reduce(function(list, char) {
            var last = list.last();
            if (last && last.char === char) {
                 last.count++;
            } else {
                list.push({char: char, count: 1});
            }               
            return list;
        }, [])
        .map(function (group) {
            return group.count + group.char;
        })
        .join('');
}

var str = '1';
for (var i = 0; i < 10; ++i) {
    console.log(str);
    str = step(str);
}