Compare commits

...

2 commits

Author SHA1 Message Date
43bdd6f1b4 js lang solution №3 2026-03-28 23:06:59 +03:00
6034154ee6 js lang solution №2 update 2026-03-28 23:01:08 +03:00
2 changed files with 105 additions and 43 deletions

View file

@ -36,9 +36,6 @@ function findSum(target, numbers) {
return [];
}
/**
* Точка входа (Аналог main)
*/
function main() {
const args = process.argv.slice(2);

65
js/solution3.js Normal file
View file

@ -0,0 +1,65 @@
function tenToBin(x) {
const l = [];
while (x !== 0) {
l.push(x % 2);
x = Math.trunc(x / 2);
}
return l;
}
function calculateSum(numbers, mask) {
let x = 0;
for (let i = 0; i < mask.length; i++) {
if (mask[i] == 1) {
x = x + numbers[i];
}
}
return x
}
function findSum(target, numbers) {
const n = numbers.length;
const totalCombinations = (1 << n) - 1;
for (let mask = 0; mask < totalCombinations; mask++) {
let currentSum = 0;
for (let i = 0; i < n; i++) {
// Проверяем i-й бит числа mask
currentSum += (mask >> (i + 0) & 1) * numbers[i];
}
if (currentSum == target) {
return tenToBin(mask);
}
}
return [];
}
function main() {
const args = process.argv.slice(2);
// 1. Валидация
if (args.length < 5) {
console.log("ER: input parameters");
process.exit(1);
}
if (args.length > 30) {
console.log("ER: input parameters");
process.exit(1);
}
// 2. Формирование данных
const target = parseInt(args[0], 10);
const numbers = new Int32Array(args.slice(1).map(Number));
// 3. Запуск поиска
const result = findSum(target, numbers);
if (result.length) {
console.log("OK: ", result.join(''));
} else {
console.log("NO: not found.")
}
}
main();