Skip to content
Closed
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lesson_07/conditionals/.env.test
Original file line number Diff line number Diff line change
@@ -1 +1 @@
HW_VERSION=your homework version here
HW_VERSION=A
83 changes: 76 additions & 7 deletions lesson_07/conditionals/src/lesson7.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,14 @@ export function compareStrings(a: string, b: string): number {
// The distance will be a number less than 0 if string `a` is lexicographically less than `b`, 1
// if it is greater, and 0 if the strings are equal.
const distance = computeLexicographicDistance(a, b);

if (distance < 0) {
return -1;
} else if (distance > 0) {
return 1;
} else {
return 0;
}
// TODO(you): Finish this method.

return 0;
}

/**
Expand All @@ -24,7 +28,28 @@ export function compareStrings(a: string, b: string): number {
* @return The factorial of n.
*/
export function computeFactorial(n: number): number {
return 0;
if (n === 0) {
return 1;
}
else if (n === 1) {
return 1;
}
else if (n < 0) {
return 0;
}
else {
return n * computeFactorial(n-1);
}
// if (n < 0) {
// return 0;
// }
// let numbers = 1;

// for (let i = 1; i < n; n--) {
// numbers = numbers * n;
// }

// return numbers;
}

/**
Expand All @@ -34,7 +59,39 @@ export function computeFactorial(n: number): number {
* @return An array containing the first `n` Fibonacci values.
*/
export function getFirstNFibonacciNumbers(n: number): number[] {
return [];

for (let i = 0; i < n; i++) {
if (n === 0)
return[];
else if (n === 1) {
return [1];
}
else if (n === 2) {
return[1,1];
}
else {
const fib = getFirstNFibonacciNumbers(n-1);
fib.push(fib[fib.length - 1] + fib [fib.length -2]);
return fib;
}
}
return[];

// if (n === 0) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Must not have commented out code in your final PR.

// return [];
// }
// else if(n === 1) {
// return [1];
// } else if (n === 2) {
// return [2]
// } else {
// const number: number[] = [1, 1];
// for (let i = 3; i < n; i++) {
// number.push(number[i - 1] + number[i - 2]);;

// }
// return number;
// }
}

/**
Expand All @@ -46,6 +103,7 @@ export function getFirstNFibonacciNumbers(n: number): number[] {
* @param value The value to look for.
* @return The index of the value if found in the array and -1 otherwise.
*/

export function binarySearch(
values: number[],
start: number,
Expand All @@ -57,13 +115,24 @@ export function binarySearch(
return -1;
}

const pivotIndex = Math.floor((start + end) / 2); // The index in the middle of the array.
const pivotIndex = Math.floor((start + end) / 2); // The index in the middle of the array. //this is a variable "pivotIndex" that finds the middle values of our array
if (values[pivotIndex] === value) {
//this function checks if middle value index of our array is equal to the value in our array
return pivotIndex; // returns said value if it is
} else if (values[pivotIndex] > value) {
// checks if middle value is greater than our targett value, if it is than our target is in left half
return binarySearch(values, start, pivotIndex - 1, value); //calls the binarySearch function but range is narrowed down to left side from start to pivotIndex -1
} else {
//if middle value is less than the target value then the target must be in the right half
return binarySearch(values, pivotIndex + 1, end, value); // calls function binarySearch again and limit range to right side from pivotIndex +1 to end
}

// TODO(you): Finish implementing this algorithm

// If values[pivotIndex] is equal to value then return `pivotIndex`.
// Else if values[pivotIndex] is greater than the value, then
// call `binarySearch(values, start, pivotIndex - 1, value)` and return its value;
// Else call `binarySearch(values, pivotIndex + 1, end, value)` and return its value.
return -1;


}
29 changes: 26 additions & 3 deletions lesson_07/conditionals/src/part_a.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
* @return True if the age corresponds to a voting age and false otherwise.
*/
export function canVote(age: number): boolean {
if (age >= 18) {
return true;
}
return false;
}

Expand All @@ -15,15 +18,35 @@ export function canVote(age: number): boolean {
* @return The sum of all the values.
*/
export function addNumbers(values: number[]): number {
return 0;
}
// const array1 = ["a", "b", "c"];

// for (const element of array1) {
// console.log(element);
// }
if (values.length === 0) {
return 0;
} else {
let sum = 0;
for (const value of values) {
sum += value;
}
return sum;
}
}
/**
* Computes the factorial of the given value of `n`.
*
* @param n The value for which to compute the factorial.
* @return The factorial of n.
*/
export function computeFactorial(n: number): number {
return 0;
if (n < 0) {
return 0;
}
let numbers = 1;

for (let i = 1; i < n; n--) {
numbers = numbers * n;
}
return numbers;
}