js lang solution №2 update

This commit is contained in:
Дмитрий Голондарев 2026-03-28 23:01:08 +03:00
parent 22179a17e2
commit 6034154ee6

View file

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