From 04eede7e7643be2a4247921a8510f1151e707cbf Mon Sep 17 00:00:00 2001 From: Tayfer Date: Sat, 28 Mar 2026 18:41:36 +0300 Subject: [PATCH] =?UTF-8?q?js=20lang=20solution=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/solution1.js | 62 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 js/solution1.js diff --git a/js/solution1.js b/js/solution1.js new file mode 100644 index 0000000..6943bc9 --- /dev/null +++ b/js/solution1.js @@ -0,0 +1,62 @@ +function tenToBin(x) { + const l = []; + let i = x; + while (i !== 0) { + l.push(i % 2); + i = Math.trunc(i / 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 totalCombinations = Math.pow(2, numbers.length) - 1; + for (let index = 0; index < totalCombinations; index++) { + const mask = tenToBin(index); + const currentSum = calculateSum(numbers, mask); + if (currentSum == target) { + console.log(mask); + return 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 = 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