forked from SeattleSoftwareCraftsmanship/august-meetup
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnumbers.js
More file actions
69 lines (66 loc) · 1.87 KB
/
numbers.js
File metadata and controls
69 lines (66 loc) · 1.87 KB
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
63
64
65
66
67
68
69
/**
* Created with JetBrains WebStorm.
* User: tim
* Date: 8/23/12
* Time: 7:24 PM
* To change this template use File | Settings | File Templates.
*/
var ones = {
test: function (num) {
return num < 10;
},
getString: function (num) {
return ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'][num];
}
};
var tens = {
test: function (num) {
return num > 9 && num < 100;
},
getString: function (num) {
if (num > 19) {
var ten = Math.floor(num / 10);
var temp = ['zero', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'][ten];
if (num % 10) {
temp += ('-' + getString(num - (ten * 10)));
}
return temp;
// return 'tens';
} else {
return [
'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'
][num - 10];
}
}
};
var hundreds = {
test: function (num) {
return num > 99;
},
getString: function (num) {
var hundred = Math.floor(num / 100);
var temp = getString(hundred) + ' hundred';
if (num % 100) {
temp += (' and ' + getString(num - (hundred * 100)));
}
return temp;
}
};
var segments = [ones, tens, hundreds];
function getSegment (num) {
for (var s = 0; s < segments.length; s++) {
var segment = segments[s];
if (segment.test(num)) {
return segment;
}
}
throw { exception: 'SegmentNotResolvableExceptions', message: 'Couldn\'t resolve ' + num };
};
function getString (num) {
var segment = getSegment(num);
return segment.getString(num);
// var nextSegment = segment.print(num);
};
for (var i = 0; i < 500; i++) {
console.log(getString(i));
}