Skip to content

Feat: NileJack-Lesson 07/ hw #285

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 11 commits into from
Closed
8 changes: 4 additions & 4 deletions lesson_07/conditionals/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions lesson_07/conditionals/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
"prettier": "3.3.3",
"ts-jest": "^29.2.5",
"ts-node": "^10.9.2",
"typescript": "^5.6.2",
"typescript": "^5.6.3",
"typescript-eslint": "^8.7.0"
}
}
}
74 changes: 65 additions & 9 deletions lesson_07/conditionals/src/lesson7.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,14 @@ import { computeLexicographicDistance } from "./util.js";
* @param age The age to check.
* @return True if the age corresponds to a voting age and false otherwise.
*/

export function canVote(age: number): boolean {
return false;
if (age >= 18) {
return true;
} else {
return false;
}
}

/**
* Compares two strings lexicographically.
*
Expand All @@ -22,9 +26,15 @@ export function compareStrings(a: string, b: string): number {
// if it is greater, and 0 if the strings are equal.
const distance = computeLexicographicDistance(a, b);

//This is just an idea(That's probably wrong)/
// TODO(you): Finish this method.

return 0;
let stringLengthCompare = 0;
if (distance > 0) {
stringLengthCompare = 1; //equal distances
} else if (distance < 0) {
stringLengthCompare = -1; //unequal distances
}
return stringLengthCompare;
}

/**
Expand All @@ -37,7 +47,27 @@ export function compareStrings(a: string, b: string): number {
* @return The letter grade ("A+", "A", "A-", "B+", etc.).
*/
export function convertGpaToLetterGrade(gpa: number): string {
return "F";
if (gpa == 4.0) {
return "A";
} else if (gpa <= 3.99 && gpa >= 3.7) {
return "A-";
} else if (gpa <= 3.69 && gpa >= 3.3) {
return "B+";
} else if (gpa <= 3.29 && gpa >= 3.0) {
return "B";
} else if (gpa <= 2.99 && gpa >= 2.7) {
return "B-";
} else if (gpa <= 2.69 && gpa >= 2.3) {
return "C+";
} else if (gpa <= 2.29 && gpa >= 2.0) {
return "C";
} else if (gpa <= 1.99 && gpa >= 1.7) {
return "C-";
} else if (gpa <= 1.69 && gpa >= 1.3) {
return "D+";
} else if (gpa <= 1.29 && gpa >= 1.0) {
return "D";
} else return "F";
}

/**
Expand All @@ -47,7 +77,12 @@ export function convertGpaToLetterGrade(gpa: number): string {
* @return The factorial of n.
*/
export function computeFactorial(n: number): number {
return 0;
let product = 1;
for (let i = 1; 1 <= n; i++) {
product *= i;
}

return product;
}

/**
Expand All @@ -57,7 +92,11 @@ export function computeFactorial(n: number): number {
* @return The sum of all the values.
*/
export function addNumbers(values: number[]): number {
return 0;
let sum = 0;
for (const value of values) {
sum += value;
}
return sum;
}

/**
Expand All @@ -67,7 +106,17 @@ export function addNumbers(values: number[]): number {
* @return An array containing the first `n` Fibonacci values.
*/
export function getFirstNFibonacciNumbers(n: number): number[] {
return [];
if (n < 1) {
return [];
}

const fibonacci: number[] = [1, 1]; // The function starts with the first two Fibonacci numbers

for (let i = 2; i < n; i++) {
fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2]; // Here the sum of the preceeding expression(?) is iterated with the number directly preceeding it
}

return fibonacci.slice(0, n); // Return only the first n Fibonacci numbers
}

/**
Expand All @@ -86,12 +135,19 @@ export function binarySearch(
value: number,
): number {
if (end < start) {
// The range is not valid so just return -1.
return -1;
}

const pivotIndex = Math.floor((start + end) / 2); // The index in the middle of the array.

if (values[pivotIndex] === value) {
return pivotIndex;
} else if (values[pivotIndex] > value) {
return binarySearch(values, start, pivotIndex - 1, value);
return value;
} else {
return binarySearch(values, pivotIndex + 1, end, value);
}
// TODO(you): Finish implementing this algorithm

// If values[pivotIndex] is equal to value then return `pivotIndex`.
Expand Down
Loading