<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width" />
<title>Hello, world!</title>
</head>
<body>
<h1>Hello, world! This is a "White-Box Calculator".</h1>
<label for="true1">True Clause 1:</label>
<input type="string" id="true1" required>
<label for="false1">False Clause 1:</label>
<input type="string" id="false1" required>
</br>
<label for="true2">True Clause 2:</label>
<input type="string" id="true2" required>
<label for="false2">False Clause 2:</label>
<input type="string" id="false2" required>
</br>
<label for="true3">True Clause 3:</label>
<input type="string" id="true3" required>
<label for="false3">False Clause 3:</label>
<input type="string" id="false3" required>
</br>
<label for="true4">True Clause 4:</label>
<input type="string" id="true4" required>
<label for="false4">False Clause 4:</label>
<input type="string" id="false4" required>
</br>
<label for="true5">True Clause 5:</label>
<input type="string" id="true5" required>
<label for="false5">False Clause 5:</label>
<input type="string" id="false5" required>
</br>
<label for="true6">True Clause 6:</label>
<input type="string" id="true6" required>
<label for="false6">False Clause 6:</label>
<input type="string" id="false6" required>
</br>
<label for="true7">True Clause 7:</label>
<input type="string" id="true7" required>
<label for="false7">False Clause 7:</label>
<input type="string" id="false7" required>
</br>
<label for="true8">True Clause 8:</label>
<input type="string" id="true8" required>
<label for="false8">False Clause 8:</label>
<input type="string" id="false8" required>
</br>
</br>
<button id="run">Calculate</button>
</br>
<p id="debug"></p>
<p id="result"></p>
<script>
function extractVariablesFromHTML() {
const inputElements = document.querySelectorAll('input[id^="true"], input[id^="false"]');
const variables = {};
for (const input of inputElements) {
const id = input.id;
const value = input.value;
variables[id] = value;
}
return variables;
}
function smallProgram() {
const extractedVariables = extractVariablesFromHTML();
const debugElement = document.getElementById("debug");
const resultElement = document.getElementById("result");
debugElement.textContent = `All collected variables: ${JSON.stringify(extractedVariables)}`;
const clauseTrue = [];
const clauseFalse = [];
let numClauses = 0;
for (let i = 1; i <= 8; i++) {
const trueValue = extractedVariables[`true${i}`];
const falseValue = extractedVariables[`false${i}`];
// Check if both values are non-empty strings
if (trueValue !== "" && falseValue !== "") {
clauseTrue.push(trueValue);
clauseFalse.push(falseValue);
numClauses++;
} else {
break; // If either value is empty, break the loop
}
}
const numTestCases = Math.pow(2, numClauses);
let result = "";
debugElement.textContent = `numTestCases: ${numTestCases}`;
for (let i = 0; i < numTestCases; i++) {
let testInput = "";
for (let n = 0; n < numClauses; n++) {
const bit = (i >> n) & 1;
const value = bit ? clauseTrue[n] : clauseFalse[n];
testInput += value + " ";
}
result += `${i+1}: ${testInput.trim()}, `; // Append each test case to the result string
}
// Display the result in the HTML
resultElement.textContent = result;
}
// Attach an event listener to the calculate button
const calculateButton = document.getElementById("run");
calculateButton.addEventListener("click", smallProgram);
</script>
</body>
</html>