наивный
кодировщик Хэмминга
выводятся колонки:
двоичный код | его десятичное представление | кодируемое число
N = 64 означает 6-битное слово, N = 256 - 8-битное
M = 3 - число бит, в котором каждый код отличается от остальных
экспериментируй c ними, не стесняйся.
function diff(a, b) {
return (a ^= b).toString(2).replace('0', '').length
}
const N = 64, M = 3, res = [];
for (let i = 0; i < N; i++) {
let flag = true;
for (let n of res) {
if (diff(i, n) < M) {
flag = false
break;
}
}
if (flag) {
console.log((i + N).toString(2).slice(1), i, res.length);
res.push(i);
}
}