-
Notifications
You must be signed in to change notification settings - Fork 3
/
exercises.js
161 lines (133 loc) · 4.24 KB
/
exercises.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*
* Homework 1 (CIS 197)
* Finger Exercises
* ---------------------------
*
* The following code stubs are incomplete. Your job is to complete the
* functions and achieve the desired functionality described in the comments.
* Please don't change the names of given functions and object properties, as
* this will make grading homework slower and more difficult.
*
* While completing this assignment, be sure to use Mozilla Developer Network's
* [JavaScript Reference](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference).
*/
(function () {
/*
* ==========================================================================
* Exercise 1
*
* In this exercise we're going to augment the built-in `Array` methods with
* some useful ones of our own.
*
* ==========================================================================
*/
var arrayMethods = {
/*
* Sum all the elements in the array and return the total. Throw an error if
* an element isn't a Number.
*/
sum: function (arr) {
},
/*
* Remove a given element and return the new modified array.
*/
remove: function (arr, item) {
},
/*
* Find duplicates in an array (test for equality using `===`). Return an
* array containing them all.
*
* For example, if arr is [1, 1, 'a', 'b', 'c', 'a'], then findDuplicates
* should return [1, 'a']
*/
findDuplicates: function (arr) {
}
};
/*
* ==========================================================================
* Exercise 2
*
* Create an object called `cashRegister` which scans items and keeps track of
* a running total based on the given price list.
* ==========================================================================
*/
var priceList = {
eggs: 2.50,
milk: 3.00,
bread: 2.75,
orangeJuice: 4.25,
chocolate: 1.50
};
var cashRegister = {
total: undefined,
lastTransaction: undefined,
/*
* Update the register based on the current item to be scanned.
*
* @param item (String) name of the item to be scanned
* @param quantity (Number) how many of this item
*/
scan: function (item, quantity) {
},
/*
* Undo the last transaction. This method may only work once per
* transaction; you don't need to keep a history of all transactions.
*/
voidLastTransaction: function () {
},
/*
* Discount the current total (for a coupon or employee discount).
*
* @param percentage (Number) fractional discount percentage
*/
applyDiscount: function (percentage) {
},
/*
* Prepare the register for a new transaction.
* Print out the total cost before resetting it.
*/
completeTransaction: function () {
}
};
/*
* ==========================================================================
* Exercise 3
*
* The Towers of Hanoi problem is a classic puzzle in which you are presented
* with three pegs. There is a stack of discs of increasing size on one peg.
* Your job is to determine the series of disc moves (you can only move one
* disc at a time) that will move the entire stack to another peg. You are
* only allowed to move a disk onto another one that is of greater size.
* See * [this image](http://upload.wikimedia.org/wikipedia/commons/0/07/Tower_of_Hanoi.jpeg).
*
* Your solution should output tower moves as a string with newlines, in the
* following form (if 'A', 'B', and 'C' were the peg names):
*
* Move disc 1 from A to B
* Move disc 2 from A to C
* ...
*
* ==========================================================================
*/
/*
* Return a string representing the solution to a specified Towers of Hanoi
* problem.
*
* @param n (Number) number of discs
* @param src (String) name of the source peg
* @param dst (String) name of the destination peg
* @param aux (String) name of the auxiliary (third) peg
*/
var towersOfHanoi = function (n, src, dst, aux) {
};
/*
* NOTE: don't change this code.
*
* Export solution as a module.
*/
module.exports = {
arrayMethods: arrayMethods,
cashRegister: cashRegister,
towersOfHanoi: towersOfHanoi
};
})();