-
Notifications
You must be signed in to change notification settings - Fork 2
/
hashadNums.js
62 lines (59 loc) · 1.57 KB
/
hashadNums.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// http://www.codewars.com/kata/54a0689443ab7271a90000c6/train/javascript
/**
* Utility class for Harshad numbers (also called Niven numbers).
*
* @namespace Harshad
*/
var Harshad = ( function() {
'use strict';
return {
/**
* Returns true when the given number is a valid Harshad number.
*
* @param {Number} number The given number
* @returns {Boolean}
* @function Harshad.isValid
*/
isValid: function( number ) {
var individualDigs = number.toString().split('');
var sumDigs = individualDigs.reduce(function(prev, curr){
return prev + Number(curr);
}, 0)
return number % sumDigs === 0;
},
/**
* Gets the next Harshad number after the given number.
*
* @param {Number} number The given number
* @returns {Number}
* @function Harshad.getNext
*/
getNext: function( number ) {
number++;
while (!this.isValid(number)){
number++;
}
return number;
},
/**
* Returns the suite of Harshad numbers, starting after a given number.
*
* @param {Number} count The number of elements to return
* @param {Number} start The number after which the serie should start;
* defaults to 0
* @returns {Array}
* @function Harshad.getSerie
*/
getSerie: function( count, start ) {
start = (start !== undefined)? start+1 : 1;
var work = [];
while (work.length < count){
if (this.isValid(start)){
work.push(start);
}
start++;
}
return work;
}
};
} () );