From e8a49c7e9ebdd5b084ecd9fbd835be2166bfd77e Mon Sep 17 00:00:00 2001 From: SEK1RO Date: Sun, 11 Jan 2026 16:20:59 +0300 Subject: [PATCH] movs: basis single file --- circuit/25-1/basis.html | 167 ++++++++++++++++++++++++++++++++++ circuit/25-1/basis/index.html | 22 ----- circuit/25-1/basis/index.js | 138 ---------------------------- 3 files changed, 167 insertions(+), 160 deletions(-) create mode 100644 circuit/25-1/basis.html delete mode 100644 circuit/25-1/basis/index.html delete mode 100644 circuit/25-1/basis/index.js diff --git a/circuit/25-1/basis.html b/circuit/25-1/basis.html new file mode 100644 index 0000000..86094b9 --- /dev/null +++ b/circuit/25-1/basis.html @@ -0,0 +1,167 @@ + + + + + + Document + + + + +
+ + + + diff --git a/circuit/25-1/basis/index.html b/circuit/25-1/basis/index.html deleted file mode 100644 index 73a48a0..0000000 --- a/circuit/25-1/basis/index.html +++ /dev/null @@ -1,22 +0,0 @@ - - - - - Document - - - -
- - - - diff --git a/circuit/25-1/basis/index.js b/circuit/25-1/basis/index.js deleted file mode 100644 index 6eaabcd..0000000 --- a/circuit/25-1/basis/index.js +++ /dev/null @@ -1,138 +0,0 @@ -const app = document.getElementById('app') -const func_names = ['константа 0', 'и', 'левая коимпликация', 'X', 'правая коимпликация', 'Y', 'исключающее или', 'или', 'стрелка пирса', 'эквивалентность', 'не Y', 'правая импликация', 'не X', 'левая импликация', 'штрих шеффера', 'константа 1'] - -function getTerm(num) { - return [num >> 3, num >> 2 & 1, num >> 1 & 1, num & 1] -} - -function getName(num) { - return 'F' + num + ' - ' + func_names[num] -} - -function isT0(num) { - const term = getTerm(num) - return term[0] == 0 -} - -function isT1(num) { - const term = getTerm(num) - return term[3] == 1 -} - -function isL(num) { - const term = getTerm(num) - return (term[0] ^ term[1] ^ term[2] ^ term[3]) == 0 -} - -function isM(num) { - const term = getTerm(num) - return term[0] <= term[1] && term[1] <= term[2] && term[2] <= term[3] -} - -function isS(num) { - const term = getTerm(num) - return term[0] == !term[3] && term[1] == !term[2] -} - -const row_func = [isT0, isT1, isL, isM, isS] -const table = document.createElement('table') -table.innerHTML = 'ФункцияT0T1LMS' - -const bitclasses = [] - -for (let i = 0; i < 16; i++) { - bitclasses.push(0) - const tr = document.createElement('tr') - const td = document.createElement('td') - td.innerHTML = getName(i) - td.style.textAlign = 'left' - tr.appendChild(td) - - for (let j = 0; j < 5; j++) { - bitclasses[i] |= row_func[j](i) << j - const td = document.createElement('td') - td.innerText = row_func[j](i) ? '+' : '' - tr.appendChild(td) - } - - table.appendChild(tr) -} - -app.appendChild(table) - -function forEachSubset(arr, callback) { - for (let i = 0n; i < 2n ** BigInt(arr.length); i++) { - const subset = [] - let bitset = i - let pos = 0n - - while (bitset > 0n) { - if (bitset & 1n) { - subset.push(arr[pos]) - } - bitset >>= 1n - pos++ - } - - callback(subset) - } -} - -const indexes = new Array(16).fill(0) -indexes.forEach((v, i, a) => { a[i] = i }) - -const basis = [] -forEachSubset(indexes, (subset) => { - for (let skipped_i = 0; skipped_i < subset.length; skipped_i++) { - let bitclass = 2 ** 5 - 1 - - for (let i = 0; i < subset.length; i++) { - if (i == skipped_i) { - continue - } - - bitclass &= bitclasses[subset[i]] - } - if (bitclass == 0) { - return - } - } - - let bitclass = 2 ** 5 - 1 - - for (const index of subset) { - bitclass &= bitclasses[index] - } - if (bitclass != 0) { - return - } - - basis.push(subset) -}) - -basis.sort((a, b) => { return a.length - b.length }) -let len -let ul -basis.forEach((basis) => { - if (basis.length != len || ul === undefined) { - len = basis.length - - const h = document.createElement('h3') - h.innerText = 'Базисы размера ' + len - app.appendChild(h) - - ul = document.createElement('ul') - app.appendChild(ul) - } - - const li = document.createElement('li') - const inner_ul = document.createElement('ul') - - for (const index of basis) { - const inner_li = document.createElement('li') - inner_li.innerText = getName(index) - inner_ul.appendChild(inner_li) - } - li.appendChild(inner_ul) - ul.appendChild(li) -})