From 6109e2fd58dc747e3afa923a9da8bfe6a0aa5e54 Mon Sep 17 00:00:00 2001 From: dtr200 Date: Tue, 15 Jun 2021 22:37:02 +0300 Subject: [PATCH] Homework-2: task 3 has been completed --- homework-lecture-2/closest-number.js | 44 ++++++++++++++++++++++++++++ homework-lecture-2/readme.md | 32 +++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 homework-lecture-2/closest-number.js diff --git a/homework-lecture-2/closest-number.js b/homework-lecture-2/closest-number.js new file mode 100644 index 0000000..fe2c6fa --- /dev/null +++ b/homework-lecture-2/closest-number.js @@ -0,0 +1,44 @@ +function getClosest(list){ + // Распарсиваю данные + + let [ , values, num] = list; + values = values.split(' ') + .map(num => Number(num)); + num = Number(num); + + /* closest - текущее самое близкое, + lacks - сколько не хватает до num + */ + + let closest = values[0]; + let lacks = Math.abs(num - closest); + + // если lacks === 0, тогда closest на первой позиции + + if(!lacks) + return `${closest}`; + + /* + Иду по values, считаю разницу между num и текущим значением, + беру ее по модулю. + Если она == 0, тогда return. + Если разница меньше прошлой разницы, сохраняю ее и текущее занчение. + */ + + for(let i = 1; i < values.length; i++){ + const nowLacks = Math.abs(num - values[i]); + + if(!nowLacks) + return `${values[i]}`; + + if(nowLacks < lacks){ + closest = values[i]; + lacks = nowLacks; + } + } + + return `${closest}`; +} + +getClosest(['5', '1 2 3 4 5', '6']); +getClosest(['5', '5 4 3 2 1', '3']); \ No newline at end of file diff --git a/homework-lecture-2/readme.md b/homework-lecture-2/readme.md index 4519071..006266c 100644 --- a/homework-lecture-2/readme.md +++ b/homework-lecture-2/readme.md @@ -59,4 +59,34 @@ NO #### Вывод CONSTANT -### Решение: sequence-type.js \ No newline at end of file +### Решение: sequence-type.js + +# C. Ближайшее число + +Напишите программу, которая находит в массиве элемент, самый близкий по величине к данному числу. + +### Формат ввода +В первой строке задается одно натуральное число N, не превосходящее 1000 – размер массива. Во второй строке содержатся N чисел – элементы массива (целые числа, не превосходящие по модулю 1000). В третьей строке вводится одно целое число x, не превосходящее по модулю 1000. + +### Формат вывода +Вывести значение элемента массива, ближайшее к x. Если таких чисел несколько, выведите любое из них. + +### Пример 1 +#### Ввод +5 +1 2 3 4 5 +6 + +#### Вывод +5 + +### Пример 2 +#### Ввод +5 +5 4 3 2 1 +3 + +#### Вывод +3 + +### Решение: closest-number.js \ No newline at end of file