Skip to content

Commit 2a73cf1

Browse files
author
Adalbert Pungu
committed
Calculation enhancement
1 parent a72d62d commit 2a73cf1

File tree

2 files changed

+84
-52
lines changed

2 files changed

+84
-52
lines changed
Lines changed: 62 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,73 @@
11
"use strict";
2-
// Comparison function that tells the sort method how to sort numbers in descending order
3-
let sortDescending2 = (a, b) => {
4-
if (a > b) {
5-
return -1;
6-
;
2+
/* Module 5: Declare and instantiate classes in TypeScript
3+
Lab End */
4+
/* EXERCISE 1 */
5+
class BuildArray {
6+
// TODO Define the constructor
7+
constructor(items, sortOrder) {
8+
// TODO Define the methods.
9+
this.sortDescending = (a, b) => {
10+
if (a > b) {
11+
return -1;
12+
}
13+
else if (b > a) {
14+
return 1;
15+
}
16+
else {
17+
return 0;
18+
}
19+
};
20+
this.sortAscending = (a, b) => {
21+
if (a > b) {
22+
return 1;
23+
}
24+
else if (b > a) {
25+
return -1;
26+
}
27+
else {
28+
return 0;
29+
}
30+
};
31+
// Limit the number of items to 100 if it exceeds 100
32+
this._items = Math.min(items, 100);
33+
this._sortOrder = sortOrder;
734
}
8-
else if (b > a) {
9-
return 1;
10-
;
35+
// TODO Define the accessors
36+
get items() {
37+
return this._items;
1138
}
12-
else {
13-
return 0;
39+
set items(items) {
40+
// Limit the number of items to 100 if it exceeds 100
41+
this._items = Math.min(items, 100);
1442
}
15-
};
16-
// Comparison function that tells the sort method how to sort numbers in ascending order
17-
let sortAscending2 = (a, b) => {
18-
if (a > b) {
19-
return 1;
43+
get sortOrder() {
44+
return this._sortOrder;
2045
}
21-
else if (b > a) {
22-
return -1;
46+
set sortOrder(sortOrder) {
47+
this._sortOrder = sortOrder;
2348
}
24-
else {
25-
return 0;
26-
}
27-
};
28-
// This function builds an array of unique random numbers containing the number of items based on the number passed to it.
29-
// The sortOrder parameter determines whether to sort the array in ascending or decending order.
30-
function buildArray2(items, sortOrder) {
31-
let randomNumbers = [];
32-
let nextNumber;
33-
for (let i = 0; i < items; i++) {
34-
nextNumber = Math.floor(Math.random() * (100 - 1)) + 1;
35-
if (randomNumbers.indexOf(nextNumber) === -1) {
36-
randomNumbers.push(nextNumber);
49+
buildArray() {
50+
let randomNumbers = [];
51+
let nextNumber;
52+
for (let counter = 0; counter < this.items; counter++) {
53+
nextNumber = Math.ceil(Math.random() * 100); // Removed (100 - 1) as it's redundant
54+
if (randomNumbers.indexOf(nextNumber) === -1) {
55+
randomNumbers.push(nextNumber);
56+
}
57+
else {
58+
counter--;
59+
}
60+
}
61+
if (this._sortOrder === 'ascending') {
62+
return randomNumbers.sort(this.sortAscending);
3763
}
3864
else {
39-
i--;
65+
return randomNumbers.sort(this.sortDescending);
4066
}
4167
}
42-
if (sortOrder === 'ascending') {
43-
return randomNumbers.sort(sortAscending2);
44-
}
45-
else {
46-
return randomNumbers.sort(sortDescending2);
47-
}
4868
}
49-
let testArray1 = buildArray2(12, 'ascending');
50-
let testArray2 = buildArray2(8, 'descending');
51-
console.log(testArray1);
52-
console.log(testArray2);
69+
/* TODO: Instantiate the BuildArray objects. */
70+
let testArray1 = new BuildArray(12, 'ascending');
71+
let testArray2 = new BuildArray(8, 'descending');
72+
console.log(testArray1.buildArray());
73+
console.log(testArray2.buildArray());

code/module-05/m05-end/module05.ts

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,25 @@ class BuildArray {
1010

1111
// TODO Define the constructor
1212
constructor (items: number, sortOrder: 'ascending' | 'descending') {
13-
this._items = items;
13+
// Limit the number of items to 100 if it exceeds 100
14+
this._items = Math.min(items, 100);
1415
this._sortOrder = sortOrder;
1516
}
1617

1718
// TODO Define the accessors
1819
get items() {
1920
return this._items;
2021
}
22+
2123
set items(items) {
22-
this._items = items;
24+
// Limit the number of items to 100 if it exceeds 100
25+
this._items = Math.min(items, 100);
2326
}
27+
2428
get sortOrder() {
2529
return this._sortOrder;
2630
}
31+
2732
set sortOrder(sortOrder) {
2833
this._sortOrder = sortOrder;
2934
}
@@ -35,27 +40,33 @@ class BuildArray {
3540
} else if (b > a) {
3641
return 1;
3742
} else {
38-
return 0;}
39-
}
43+
return 0;
44+
}
45+
}
46+
4047
private sortAscending = (a: number, b: number) => {
4148
if (a > b) {
4249
return 1;
4350
} else if (b > a) {
4451
return -1;
4552
} else {
46-
return 0; }
53+
return 0;
54+
}
4755
}
56+
4857
buildArray(): number[] {
4958
let randomNumbers: number[] = [];
5059
let nextNumber: number;
60+
5161
for (let counter = 0; counter < this.items; counter++) {
52-
nextNumber = Math.ceil(Math.random() * (100 - 1));
62+
nextNumber = Math.ceil(Math.random() * 100); // Removed (100 - 1) as it's redundant
5363
if (randomNumbers.indexOf(nextNumber) === -1) {
5464
randomNumbers.push(nextNumber);
5565
} else {
5666
counter--;
5767
}
5868
}
69+
5970
if (this._sortOrder === 'ascending') {
6071
return randomNumbers.sort(this.sortAscending);
6172
} else {
@@ -66,8 +77,8 @@ class BuildArray {
6677

6778
/* TODO: Instantiate the BuildArray objects. */
6879

69-
let testArray1 = new BuildArray(12, 'ascending');
70-
let testArray2 = new BuildArray(8, 'descending');
71-
72-
console.log(testArray1.buildArray());
73-
console.log(testArray2.buildArray());
80+
let testArray1 = new BuildArray(12, 'ascending');
81+
let testArray2 = new BuildArray(8, 'descending');
82+
83+
console.log(testArray1.buildArray());
84+
console.log(testArray2.buildArray());

0 commit comments

Comments
 (0)