aetheric mixer
by Anthony Weber
HTML
<div id="container"></div>
<div id="results"></div>
JavaScript
numInputs = 12
let body = document.getElementById('container')
let inputs = []
for (let i = 0; i < numInputs; i++) {
inputs[i] = document.createElement('input')
//inputs[i].type = 'number'
//inputs[i].step = 0.01
//inputs[i].min = 0.01
//inputs[i].max = 14
body.appendChild(inputs[i])
body.appendChild(document.createElement('br'))
}
let submit = document.createElement('button')
submit.innerHTML = 'figure shit out'
body.appendChild(submit)
submit.addEventListener('click', e => {
let validFields = 0
let values = []
for (let i = 0; i < numInputs; i++) {
let value = Number.parseFloat(inputs[i].value)
if (value && value > 0 && value <= 14) {
values.push(i)
} else {
break
}
}
if (values.length >= 3) doStuff(values)
})
function doStuff(values) {
//console.log(values)
let results = []
for (let i = 0; i < values.length-2; i++) {
for (let j = i+1; j < values.length-1; j++) {
for (let k = j+1; k < values.length; k++) {
let first = Number.parseFloat(inputs[i].value)
let second = Number.parseFloat(inputs[j].value)
let third = Number.parseFloat(inputs[k].value)
let result = ((first + second + third) / 3)
results.push({ids: [i, j, k], average: Math.round((result + Number.EPSILON) * 100) / 100})
//console.log(`(${first} + ${second} + ${third}) / 3 = `)
//console.log(result)
}
}
}
results = results.sort((a, b) => { return Math.abs(7-a.average) - Math.abs(7-b.average)})
output = document.getElementById("results")
output.innerHTML = ''
for (let result of results) {
output.innerHTML += JSON.stringify(result) + " - "
output.innerHTML += `${inputs[result.ids[0]].value} + ${inputs[result.ids[1]].value} + ${inputs[result.ids[2]].value} = ${result.average}`
output.innerHTML += ` scoring ${lookup(result.average)} points`
output.innerHTML += "<br>"
}
}
function...