Skip to content

Instantly share code, notes, and snippets.

@serega6531
Last active November 11, 2017 19:31
Show Gist options
  • Save serega6531/f5e54e5bcc976232cc1c443d472e6993 to your computer and use it in GitHub Desktop.
Save serega6531/f5e54e5bcc976232cc1c443d472e6993 to your computer and use it in GitHub Desktop.
Программа для подсчета многочлена Жегалкина по столбцу значений функции из таблицы истинности
var a = []; // column - row
var varsCount = 4;
var fvals = '1000010111001011'; // сюда вставить столбец значений функции из таблицы истиности
if (Math.pow(2, varsCount) != fvals.length) {
console.log('Wrong fvals length');
return;
}
for (var i = 0; i < fvals.length; i++) {
a[i] = [];
}
for (var i = 0; i < fvals.length; i++) {
a[0][i] = Number(fvals[i]);
}
for (var i = 1; i < fvals.length; i++) {
for (var j = 0; j < fvals.length - i; j++) {
a[i][j] = a[i - 1][j] ^ a[i - 1][j + 1];
}
}
var parts = [];
for (var i = 0; i < fvals.length; i++) {
if (a[i][0] == 1) {
parts.push(numberToVars(i, varsCount));
}
}
parts.sort(function(a, b) {
if (a.length != b.length) {
return a.length - b.length;
} else {
for (var i = 0; i < a.length; i++) {
if (a.charCodeAt(i) != b.charCodeAt(i))
return a.charCodeAt(i) - b.charCodeAt(i);
}
}
});
console.log(parts.join(' xor '));
function numberToVars(number, varsCount) {
if (number == 0)
return "1";
var s = decToBin(number);
for (var i = s.length; i < varsCount; i++) {
s = "0" + s;
}
var res = "";
for (var i = 0; i < s.length; i++) {
if (s[i] == '1')
res += String.fromCharCode("A".charCodeAt(0) + i);
}
return res;
}
function decToBin(dec) {
return (dec >>> 0).toString(2);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment