--- id: 5eaf48389ee512d4d103684b title: Самоописувальні числа challengeType: 5 forumTopicId: 385289 dashedName: self-describing-numbers --- # --description-- Існує декілька так званих "самоописів" або ["самоописувальних"](https://en.wikipedia.org/wiki/Self-descriptive_number) цілих чисел. Ціле число називають самоописувальним, якщо воно має такі властивості, коли розряд цифри позначений від 0 до N-1, а цифра в кожній позиції дорівнює тій кількості разів, за яку вона з'являється в числі. До прикладу, **2020** — це самоописувальне чотиризначне число: Самоописувальними числами < 100,000,000 є: 1210, 2020, 21200, 3211000, 42101000. # --instructions-- Напишіть функцію, яка враховує додатне ціле число як параметр. Якщо число самоописувальне, поверніть true. В іншому випадку — false. # --hints-- `isSelfDescribing` повинен бути функцією. ```js assert(typeof isSelfDescribing == 'function'); ``` `isSelfDescribing()` має повертати логічне значення. ```js assert(typeof isSelfDescribing(2020) == 'boolean'); ``` `isSelfDescribing(2020)` має повертати `true`. ```js assert.equal(isSelfDescribing(2020), true); ``` `isSelfDescribing(3021)` має повертати `false`. ```js assert.equal(isSelfDescribing(3021), false); ``` `isSelfDescribing(3211000)` має повертати `true`. ```js assert.equal(isSelfDescribing(3211000), true); ``` # --seed-- ## --seed-contents-- ```js function isSelfDescribing(n) { } ``` # --solutions-- ```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; } ```