2.5 KiB
2.5 KiB
id | title | challengeType | forumTopicId |
---|---|---|---|
5e6dd14797f5ce267c2f19d0 | Look-and-say sequence | 5 | 385277 |
Description
- Take a decimal number
- Look at the number, visually grouping consecutive runs of the same digit.
- Say the number, from left to right, group by group; as how many of that digit there are - followed by the digit grouped.
- Starting with the number 1, you have one 1 which produces 11
- Starting with 11, you have two 1's. I.E.: 21
- Starting with 21, you have one 2, then one 1. I.E.: (12)(11) which becomes 1211
- Starting with 1211, you have one 1, one 2, then two 1's. I.E.: (11)(12)(21) which becomes 111221
Instructions
Tests
tests:
- text: <code>lookAndSay</code> should be a function.
testString: assert(typeof lookAndSay == 'function');
- text: <code>lookAndSay("1")</code> should return a string.
testString: assert(typeof lookAndSay("1") == 'string');
- text: <code>lookAndSay("1")</code> should return <code>"11"</code>.
testString: assert.equal(lookAndSay("1"), "11");
- text: <code>lookAndSay("11")</code> should return <code>"21"</code>.
testString: assert.equal(lookAndSay("11"), "21");
- text: <code>lookAndSay("21")</code> should return <code>"1211"</code>.
testString: assert.equal(lookAndSay("21"), "1211");
- text: <code>lookAndSay("1211")</code> should return <code>"111221"</code>.
testString: assert.equal(lookAndSay("1211"), "111221");
- text: <code>lookAndSay("3542")</code> should return <code>"13151412"</code>.
testString: assert.equal(lookAndSay("3542"), "13151412");
Challenge Seed
function lookAndSay(str) {
}
Solution
function lookAndSay(str) {
return str.replace(/(.)\1*/g, function(seq, p1) {
return seq.length.toString() + p1;
});
}