@@ -7,7 +7,11 @@ import { computeLexicographicDistance } from "./util.js";
7
7
* @return True if the age corresponds to a voting age and false otherwise.
8
8
*/
9
9
export function canVote ( age : number ) : boolean {
10
- return false ;
10
+ if ( age >= 18 ) {
11
+ return true ;
12
+ } else {
13
+ return false ;
14
+ }
11
15
}
12
16
13
17
/**
@@ -23,8 +27,13 @@ export function compareStrings(a: string, b: string): number {
23
27
const distance = computeLexicographicDistance ( a , b ) ;
24
28
25
29
// TODO(you): Finish this method.
26
-
27
- return 0 ;
30
+ let distanceCompareNum = 0 ;
31
+ if ( distance < 0 ) {
32
+ distanceCompareNum = - 1 ;
33
+ } else if ( distance > 0 ) {
34
+ distanceCompareNum = 1 ;
35
+ }
36
+ return distanceCompareNum ;
28
37
}
29
38
30
39
/**
@@ -37,7 +46,31 @@ export function compareStrings(a: string, b: string): number {
37
46
* @return The letter grade ("A+", "A", "A-", "B+", etc.).
38
47
*/
39
48
export function convertGpaToLetterGrade ( gpa : number ) : string {
40
- return "F" ;
49
+ let letterGrade = "" ;
50
+ if ( gpa >= 4.0 ) {
51
+ letterGrade = "A" ;
52
+ } else if ( gpa < 4.0 && gpa >= 3.7 ) {
53
+ letterGrade = "A-" ;
54
+ } else if ( gpa <= 3.69 && gpa >= 3.3 ) {
55
+ letterGrade = "B+" ;
56
+ } else if ( gpa <= 3.29 && gpa >= 3.0 ) {
57
+ letterGrade = "B" ;
58
+ } else if ( gpa <= 2.99 && gpa >= 2.7 ) {
59
+ letterGrade = "B-" ;
60
+ } else if ( gpa <= 2.69 && gpa >= 2.3 ) {
61
+ letterGrade = "C+" ;
62
+ } else if ( gpa <= 2.29 && gpa >= 2.0 ) {
63
+ letterGrade = "C" ;
64
+ } else if ( gpa <= 1.99 && gpa >= 1.7 ) {
65
+ letterGrade = "C-" ;
66
+ } else if ( gpa <= 1.69 && gpa >= 1.3 ) {
67
+ letterGrade = "D+" ;
68
+ } else if ( gpa <= 1.29 && gpa >= 1.0 ) {
69
+ letterGrade = "D" ;
70
+ } else if ( gpa <= 0.99 ) {
71
+ letterGrade = "F" ;
72
+ }
73
+ return letterGrade ;
41
74
}
42
75
43
76
/**
@@ -47,7 +80,11 @@ export function convertGpaToLetterGrade(gpa: number): string {
47
80
* @return The factorial of n.
48
81
*/
49
82
export function computeFactorial ( n : number ) : number {
50
- return 0 ;
83
+ let product = 1 ;
84
+ for ( let i = n ; i >= 1 ; i -- ) {
85
+ product *= i ;
86
+ }
87
+ return product ;
51
88
}
52
89
53
90
/**
@@ -57,7 +94,11 @@ export function computeFactorial(n: number): number {
57
94
* @return The sum of all the values.
58
95
*/
59
96
export function addNumbers ( values : number [ ] ) : number {
60
- return 0 ;
97
+ let sum = 0 ;
98
+ for ( const i of values ) {
99
+ sum += i ;
100
+ }
101
+ return sum ;
61
102
}
62
103
63
104
/**
@@ -67,7 +108,19 @@ export function addNumbers(values: number[]): number {
67
108
* @return An array containing the first `n` Fibonacci values.
68
109
*/
69
110
export function getFirstNFibonacciNumbers ( n : number ) : number [ ] {
70
- return [ ] ;
111
+ const arr = [ ] ;
112
+ if ( n >= 1 ) {
113
+ arr . push ( 1 ) ;
114
+ }
115
+ if ( n >= 2 ) {
116
+ arr . push ( 1 ) ;
117
+ }
118
+ if ( n >= 3 ) {
119
+ for ( let i = 2 ; i < n ; i ++ ) {
120
+ arr . push ( arr [ i - 1 ] + arr [ i - 2 ] ) ;
121
+ }
122
+ }
123
+ return arr ;
71
124
}
72
125
73
126
/**
@@ -98,5 +151,11 @@ export function binarySearch(
98
151
// Else if values[pivotIndex] is greater than the value, then
99
152
// call `binarySearch(values, start, pivotIndex - 1, value)` and return its value;
100
153
// Else call `binarySearch(values, pivotIndex + 1, end, value)` and return its value.
101
- return - 1 ;
154
+ if ( values [ pivotIndex ] === value ) {
155
+ return pivotIndex ;
156
+ } else if ( values [ pivotIndex ] > value ) {
157
+ return binarySearch ( values , start , pivotIndex - 1 , value ) ;
158
+ } else {
159
+ return binarySearch ( values , pivotIndex + 1 , end , value ) ;
160
+ }
102
161
}
0 commit comments