From 485666a40c92e61a48dfaea688a9a01a90a4e488 Mon Sep 17 00:00:00 2001 From: Krio Date: Fri, 3 Sep 2021 10:14:17 +0700 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- labs/lab1/desc.json | 44 ++++++++++++++++++++++++++++++++++++++++++++ labs/lab1/main.js | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 labs/lab1/desc.json create mode 100644 labs/lab1/main.js diff --git a/labs/lab1/desc.json b/labs/lab1/desc.json new file mode 100644 index 0000000..afe615b --- /dev/null +++ b/labs/lab1/desc.json @@ -0,0 +1,44 @@ +{ + "number": "1", + "tasK": "Создайте функцию, которая принимает массив чисел arr и число n. Верните true, если сумма любых двух элементов равна заданному числу. В противном случае верните false.", + "vars": [ + [ + { + "name": "arr", + "desc": "Массив исходных чисел, разделенных пробелом", + "data": "" + }, + { + "name": "n", + "desc": "Требуемая сумма", + "data": "" + } + ], + [ + { + "name": "arr", + "desc": "Массив исходных чисел, разделенных пробелом", + "data": "1 2 3" + }, + { + "name": "n", + "desc": "Требуемая сумма", + "data": "4" + } + ], + [ + { + "name": "arr", + "desc": "Массив исходных чисел, разделенных пробелом", + "data": "1 2 3" + }, + { + "name": "n", + "desc": "Требуемая сумма", + "data": "1" + } + ] + ], + "scriptpath": "labs/lab1/main.js", + "complete": true +} \ No newline at end of file diff --git a/labs/lab1/main.js b/labs/lab1/main.js new file mode 100644 index 0000000..340eda2 --- /dev/null +++ b/labs/lab1/main.js @@ -0,0 +1,41 @@ +"use strict"; + +function main(formName) { + let arr = document.forms[formName].elements[0].value; + arr = arr.split(" "); + let result = arr.some( elem => isNotNumber(elem) ); + if (result) { + alert("arr должен содержать только числа, разделенные пробелом!"); + return; + } else { + arr = arr.map( elem => Number(elem) ); + } + + let n = document.forms[formName].elements[1].value; + if (isNotNumber(n)) { + alert("n не является числом!"); + return; + } else { + n = Number(n); + } + + alert( "Результат: " + hasPairForSum(arr, n) ); +} + +function hasPairForSum(arr, n) { + let map = new Map(); + + for (let num of arr) { + if (map.has(n - num)) { + return true; + } else { + map.set(num, null) + } + } + + return false; +} + +function isNotNumber(val) { + return val.replace(/\s/g, '').length === 0 || isNaN(val); +} \ No newline at end of file