Data update

This commit is contained in:
Ingy döt Net 2024-07-13 15:19:22 -07:00
parent 29a5eea0d4
commit 5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions

View file

@ -1,5 +1,4 @@
trit = {false: 'F', maybe: 'U', true: 'T'}
nand = (a, b) => (a == trit.false || b == trit.false) ? trit.true : (a == trit.maybe || b == trit.maybe) ? trit.maybe : trit.false
nand = (a, b) => (a == false || b == false) ? true : (a == undefined || b == undefined) ? undefined : false
not = (a) => nand(a, a)
and = (a, b) => not(nand(a, b))
or = (a, b) => nand(not(a), not(b))

View file

@ -1,15 +1,15 @@
trit = [false, undefined, true]
functor = {nand, and, or, nor, implies, iff, xor}
display = {nand: '⊼', and: '∧', or: '', nor: '⊽', implies: '⇒', iff: '⇔', xor: '⊻', not: '¬'}
values = Object.values(trit)
display = {nand: '⊼', and: '∧', or: '', nor: '⊽', implies: '→', iff: '↔', xor: '⊻', not: '¬', false: 'F', undefined: '?', true: 'T'}
log = 'NOT\n';
for (let a of values) log += `${display.not}${a} = ${a}\n`
for (let a of trit) log += `${display.not}${display[a]} = ${display[not(a)]}\n`
log += '\nNAND AND OR NOR IMPLIES IFF XOR'
for (let a of values) {
for (let b of values) {
log += '\nNAND AND OR NOR IMPLIES IFF XOR'
for (let a of trit) {
for (let b of trit) {
log += "\n"
for (let op in functor) log += `${a} ${display[op]} ${b} = ${functor[op](a, b)} `
for (let op in functor) log += `${display[a]} ${display[op]} ${display[b]} = ${display[functor[op](a, b)]} `
}
}
console.log(log)

View file

@ -1,15 +1,15 @@
NOT
¬F = F
¬U = U
¬T = T
¬F = T
¬? = ?
¬T = F
NAND AND OR NOR IMPLIES IFF XOR
F F = T F F = F F F = F F F = T F F = T F F = T F F = F
F U = T F U = F F U = U F U = U F U = T F U = U F U = U
F T = T F T = F F T = T F T = F F T = T F T = F F T = T
U F = T U F = F U F = U U F = U U F = U U F = U U F = U
U U = U U U = U U U = U U U = U U U = U U U = U U U = U
U T = U U T = U U T = T U T = F U T = T U T = U U T = U
T F = T T F = F T F = T T F = F T F = F T F = F T F = T
T U = U T U = U T U = T T U = F T U = U T U = U T U = U
T T = F T T = T T T = T T T = F T T = T T T = T T T = F
NAND AND OR NOR IMPLIES IFF XOR
F F = T F F = F F F = F F F = T F F = T F F = T F F = F
F ? = T F ? = F F ? = ? F ? = ? F ? = T F ? = ? F ? = ?
F T = T F T = F F T = T F T = F F T = T F T = F F T = T
? F = T ? F = F ? F = ? ? F = ? ? F = ? ? F = ? ? F = ?
? ? = ? ? ? = ? ? ? = ? ? ? = ? ? ? = ? ? ? = ? ? ? = ?
? T = ? ? T = ? ? T = T ? T = F ? T = T ? T = ? ? T = ?
T F = T T F = F T F = T T F = F T F = F T F = F T F = T
T ? = ? T ? = ? T ? = T T ? = F T ? = ? T ? = ? T ? = ?
T T = F T T = T T T = T T T = F T T = T T T = T T T = F

View file

@ -1,56 +1,56 @@
# borrowing null for "maybe"
val .trSet = [false, null, true]
val trSet = [false, null, true]
val .and = fn(.a, .b) switch[and] .a, .b {
val tand = fn a, b: switch[and] a, b {
case true, null:
case null, true:
case null: null
default: .a and .b
default: a and b
}
val .or = fn(.a, .b) switch[and] .a, .b {
val tor = fn a, b: switch[and] a, b {
case false, null:
case null, false:
case null: null
default: .a or .b
default: a or b
}
val .imply = fn(.a, .b) if(.a nor .b: not? .a; .b)
val imply = fn a, b: if(a nor b: not? a; b)
# formatting function for the result values
# replacing null with "maybe"
# using left alignment of 5 code points
val .F = fn(.r) $"\{nn [.r, "maybe"]:-5}"
val F = fn r: "{{nn([r, "maybe"]):-5}}"
writeln "a not a"
for .a in .trSet {
writeln $"\.a:.F; \(not? .a:.F)"
for a in trSet {
writeln "{{a:fn F}} {{not? a:fn F}}"
}
writeln "\na b a and b"
for .a in .trSet {
for .b in .trSet {
writeln $"\.a:.F; \.b:.F; \.and(.a, .b):.F;"
for a in trSet {
for b in trSet {
writeln "{{a:fn F}} {{b:fn F}} {{tand(a, b):fn F}}"
}
}
writeln "\na b a or b"
for .a in .trSet {
for .b in .trSet {
writeln $"\.a:.F; \.b:.F; \.or(.a, .b):.F;"
for a in trSet {
for b in trSet {
writeln "{{a:fn F}} {{b:fn F}} {{tor(a, b):fn F}}"
}
}
writeln "\na b a implies b"
for .a in .trSet {
for .b in .trSet {
writeln $"\.a:.F; \.b:.F; \.imply(.a, .b):.F;"
for a in trSet {
for b in trSet {
writeln "{{a:fn F}} {{b:fn F}} {{imply(a, b):fn F}}"
}
}
writeln "\na b a eq b"
for .a in .trSet {
for .b in .trSet {
writeln $"\.a:.F; \.b:.F; \.a ==? .b:.F;"
for a in trSet {
for b in trSet {
writeln "{{a:fn F}} {{b:fn F}} {{a ==? b:fn F}}"
}
}