@@ -7,7 +7,12 @@ 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
+ }
13
+ else {
14
+ return false ;
15
+ }
11
16
}
12
17
13
18
/**
@@ -21,23 +26,86 @@ export function compareStrings(a: string, b: string): number {
21
26
// The distance will be a number less than 0 if string `a` is lexicographically less than `b`, 1
22
27
// if it is greater, and 0 if the strings are equal.
23
28
const distance = computeLexicographicDistance ( a , b ) ;
24
-
25
- // TODO(you): Finish this method.
26
-
27
- return 0 ;
29
+ if ( distance > 0 ) {
30
+ return 1 ;
31
+ }
32
+ if ( distance < 0 ) {
33
+ return - 1
34
+ }
35
+ else {
36
+ return 0 ;
37
+ }
28
38
}
29
39
30
40
/**
31
41
* Converts a GPA on the 4.0 scale to the corresponding letter grade using the college board
32
42
* scale. See
33
43
* https://bigfuture.collegeboard.org/plan-for-college/college-basics/how-to-convert-gpa-4.0-scale
34
44
* for details.
35
- *
45
+ * A+ 97-100 4.0
46
+ A 93-96 4.0
47
+ A- 90-92 3.7
48
+ B+ 87-89 3.3
49
+ B 83-86 3.0
50
+ B- 80-82 2.7
51
+ C+ 77-79 2.3
52
+ C 73-76 2.0
53
+ C- 70-72 1.7
54
+ D+ 67-69 1.3
55
+ D 65-66 1.0
56
+ E/F Below 65 0.0
36
57
* @param gpa The GPA value.
37
58
* @return The letter grade ("A+", "A", "A-", "B+", etc.).
38
59
*/
39
60
export function convertGpaToLetterGrade ( gpa : number ) : string {
40
- return "F" ;
61
+ let letterGrade = "N/A" ;
62
+ if ( gpa === 4.0 ) {
63
+ letterGrade = "A" ;
64
+ return letterGrade ;
65
+ }
66
+ else if ( gpa >= 3.7 && gpa < 4.0 ) {
67
+ letterGrade = "A-" ;
68
+ return letterGrade ;
69
+ }
70
+ else if ( gpa >= 3.3 && gpa < 3.7 ) {
71
+ letterGrade = "B+" ;
72
+ return letterGrade ;
73
+ }
74
+ else if ( gpa >= 3.0 && gpa < 3.3 ) {
75
+ letterGrade = "B" ;
76
+ return letterGrade ;
77
+ }
78
+ else if ( gpa >= 2.7 && gpa < 3.0 ) {
79
+ letterGrade = "B-" ;
80
+ return letterGrade ;
81
+ }
82
+ else if ( gpa >= 2.3 && gpa < 2.7 ) {
83
+ letterGrade = "C+" ;
84
+ return letterGrade ;
85
+ }
86
+ else if ( gpa >= 2.0 && gpa < 2.3 ) {
87
+ letterGrade = "C" ;
88
+ return letterGrade ;
89
+ }
90
+ else if ( gpa >= 1.7 && gpa < 2.0 ) {
91
+ letterGrade = "C-" ;
92
+ return letterGrade ;
93
+ }
94
+ else if ( gpa >= 1.3 && gpa < 1.7 ) {
95
+ letterGrade = "D+" ;
96
+ return letterGrade ;
97
+ }
98
+ else if ( gpa >= 1.0 && gpa < 1.3 ) {
99
+ letterGrade = "D" ;
100
+ return letterGrade ;
101
+ }
102
+ else if ( gpa >= 0 && gpa < 1.0 ) {
103
+ letterGrade = "F" ;
104
+ return letterGrade ;
105
+ }
106
+ else {
107
+ return letterGrade ;
108
+ }
41
109
}
42
110
43
111
/**
@@ -47,7 +115,15 @@ export function convertGpaToLetterGrade(gpa: number): string {
47
115
* @return The factorial of n.
48
116
*/
49
117
export function computeFactorial ( n : number ) : number {
50
- return 0 ;
118
+ let fact = 0
119
+ if ( n > 0 ) {
120
+ fact = 1
121
+ for ( let i = n ; i >= 0 ; i -- ) {
122
+ fact *= i ;
123
+ }
124
+ return fact ;
125
+ }
126
+ return fact ;
51
127
}
52
128
53
129
/**
@@ -57,7 +133,14 @@ export function computeFactorial(n: number): number {
57
133
* @return The sum of all the values.
58
134
*/
59
135
export function addNumbers ( values : number [ ] ) : number {
60
- return 0 ;
136
+ let sum = 0 ;
137
+ if ( values . length > 0 ) {
138
+ for ( let i = 0 ; i < values . length ; i ++ ) {
139
+ sum += values [ i ] ;
140
+ }
141
+ return sum ;
142
+ }
143
+ return sum ;
61
144
}
62
145
63
146
/**
@@ -67,7 +150,19 @@ export function addNumbers(values: number[]): number {
67
150
* @return An array containing the first `n` Fibonacci values.
68
151
*/
69
152
export function getFirstNFibonacciNumbers ( n : number ) : number [ ] {
70
- return [ ] ;
153
+ let list : number [ ] = [ ] ;
154
+ if ( n >= 1 ) {
155
+ list . push ( 0 ) ;
156
+ }
157
+ if ( n >= 2 ) {
158
+ list . push ( 1 ) ;
159
+ }
160
+ if ( n >= 3 ) {
161
+ for ( let i = 2 ; i <= n ; i ++ ) {
162
+ list [ i ] = list [ i - 1 ] + list [ i - 2 ] ;
163
+ }
164
+ }
165
+ return list ;
71
166
}
72
167
73
168
/**
@@ -98,5 +193,13 @@ export function binarySearch(
98
193
// Else if values[pivotIndex] is greater than the value, then
99
194
// call `binarySearch(values, start, pivotIndex - 1, value)` and return its value;
100
195
// Else call `binarySearch(values, pivotIndex + 1, end, value)` and return its value.
101
- return - 1 ;
196
+ if ( values [ pivotIndex ] === value ) {
197
+ return pivotIndex ;
198
+ }
199
+ else if ( values [ pivotIndex ] > value ) {
200
+ return binarySearch ( values , start , pivotIndex - 1 , value ) ;
201
+ }
202
+ else {
203
+ return binarySearch ( values , pivotIndex + 1 , end , value ) ;
204
+ }
102
205
}
0 commit comments