JSFiddle - React, Tailwind, and code Playground
JavaScript
function encoder(min, max, val, n, w) {
const range = max - min
const bitsPerDay = Math.floor(n / range)
const offset = (val - min) * bitsPerDay
const sdr = new Array(n).fill(0)
for (let i = offset; i < offset + w; ++i) {
sdr[i % n] = 1
}
return sdr.join('')
}
console.log(encoder(1, 8, 1, 14, 3))
console.log(encoder(1, 8, 2, 14, 3))
console.log(encoder(1, 8, 3, 14, 3))
console.log(encoder(1, 8, 4, 14, 3))
console.log(encoder(1, 8, 5, 14, 3))
console.log(encoder(1, 8, 6, 14, 3))
console.log(encoder(1, 8, 7, 14, 3))