Browse Source

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

master
Krio 4 years ago
parent
commit
30bb1defa6
  1. 15
      labs/lab6/desc.json
  2. 29
      labs/lab6/main.js

15
labs/lab6/desc.json

@ -1,14 +1,21 @@
{ {
"number": 6, "number": 6,
"task": "", "task": "Учитывая массив целых чисел, представляющих цвет каждого носка, определите, сколько пар носков совпадающих цветов существует. Например, есть 7 носков цветов [1, 2, 1, 2, 1, 3, 2]. Остается одна пара цвета 1 и одна пара цвета 2. Осталось три нечетных носка, по одному каждого цвета. Количество пар равно 2. Создайте функцию, которая возвращает целое число, представляющее количество подходящих пар доступных носков.",
"vars": [ "vars": [
[ [
{ {
"name": "", "name": "arr",
"desc": "", "desc": "Массив носков",
"data": "" "data": ""
} }
],
[
{
"name": "arr",
"desc": "Массив носков",
"data": "1 2 1 2 1 3 2"
}
] ]
], ],
"complete": false "complete": true
} }

29
labs/lab6/main.js

@ -3,5 +3,32 @@
function main(formName) { function main(formName) {
let result = document.getElementById("result"); let result = document.getElementById("result");
result.textContent = "Результат: неопределенно"; let arr = document.forms[formName].elements[0].value;
arr = arr.trim().split(" ");
let checkResult = arr.some( elem => isNotNumber(elem) );
if (checkResult) {
result.textContent = "Ошибка: arr должен содержать только числа, разделенные пробелом!";
return;
} else {
arr = arr.map( elem => Number(elem) );
}
result.textContent = "Результат: " + countPairs(arr);
}
function countPairs(arr) {
let map = new Map();
for (let num of arr) {
map.set(num, (map.get(num) || 0) + 1);
}
let result = 0;
map.forEach( val => result += Math.trunc(val / 2) );
return result;
}
function isNotNumber(val) {
return val.replace(/\s/g, '').length === 0 || isNaN(val);
} }

Loading…
Cancel
Save