Coder Social home page Coder Social logo

homeworks_func's Introduction

Домашнее задание к лекции 2. «Функции»

Задача № 1

Требуется написать функцию getArrayParams(arr), которая получает на вход массив чисел от -100 до 100 и возвращает минимальное, максимальное и среднее арифметическое значений массива.

  1. Создайте функцию которая принимает на ввод массив.
  2. Внутри функции задайте 3 переменных min, max, sum присвоив им некоторые первоначальные значения.
Какие значения? (внутри подсказка, подумайте прежде чем открыть) min = Infinity max = -Infinity
Также можно использовать в качестве min и max первый элемент массива.
  1. Пройдите по массиву циклом for либо while и для каждого элемента определите:
    1. Если элемент больше предыдущего максимума, то максимум становится равен элементу
    2. Если элемент меньше предыдущего минимума, то минимум становится равен элементу
    3. Добавляем элемент к сумме sum для последующего вычисления среднего.
  2. После прохождения цикла функция должна возвращать объект вида: {max:..., min: ..., avg:...}, то есть минимальное, максимальное и средние значения. Чтобы вычислить среднее надо сумму элементов поделить на их количество. Среднее надо округлить до 2х знаков после запятой (для округления воспользуйтесь toFixed). Заметьте, toFixed возвращает string, так как вам необходимо вернуть число (number), то необходимо дополнительное преобразование значения к числу.

Пример

getArrayParams([-99, 99, 10]) // { min: -99, max: 99, avg: 3.33 }
getArrayParams([1, 2, 3, -100, 10])  // { min: -100, max: 10, avg: -16.80 }

Задача № 2

Представьте, что у нас есть мясорубка с разными насадками. Мясорубка запускает процесс, а сам процесс зависит от того, какая будет насадка. Затем мясорубка применяет насадку ко всему мясу, которое в неё поступает и выдаёт на выход только самый лучший кусок.

Пусть дан массив, каждый элемент которого в свою очередь является массивом чисел, например arrOfArr=[[1, 2, 3, 4], [10, 20, -10, -20]]. Необходимо среди всех массивов найти такой, сумма элементов которого максимальна и вывести сумму.

Задачу можно разбить на две части:

  • написать функцию, которая будет считать сумму элементов массива - это "насадка мясорубки"
  • написать функцию, которая применит "насадку" ко всем массивам, которые поступили нам на вход - это "мясорубка"
  • тогда входные данные, массив массивов, являются "мясом"

Итак, напишем две функции: makeWork(arrOfArr,func) - в наших терминах это мясорубка и worker(arr) - это насадка.

  1. Напишите функцию worker которая должна находить сумму элементов массива и возвращать её.
  2. Функция makeWork принимает входные данные - массив массивов (мясо) и функцию worker - это насадка, таким образом makeWork - функция высшего порядка.
  3. Затем makeWork применяет полученную функцию worker к каждому из полученных массивов worker(arrOfArr[i]) вычисляя таким образом сумму элементов.
  4. Если сумма больше предыдущего максимума, то меняем максимум (его следует хранить в отдельной переменной и задавать в начале функции makeWork)

Таким образом наша мясорубка не только перемалывает (находит сумму чисел каждого массива) но и возвращает самый жирный кусок (с максимальной суммой)

Совет: Напишите функцию worker, которая должна находить сумму элементов массива и возвращать её. Протестируйте функцию отдельно на своих примерах, например на (https://jsbin.com). Убедитесь, что она работает. Затем передайте её в makeWork (обратите внимание, что внутри она попадет в переменную func и мы сможем вызывать её func(arr)). Итерируйтесь по массиву arrOfArr с помощью цикла, выполняя worker для каждого элемента (находя сумму), и если она больше ранее найденного максимума - присваивайте max = sum.

Задача 3.

Попробуем реализовать другую насадку для нашей мясорубки. Для этого напишем функцию worker2 которая должна находить разность максимального и минимального значения внутри массива. Это можно интерпретировать как расстояние между минимумом и максимумом. Заметьте, что данная разность - всегда неотрицательное число (используйте Math.abs() для вычисления модуля числа). Затем используйте данную насадку как аргумент для функции makeWork.

Пример

//worker
console.log(worker([1, 2, 3])); // 6
console.log(worker([4, 5, 6])); // 15
let arrOfArr = [[1, 2, 3], [4, 5, 6]];
makeWork(arrOfArr, worker); // 15

console.log(worker([10, 10, 11])); // 31
console.log(worker([20, 10])); // 30
arrOfArr = [[10, 10, 11], [20, 10]];
makeWork(arrOfArr, worker); // 31

console.log(worker([0, 0, 0])); // 0
console.log(worker([-1, -100])); // -101
arrOfArr = [[0, 0, 0], [-1, -100]];
makeWork(arrOfArr, worker); // 0

//worker2
console.log(worker2([-10, -20, -40])); // -40 - (-10) = -30 => 30
console.log(worker2([10, 20, 30])); // 30 - 10 = 20
arrOfArr = [[-10, -20, -40], [10, 20, 30]];
makeWork(arrOfArr, worker2); // 30

console.log(worker2([0, 0, 0])); // 0 - 0 = 0
console.log(worker2([-1, -99])); // -99 - (-1) = -98 => 98
arrOfArr = [[0, 0, 0], [-1, -99]];
makeWork(arrOfArr, worker2); // 98

Требования для выполнения домашней работы

Решение задач

1. Перейдите в папку задания cd ./2.functions.
2. Откройте файл task.js в вашем редакторе кода и выполните задание.
3. Самостоятельно вызывать функции не требуется, если это не требуется по заданию.
4. Откройте файл index.html в вашем браузере и с помощью консоли DevTools убедитесь в правильности выводимых результатов.
5. Откройте файл test-runer.html в вашем браузере и убедитесь, что все тесты выполняются (на вкладке Spec List можно видеть какие тесты выполнились, а какие нет).
6. Добавьте файл task.js в индекс git с помощью команды git add %file-path%, где %file-path% - путь до целевого файла git add task.js.
7. Сделайте коммит, используя команду git commit -m '%comment%', где %comment% - это произвольный комментарий к вашему коммиту git commit -m 'first commit variables'.
8. Опубликуйте код в репозиторий homeworks с помощью команды git push -u origin main.
9. Пришлите ссылку на репозиторий через личный кабинет на сайте Нетологии.

Никаких файлов прикреплять не нужно.

Все задачи обязательны к выполнению для получения зачета. Присылать на проверку можно каждую задачу по отдельности или все задачи вместе. Во время проверки по частям ваша домашняя работа будет со статусом "На доработке".

Любые вопросы по решению задач задавайте в чате учебной группы.

homeworks_func's People

Contributors

travv1s avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.