Browse Source

Добавлена работа 7

master v1.5.0
Krio 4 years ago
parent
commit
5cb6241a0b
  1. 37
      labs/lab7/desc.json
  2. 58
      labs/lab7/main.js

37
labs/lab7/desc.json

@ -1,14 +1,43 @@
{ {
"number": 7, "number": 7,
"task": "", "task": "Создайте функцию, которая возвращает количество чисел палиндрома в указанном диапазоне (включительно). Например, между 8 и 34 имеется 5 палиндромов: 8, 9, 11, 22 и 33. Между 1550 и 1552 годами существует ровно один палиндром: 1551. Т.к. в условии не оговорен случай отрицательных чисел, то такие числа не будут рассматриваться отдельно, т.к. чисел вида '-11-' не существует. При указании в качестве начала диапазона вещественного числа, в список проверяемых чисел попадут только вещественные числа, для которых накладывается дополнительное условие в виде расположения разделительной точки ровно в середине числа.",
"vars": [ "vars": [
[ [
{ {
"name": "", "name": "a",
"desc": "", "desc": "Начало диапазона",
"data": "" "data": ""
},
{
"name": "b",
"desc": "Конец диапазона",
"data": ""
}
],
[
{
"name": "a",
"desc": "Начало диапазона",
"data": "8"
},
{
"name": "b",
"desc": "Конец диапазона",
"data": "34"
}
],
[
{
"name": "a",
"desc": "Начало диапазона",
"data": "1550"
},
{
"name": "b",
"desc": "Конец диапазона",
"data": "1552"
} }
] ]
], ],
"complete": false "complete": true
} }

58
labs/lab7/main.js

@ -3,5 +3,61 @@
function main(formName) { function main(formName) {
let result = document.getElementById("result"); let result = document.getElementById("result");
result.textContent = "Результат: неопределенно"; 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;
}
Loading…
Cancel
Save