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 = '| Функция | T0 | T1 | L | M | S |
'
-
-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)
-})