--- title: Self Describing Numbers id: 5eaf48389ee512d4d103684b challengeType: 5 forumTopicId: 385289 --- ## Description
There are several so-called "self describing" or "self-descriptive" integers. An integer is said to be "self-describing" if it has the property that, when digit positions are labeled 0 to N-1, the digit in each position is equal to the number of times that digit appears in the number. For example, 2020 is a four-digit self describing number: Self-describing numbers < 100,000,000 are: 1210, 2020, 21200, 3211000, 42101000.
## Instructions
Write a function that takes a positive integer as a parameter. If it is self-describing return true. Otherwise, return false.
## Tests
```yml tests: - text: isSelfDescribing should be a function. testString: assert(typeof isSelfDescribing=='function'); - text: isSelfDescribing() should return a boolean. testString: assert(typeof isSelfDescribing(2020) =='boolean'); - text: isSelfDescribing(2020) should return true. testString: assert.equal(isSelfDescribing(2020), true); - text: isSelfDescribing(3021) should return false. testString: assert.equal(isSelfDescribing(3021), false); - text: isSelfDescribing(3211000) should return true. testString: assert.equal(isSelfDescribing(3211000), true); ```
## Challenge Seed
```js function isSelfDescribing(n) { } ```
## Solution
```js function isSelfDescribing(n) { let digits = String(n).split(""); digits = digits.map(function(e) {return parseInt(e)}); let count = digits.map((x) => {return 0}) digits.forEach((d) =>{ if (d >= count.length) { return false } count[d] += 1; }); if (digits === count) { return true; } if (digits.length != count.length) { return false; } for (let i=0; i< digits.length; i++){ if (digits[i] !== count[i]) { return false; } } return true; } ```