Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
25 changes: 23 additions & 2 deletions topic-2/task-1/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;


27 changes: 24 additions & 3 deletions topic-2/task-2/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
33 changes: 31 additions & 2 deletions topic-2/task-3/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
10 changes: 7 additions & 3 deletions topic-2/task-4/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
8 changes: 5 additions & 3 deletions topic-2/task-5/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {miniMathLib} from "../task-4";
import { miniMathLib } from "../task-4";

/**
* Задача 5 - Нехватка точности
Expand All @@ -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
21 changes: 17 additions & 4 deletions topic-2/task-6/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;