diff --git a/topic-2/task-1/index.js b/topic-2/task-1/index.js index 4739c57..4e39bb7 100644 --- a/topic-2/task-1/index.js +++ b/topic-2/task-1/index.js @@ -9,9 +9,30 @@ * @returns массив с удаленным элементом */ function removeSmallest(numbers) { - + if (Array.isArray(numbers)) { + let arr = numbers //Исходя из условий задачи, что исходный массив нельзя изменять + if (arr.every(elem => typeof elem === 'number')) { + let a = +Infinity + for (let i = 0; i < arr.length; i++) { + if (a > arr[i]) { + a = arr[i] + } + } + let index = arr.indexOf(a) + arr.splice(index, 1) + return arr + } + else if (arr === []) { + return arr + } + else { + throw new Error('Ожидался массив чисел, либо пустой массив') + } + } + else { + throw new Error('Ожидался массив') + } } - module.exports.removeSmallest = removeSmallest; diff --git a/topic-2/task-2/index.js b/topic-2/task-2/index.js index d1e3e9a..6522d3c 100644 --- a/topic-2/task-2/index.js +++ b/topic-2/task-2/index.js @@ -14,8 +14,29 @@ * @returns массив разбитый на группы */ const arrayStripped = (array, size) => { - + if (Number.isInteger(size)) { + if (!Array.isArray(array) || array.length == 0) { + return [] + } + else if (Array.isArray(array)) { + const a = array.length / size + let arr = [] + for (let i = 0; i < a; i++) { + let arr_1 = [] + for (let b = 0; b < size; b++) { + if (array.length === 0) { + break + } + arr_1.push(array[0]) + array.splice(0, 1) + } + arr.push(arr_1) + } + return arr + } + } + else { + throw new Error('Ожидался массив и целосчисленный разделитель') + } } - - module.exports.arrayStripped = arrayStripped; diff --git a/topic-2/task-3/index.js b/topic-2/task-3/index.js index 66dddf4..efb29a9 100644 --- a/topic-2/task-3/index.js +++ b/topic-2/task-3/index.js @@ -16,7 +16,36 @@ * @param {*} group */ function isGroup(group) { - + if (typeof group === 'string') { + if (group == '') { + return true + } + let arr = group.split('') + let a = arr.toString() + let b = arr.length + let d = Array.from(new Set(arr)).toString() + if (arr.every(elem => elem === '(' || ')' || '[' || ']' || '{' || '}') && b % 2 == 0 && d === a && arr[0] != ')' && arr[0] != ']' && arr[0] != '}') { + for (let i = 0; i < b; i++) { + if (group[i] === '(') { + if (group[b - 1 - i] !== ')' && group[i + 1] !== ')') { + return false + } + } + else if (group[i] === '[') { + if (group[b - 1 - i] !== ']' && group[i + 1] !== ']') { + return false + } + } + else if (group[i] === '{') { + if (group[b - 1 - i] !== '}' && group[i + 1] !== '}') { + return false + } + } + } + return true + } + else return false + } + else throw new Error('Ожидалась строка') } - module.exports.isGroup = isGroup; \ No newline at end of file diff --git a/topic-2/task-4/index.js b/topic-2/task-4/index.js index c6e9209..7517a86 100644 --- a/topic-2/task-4/index.js +++ b/topic-2/task-4/index.js @@ -7,10 +7,14 @@ const miniMathLib = { pi: 3.14, - circleArea: function(radius) { - + circleArea: function (radius) { + if (typeof radius === 'number'&&radius>0) { + return Math.pow(radius, 2) * this.pi + } + else{ + throw new Error('Радиус должен быть положительным числом') + } } } - module.exports.miniMathLib = miniMathLib \ No newline at end of file diff --git a/topic-2/task-5/index.js b/topic-2/task-5/index.js index 7dbbaf3..2a198c0 100644 --- a/topic-2/task-5/index.js +++ b/topic-2/task-5/index.js @@ -1,4 +1,4 @@ -import {miniMathLib} from "../task-4"; +import { miniMathLib } from "../task-4"; /** * Задача 5 - Нехватка точности @@ -7,8 +7,10 @@ import {miniMathLib} from "../task-4"; * Модифицировать miniMathLib из прошлой задачи - запрещено */ function accurateAreaCalc() { - + return function (radius) { + return (3.14159 * miniMathLib.circleArea(radius)) / miniMathLib.pi + } } - +accurateAreaCalc() module.exports.accurateAreaCalc = accurateAreaCalc \ No newline at end of file diff --git a/topic-2/task-6/index.js b/topic-2/task-6/index.js index 19898e1..19d41f7 100644 --- a/topic-2/task-6/index.js +++ b/topic-2/task-6/index.js @@ -10,11 +10,24 @@ * в которую передается значение Пи, необходимое для расчетов * */ const miniMathLibExtended = { + pi: 3.14, + volume(radius, height) { + if (typeof (radius && height) === 'number' && radius > 0 && height > 0) { + return Math.pow(radius, 2) * this.pi * height + } + else { + throw new Error('Радиус и высота должны быть положительным числом') + } + } } - -function cylinderVolumeAccurate(pi){ - +function cylinderVolumeAccurate(pi) { + if (typeof pi === 'number' && pi > 0) { + return function (radius, height) { + return miniMathLibExtended.volume(radius, height) / miniMathLibExtended.pi * pi + } + } else { + throw new Error('Число Пи должно быть положительным') + } } - module.exports.miniMathLibExtended = miniMathLibExtended; module.exports.cylinderVolumeAccurate = cylinderVolumeAccurate; \ No newline at end of file