diff --git a/lesson_07/conditionals/.env.test b/lesson_07/conditionals/.env.test index de8c44249..6da045feb 100644 --- a/lesson_07/conditionals/.env.test +++ b/lesson_07/conditionals/.env.test @@ -1 +1 @@ -HW_VERSION=your homework version here \ No newline at end of file +HW_VERSION=B diff --git a/lesson_07/conditionals/src/lesson7.ts b/lesson_07/conditionals/src/lesson7.ts index cc44be44c..060c063fd 100644 --- a/lesson_07/conditionals/src/lesson7.ts +++ b/lesson_07/conditionals/src/lesson7.ts @@ -11,9 +11,13 @@ 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); - // TODO(you): Finish this method. - + if (distance < 0) { + return -1; + } + else if (distance > 0) { + return 1; + } return 0; } @@ -24,7 +28,18 @@ export function compareStrings(a: string, b: string): number { * @return The factorial of n. */ export function computeFactorial(n: number): number { - return 0; + let product = 1; + + if (n<0) { + return 0; + } + if (n<=1) { + return 1; + } + for (let i = 1; i <= n; i++) { + product = i*product; + } + return product; } /** @@ -34,7 +49,26 @@ export function computeFactorial(n: number): number { * @return An array containing the first `n` Fibonacci values. */ export function getFirstNFibonacciNumbers(n: number): number[] { - return []; + let fib: number[] = []; + + if (n <= 0) { + return []; + } + + if (n === 1) { + return [1]; + } + + if (n === 2) { + return [1, 1]; + } + + fib = [1,1]; + for (let i=2; i < n ; i++) { + const fibValue = fib [i -1] + fib [i -2]; + fib.push(fibValue); + } + return fib; } /** @@ -60,6 +94,15 @@ export function binarySearch( const pivotIndex = Math.floor((start + end) / 2); // The index in the middle of the array. // TODO(you): Finish implementing this algorithm + if (values[pivotIndex] === value) { + return pivotIndex; + } + else if (values[pivotIndex] > value) { + return binarySearch(values, start, pivotIndex - 1, value); + } + else { + return binarySearch(values, pivotIndex + 1, end, value); + } // If values[pivotIndex] is equal to value then return `pivotIndex`. // Else if values[pivotIndex] is greater than the value, then diff --git a/lesson_07/conditionals/src/part_b.ts b/lesson_07/conditionals/src/part_b.ts index 22fc01ccc..4510c9459 100644 --- a/lesson_07/conditionals/src/part_b.ts +++ b/lesson_07/conditionals/src/part_b.ts @@ -5,9 +5,14 @@ * @returns */ export function isLeapYear(year: number): boolean { - return false; + if (year % 4 === 0 && year % 100 !== 0) { + return true; + } + if (year % 400 === 0) { + return true; + } + return false; } - /** * Returns whether the given number is even or odd. * @@ -15,9 +20,13 @@ export function isLeapYear(year: number): boolean { * @returns */ export function isEvenOrOdd(num: number): string { - return ""; + if (num % 2 === 0) { + return "even"; + } + else { + return "odd"; + } } - /** * Returns whether a word contains a vowel or not. * @@ -25,5 +34,18 @@ export function isEvenOrOdd(num: number): string { * @returns */ export function hasVowel(word: string): boolean { - return false; + word = word.toLowerCase(); + + if ( + word.includes("a") || + word.includes("e") || + word.includes("i") || + word.includes("o") || + word.includes("u") + ) { + return true; + } + else { + return false; + } }