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.
63 lines
1.3 KiB
63 lines
1.3 KiB
"use strict"; |
|
|
|
function main(formName) { |
|
let result = document.getElementById("result"); |
|
|
|
let a = document.forms[formName].elements[0].value; |
|
if (isNotNumber(a)) { |
|
result.textContent = "Ошибка: a не является числом!"; |
|
return; |
|
} else { |
|
a = Number(a); |
|
} |
|
|
|
let b = document.forms[formName].elements[1].value; |
|
if (isNotNumber(b)) { |
|
result.textContent = "Ошибка: b не является числом!"; |
|
return; |
|
} else { |
|
b = Number(b); |
|
} |
|
|
|
if (a > b) { |
|
result.textContent = "Ошибка: a не может быть больше b"; |
|
return; |
|
} |
|
|
|
result.textContent = "Результат: " + countPalindrome(a, b); |
|
} |
|
|
|
function countPalindrome(a, b) { |
|
let result = 0; |
|
|
|
let gen = makeRangeIterator(a, b); |
|
for (let num of gen) { |
|
if (isPalindrome(num)) { |
|
result++; |
|
} |
|
} |
|
|
|
return result; |
|
} |
|
|
|
function isPalindrome(num) { |
|
let strNumber = num.toString(); |
|
for (let i = 0; i <= strNumber.length / 2; i++) { |
|
let lastIndex = strNumber.length - 1 -i; |
|
if (strNumber[i] != strNumber[lastIndex]) { |
|
return false; |
|
} |
|
} |
|
return true; |
|
} |
|
|
|
function isNotNumber(val) { |
|
return val.replace(/\s/g, '').length === 0 || isNaN(val); |
|
} |
|
|
|
function* makeRangeIterator(start, end) { |
|
for (let i = start; i < end; i++) { |
|
yield i; |
|
} |
|
return end; |
|
} |