木曜日, 9月 11, 2025

Let's start JavaScript 82 
HTMLで複数の数値で作れる合計全表示

必要にせまられたので・・・
HTMLで複数の数値から作れる合計を重複を除きすべて表示させます。
例えば・・・
1,2,3の場合・・・ 1 2 3 1+3=4 2+3=5 1+2+3=6 となります。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>合計組み合わせ</title>
<style>
body {
font-family: sans-serif;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
background: black;
color: white;
}
input {
width: 200px;
padding: 5px;
}
</style>
</head>
<body>
<h3>複数の数値から作れる合計をすべて表示</h3>
<p>数値を入力してください(半角, 区切り):</p>
<span>
<input type="text" size="28" id="inputNumbers"
        value="7,14,28,9,16,30">
&ensp;
<button onclick="showSums()">合計を表示</button></span>
<h4>合計一覧(重複なし)</h4>
<div id="results"></div>
<script>
function showSums() {
const input = document.getElementById('inputNumbers').value;
const numbers = input.split(',').map(n =>
        parseInt(n.trim(), 10)).filter(n => !isNaN(n));
const resultSet = new Set();

const n = numbers.length;
for (let i = 1; i < (1 << n); i++) {
let sum = 0;
for (let j = 0; j < n; j++) {
if (i & (1 << j)) {
sum += numbers[j];
}
}
resultSet.add(sum);
}

const sortedSums =
        Array.from(resultSet).sort((a, b) => a - b);
document.getElementById('results').innerHTML =
        sortedSums.join(', ');
}
</script>
</body>
</html>



実行直後の画面。



デフォルト値のまま[合計を表示]をクリックすれば、複数の入力数値から作れる合計を重複を除きすべて表示します。



入力値はボックスに入力できるまで入れることが出来ます。