From 6034154ee6e2a2aa087e7259f74c94c1a4bc4c00 Mon Sep 17 00:00:00 2001 From: Tayfer Date: Sat, 28 Mar 2026 23:01:08 +0300 Subject: [PATCH 1/2] =?UTF-8?q?js=20lang=20solution=20=E2=84=962=20update?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/solution2.js | 83 ++++++++++++++++++++++++------------------------- 1 file changed, 40 insertions(+), 43 deletions(-) diff --git a/js/solution2.js b/js/solution2.js index 7ff0207..3083773 100644 --- a/js/solution2.js +++ b/js/solution2.js @@ -1,10 +1,10 @@ function tenToBin(x) { - const l = []; - while (x !== 0) { - l.push(x % 2); - x = Math.trunc(x / 2); - } - return l; + const l = []; + while (x !== 0) { + l.push(x % 2); + x = Math.trunc(x / 2); + } + return l; } function calculateSum(numbers, mask) { @@ -18,53 +18,50 @@ function calculateSum(numbers, mask) { } function findSum(target, numbers) { - const n = numbers.length; - const totalCombinations = (1 << n) - 1; + 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 - if ((mask >> i) & 1) { - currentSum += numbers[i]; - } - } - if (currentSum == target) { - return tenToBin(mask); - } + for (let mask = 0; mask < totalCombinations; mask++) { + let currentSum = 0; + for (let i = 0; i < n; i++) { + // Проверяем i-й бит числа mask + if ((mask >> i) & 1) { + currentSum += numbers[i]; + } } - return []; + if (currentSum == target) { + return tenToBin(mask); + } + } + return []; } -/** - * Точка входа (Аналог main) - */ function main() { - const args = process.argv.slice(2); + const args = process.argv.slice(2); - // 1. Валидация - if (args.length < 5) { - console.log("ER: input parameters"); - process.exit(1); - } + // 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); - } + if (args.length > 30) { + console.log("ER: input parameters"); + process.exit(1); + } - // 2. Формирование данных - const target = parseInt(args[0], 10); - const numbers = args.slice(1).map(Number); + // 2. Формирование данных + const target = parseInt(args[0], 10); + const numbers = args.slice(1).map(Number); - // 3. Запуск поиска - const result = findSum(target, numbers); + // 3. Запуск поиска + const result = findSum(target, numbers); - if (result.length) { - console.log("OK: ", result.join('')); - } else { - console.log("NO: not found.") - } + if (result.length) { + console.log("OK: ", result.join('')); + } else { + console.log("NO: not found.") + } } main(); \ No newline at end of file From 43bdd6f1b4e3aa5514061a5cc9fb839c495ce6c6 Mon Sep 17 00:00:00 2001 From: Tayfer Date: Sat, 28 Mar 2026 23:06:59 +0300 Subject: [PATCH 2/2] =?UTF-8?q?js=20lang=20solution=20=E2=84=963?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/solution3.js | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 js/solution3.js diff --git a/js/solution3.js b/js/solution3.js new file mode 100644 index 0000000..e9f7dc3 --- /dev/null +++ b/js/solution3.js @@ -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(); \ No newline at end of file