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

"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;
}