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