diff --git a/js/solution2.js b/js/solution2.js index 3083773..7ff0207 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,50 +18,53 @@ 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]; - } + 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); + } } - if (currentSum == target) { - return tenToBin(mask); - } - } - return []; + 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 diff --git a/js/solution3.js b/js/solution3.js deleted file mode 100644 index e9f7dc3..0000000 --- a/js/solution3.js +++ /dev/null @@ -1,65 +0,0 @@ -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