diff --git a/lesson_06/expression/.env.test b/lesson_06/expression/.env.test index 56cf4a06f..1eeddbff6 100644 --- a/lesson_06/expression/.env.test +++ b/lesson_06/expression/.env.test @@ -1 +1 @@ -HW_VERSION=your assigned version here \ No newline at end of file +HW_VERSION=B \ No newline at end of file diff --git a/lesson_06/expression/src/expression_calculator.ts b/lesson_06/expression/src/expression_calculator.ts index 76b215c42..90b1d7a74 100644 --- a/lesson_06/expression/src/expression_calculator.ts +++ b/lesson_06/expression/src/expression_calculator.ts @@ -1,11 +1,25 @@ export class ExpressionCalculator { /** Returns a calculation involving a, b, c, d, and e */ calculate(a: number, b: number, c: number, d: number, e: number): number { - // Implement your code here to return the correct value. - return 0; + return this.divide(this.pow(this.add(a, b), c), this.multiply(d, e)); } pow(base: number, exponent: number): number { return Math.pow(base, exponent); } + + add(a: number, b: number): number { + return a + b; + } + + subtract(a: number, b: number): number { + return a - b; + } + + multiply(a: number, b: number): number { + return a * b; + } + divide(a: number, b: number): number { + return a / b; + } } diff --git a/lesson_06/stretch_hw/alphaAbbre.js b/lesson_06/stretch_hw/alphaAbbre.js new file mode 100644 index 000000000..f2a8f2af7 --- /dev/null +++ b/lesson_06/stretch_hw/alphaAbbre.js @@ -0,0 +1,47 @@ +function letterToNumber(ch) { + return ch.charCodeAt(0) - 96; +} + +function validAbbreviation(word, abbr) { + var i = 0; // index for word + var j = 0; // index for abbr + var lastWasNumber = false; + while (j < abbr.length) { + var ch = abbr[j]; + var num1 = letterToNumber(ch); + var skipCount = null; + if (num1 >= 1 && num1 <= 26) { + skipCount = num1; + if (j + 1 < abbr.length) { + var num2 = letterToNumber(abbr[j + 1]); + var combined = num1 * 10 + num2; + if (combined >= 10 && combined <= 26) { + skipCount = combined; + j++; + } + } + } + if (skipCount !== null && skipCount > 0) { + if (lastWasNumber) + return false; + i += skipCount; + if (i > word.length) + return false; + lastWasNumber = true; + j++; + continue; + } + + if (i >= word.length || word[i] !== ch) { + return false; + } + i++; + j++; + lastWasNumber = false; + } + // Must consume the whole word + return i === word.length; +} +// Test the function +console.log(validAbbreviation("internationalization", "i12iz4n")); +console.log(validAbbreviation("apple", "a2e"));