You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
865 B
41 lines
865 B
"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); |
|
} |