2726. Калькулятор с цепочкой методов (Easy) (https://leetcode.com/problems/calculator-with-method-chaining/)
Реализуйте класс Calculator. Класс должен предоставлять математические операции: сложение, вычитание, умножение, деление и возведение в степень. Также он должен позволять выполнять последовательные операции с помощью цепочки методов (method chaining). Конструктор класса Calculator должен принимать число, которое служит начальным значением result. Ваш класс Calculator должен иметь следующие методы: - add: добавляет заданное значение value к result и возвращает обновлённый Calculator.
- subtract: вычитает заданное значение value из result и возвращает обновлённый Calculator.
- multiply: умножает result на заданное значение value и возвращает обновлённый Calculator.
- divide: делит result на заданное значение value и возвращает обновлённый Calculator. Если переданное значение равно 0, должна быть выброшена ошибка “Division by zero is not allowed”.
- power: возводит result в степень заданного значения value и возвращает обновлённый Calculator.
- getResult: возвращает result. Решения с точностью до 10^-5 от фактического результата считаются верными. Ограничения: - actions — валидный JSON-массив строк - values — валидный JSON-массив чисел - 2 <= actions.length <= 2 * 10^4 - 1 <= values.length <= 2 * 10^4 - 1 - actions[i] — одно из значений “Calculator”, “add”, “subtract”, “multiply”, “divide”, “power”, “getResult” - Первое действие всегда “Calculator” - Последнее действие всегда “getResult”
class Calculator {
value: number
constructor(value: number) {
this.value = value
}
add(value: number): Calculator {
this.value += value
return this
}
subtract(value: number): Calculator {
this.value -= value
return this
}
multiply(value: number): Calculator {
this.value *= value
return this
}
divide(value: number): Calculator {
if (value === 0) throw new Error("Division by zero is not allowed")
this.value /= value
return this
}
power(value: number): Calculator {
this.value **= value
return this
}
getResult(): number {
return this.value
}
}
// Локальная проверка:
console.log(new Calculator(10).add(5).subtract(7).getResult()) // 8
console.log(new Calculator(2).multiply(5).power(2).getResult()) // 100Example 1:
Input:
actions = ["Calculator", "add", "subtract", "getResult"],
values = [10, 5, 7]
<!-- [[leetcode/untagged]] [[leetcode/untagged/2725-interval-cancellation]] -->
Output: 8
Explanation:
new Calculator(10).add(5).subtract(7).getResult() // 10 + 5 - 7 = 8
Example 2:
Input:
actions = ["Calculator", "multiply", "power", "getResult"],
values = [2, 5, 2]
Output: 100
Explanation:
new Calculator(2).multiply(5).power(2).getResult() // (2 * 5) ^ 2 = 100
Example 3:
Input:
actions = ["Calculator", "divide", "getResult"],
values = [20, 0]
Output: "Division by zero is not allowed"
Explanation:
new Calculator(20).divide(0).getResult() // 20 / 0
The error should be thrown because we cannot divide by zero.