2 changed files with 85 additions and 0 deletions
@ -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 |
||||
} |
||||
@ -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); |
||||
} |
||||
Loading…
Reference in new issue