Skip to content

Commit

Permalink
Merge pull request #16 from eliascarv/columns
Browse files Browse the repository at this point in the history
Update column generation
  • Loading branch information
eliascarv authored May 17, 2022
2 parents 3d22b5d + 9cce04c commit 1f7cf1d
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 60 deletions.
40 changes: 20 additions & 20 deletions src/macro.jl
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ TruthTable
│ p │ q │ p ∨ q │
├───────┼───────┼───────┤
│ true │ true │ true │
│ false │ true │ true │
│ true │ false │ true │
│ false │ true │ true │
│ false │ false │ false │
└───────┴───────┴───────┘
Expand All @@ -110,12 +110,12 @@ TruthTable
│ p │ q │ r │ p ∧ (¬q ∨ r) │
├───────┼───────┼───────┼──────────────┤
│ true │ true │ true │ true │
│ false │ true │ true │ false │
│ true │ false │ true │ true │
│ false │ false │ true │ false │
│ true │ true │ false │ false │
│ false │ true │ false │ false
true │ false │ true │ true
│ true │ false │ false │ true │
│ false │ true │ true │ false │
│ false │ true │ false │ false │
│ false │ false │ true │ false │
│ false │ false │ false │ false │
└───────┴───────┴───────┴──────────────┘
Expand All @@ -125,12 +125,12 @@ TruthTable
│ p │ q │ r │ ¬q │ ¬q ∨ r │ p ∧ (¬q ∨ r) │
├───────┼───────┼───────┼───────┼────────┼──────────────┤
│ true │ true │ true │ false │ true │ true │
│ false │ true │ true │ false │ true │ false │
│ true │ false │ true │ true │ true │ true │
│ false │ false │ true │ true │ true │ false │
│ true │ true │ false │ false │ false │ false │
│ false │ true │ false │ false │ false │ false
true │ false │ true │ true │ true │ true
│ true │ false │ false │ true │ true │ true │
│ false │ true │ true │ false │ true │ false │
│ false │ true │ false │ false │ false │ false │
│ false │ false │ true │ true │ true │ false │
│ false │ false │ false │ true │ true │ false │
└───────┴───────┴───────┴───────┴────────┴──────────────┘
Expand All @@ -140,12 +140,12 @@ TruthTable
│ p │ q │ r │ p ∨ q <--> r │
├───────┼───────┼───────┼──────────────┤
│ true │ true │ true │ true │
│ false │ true │ true │ true │
│ true │ false │ true │ true │
│ false │ false │ true │ false │
│ true │ true │ false │ false │
│ false │ true │ false │ false
true │ false │ true │ true
│ true │ false │ false │ false │
│ false │ true │ true │ true │
│ false │ true │ false │ false │
│ false │ false │ true │ false │
│ false │ false │ false │ true │
└───────┴───────┴───────┴──────────────┘
Expand All @@ -155,12 +155,12 @@ TruthTable
│ p │ q │ r │ p ∨ q │ p ∨ q <--> r │
├───────┼───────┼───────┼───────┼──────────────┤
│ true │ true │ true │ true │ true │
│ false │ true │ true │ true │ true │
│ true │ false │ true │ true │ true │
│ false │ false │ true │ false │ false │
│ true │ true │ false │ true │ false │
false │ true │ false │ true │ false
│ true │ false │ true │ true │ true
│ true │ false │ false │ true │ false │
│ false │ true │ true │ true │ true │
│ false │ true │ false │ true │ false │
│ false │ false │ true │ false │ false │
│ false │ false │ false │ false │ true │
└───────┴───────┴───────┴───────┴──────────────┘
```
Expand All @@ -175,9 +175,9 @@ end

function _truthtable(expr::Expr, full::Bool)
colnames = propnames(expr)
bools = fill([true, false], length(colnames))
rows = Iterators.product(bools...)
columns = [vec([row[i] for row in rows]) for i in eachindex(colnames)]
n = length(colnames)
rows = Iterators.product(fill([true, false], n)...)
columns = [vec([row[i] for row in rows]) for i in n:-1:1]
colexprs = Expr[]

if full
Expand Down
8 changes: 4 additions & 4 deletions src/showmode.jl
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ TruthTable
│ p │ q │ p ∧ q │
├───────┼───────┼───────┤
│ true │ true │ true │
│ false │ true │ false │
│ true │ false │ false │
│ false │ true │ false │
│ false │ false │ false │
└───────┴───────┴───────┘
Expand All @@ -34,8 +34,8 @@ TruthTable
│ p │ q │ p ∧ q │
├───┼───┼───────┤
│ 1 │ 1 │ 1 │
│ 0 │ 1 │ 0 │
│ 1 │ 0 │ 0 │
│ 0 │ 1 │ 0 │
│ 0 │ 0 │ 0 │
└───┴───┴───────┘
Expand All @@ -48,8 +48,8 @@ TruthTable
│ p │ q │ p ∧ q │
├───┼───┼───────┤
│ T │ T │ T │
│ F │ T │ F │
│ T │ F │ F │
│ F │ T │ F │
│ F │ F │ F │
└───┴───┴───────┘
Expand All @@ -62,8 +62,8 @@ TruthTable
│ p │ q │ p ∧ q │
├───────┼───────┼───────┤
│ true │ true │ true │
│ false │ true │ false │
│ true │ false │ false │
│ false │ true │ false │
│ false │ false │ false │
└───────┴───────┴───────┘
```
Expand Down
72 changes: 36 additions & 36 deletions test/runtests.jl
Original file line number Diff line number Diff line change
Expand Up @@ -44,28 +44,28 @@ using TruthTables: TruthTable

@testset "@truthtable" begin
tt = @truthtable p || q
@test Tables.getcolumn(tt, 1) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, 2) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, 1) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, 2) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, 3) == Bool[1, 1, 1, 0]
@test Tables.getcolumn(tt, :p) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, :q) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, :p) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, :q) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, Symbol("p ∨ q")) == Bool[1, 1, 1, 0]

tt = @truthtable !(x || y) <--> (!x && !y) full=true
@test Tables.getcolumn(tt, 1) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, 2) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, 1) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, 2) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, 3) == Bool[1, 1, 1, 0]
@test Tables.getcolumn(tt, 4) == Bool[0, 0, 0, 1]
@test Tables.getcolumn(tt, 5) == Bool[0, 1, 0, 1]
@test Tables.getcolumn(tt, 6) == Bool[0, 0, 1, 1]
@test Tables.getcolumn(tt, 5) == Bool[0, 0, 1, 1]
@test Tables.getcolumn(tt, 6) == Bool[0, 1, 0, 1]
@test Tables.getcolumn(tt, 7) == Bool[0, 0, 0, 1]
@test Tables.getcolumn(tt, 8) == Bool[1, 1, 1, 1]
@test Tables.getcolumn(tt, :x) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, :y) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, :x) == Bool[1, 1, 0, 0]
@test Tables.getcolumn(tt, :y) == Bool[1, 0, 1, 0]
@test Tables.getcolumn(tt, Symbol("x ∨ y")) == Bool[1, 1, 1, 0]
@test Tables.getcolumn(tt, Symbol("¬(x ∨ y)")) == Bool[0, 0, 0, 1]
@test Tables.getcolumn(tt, Symbol("¬x")) == Bool[0, 1, 0, 1]
@test Tables.getcolumn(tt, Symbol("¬y")) == Bool[0, 0, 1, 1]
@test Tables.getcolumn(tt, Symbol("¬x")) == Bool[0, 0, 1, 1]
@test Tables.getcolumn(tt, Symbol("¬y")) == Bool[0, 1, 0, 1]
@test Tables.getcolumn(tt, Symbol("¬x ∧ ¬y")) == Bool[0, 0, 0, 1]
@test Tables.getcolumn(tt, Symbol("¬(x ∨ y) <--> ¬x ∧ ¬y")) == Bool[1, 1, 1, 1]
end
Expand All @@ -82,12 +82,12 @@ using TruthTables: TruthTable
│ p │ q │ r │ p ∧ (q ∨ r) │
├───────┼───────┼───────┼─────────────┤
│ true │ true │ true │ true │
│ false │ true │ true │ false │
│ true │ false │ true │ true │
│ false │ false │ true │ false │
│ true │ true │ false │ true │
│ false │ true │ false │ false
true │ false │ true │ true
│ true │ false │ false │ false │
│ false │ true │ true │ false │
│ false │ true │ false │ false │
│ false │ false │ true │ false │
│ false │ false │ false │ false │
└───────┴───────┴───────┴─────────────┘"""
@test sprint(show, tt) == str
Expand All @@ -100,12 +100,12 @@ using TruthTables: TruthTable
│ p │ q │ r │ p ∧ (q ∨ r) │
├───┼───┼───┼─────────────┤
│ 1 │ 1 │ 1 │ 1 │
│ 0 │ 1 │ 1 │ 0 │
│ 1 │ 0 │ 1 │ 1 │
│ 0 │ 0 │ 1 │ 0 │
│ 1 │ 1 │ 0 │ 1 │
0100
1011
│ 1 │ 0 │ 0 │ 0 │
│ 0 │ 1 │ 1 │ 0 │
│ 0 │ 1 │ 0 │ 0 │
│ 0 │ 0 │ 1 │ 0 │
│ 0 │ 0 │ 0 │ 0 │
└───┴───┴───┴─────────────┘"""
@test sprint(show, tt) == str
Expand All @@ -118,12 +118,12 @@ using TruthTables: TruthTable
│ p │ q │ r │ p ∧ (q ∨ r) │
├───┼───┼───┼─────────────┤
│ T │ T │ T │ T │
│ F │ T │ T │ F │
│ T │ F │ T │ T │
│ F │ F │ T │ F │
│ T │ T │ F │ T │
FTFF
TFTT
│ T │ F │ F │ F │
│ F │ T │ T │ F │
│ F │ T │ F │ F │
│ F │ F │ T │ F │
│ F │ F │ F │ F │
└───┴───┴───┴─────────────┘"""
@test sprint(show, tt) == str
Expand All @@ -137,12 +137,12 @@ using TruthTables: TruthTable
│ p │ q │ r │ q ∨ r │ p ∧ (q ∨ r) │
├───────┼───────┼───────┼───────┼─────────────┤
│ true │ true │ true │ true │ true │
│ false │ true │ true │ true │ false │
│ true │ false │ true │ true │ true │
│ false │ false │ true │ true │ false │
│ true │ true │ false │ true │ true │
false │ true │ false │ true │ false
│ true │ false │ true │ true │ true
│ true │ false │ false │ false │ false │
│ false │ true │ true │ true │ false │
│ false │ true │ false │ true │ false │
│ false │ false │ true │ true │ false │
│ false │ false │ false │ false │ false │
└───────┴───────┴───────┴───────┴─────────────┘"""
@test sprint(show, tt) == str
Expand All @@ -155,12 +155,12 @@ using TruthTables: TruthTable
│ p │ q │ r │ q ∨ r │ p ∧ (q ∨ r) │
├───┼───┼───┼───────┼─────────────┤
│ 1 │ 1 │ 1 │ 1 │ 1 │
│ 0 │ 1 │ 1 │ 1 │ 0 │
│ 1 │ 0 │ 1 │ 1 │ 1 │
│ 0 │ 0 │ 1 │ 1 │ 0 │
│ 1 │ 1 │ 0 │ 1 │ 1 │
010 │ 1 │ 0
101 │ 1 │ 1
│ 1 │ 0 │ 0 │ 0 │ 0 │
│ 0 │ 1 │ 1 │ 1 │ 0 │
│ 0 │ 1 │ 0 │ 1 │ 0 │
│ 0 │ 0 │ 1 │ 1 │ 0 │
│ 0 │ 0 │ 0 │ 0 │ 0 │
└───┴───┴───┴───────┴─────────────┘"""
@test sprint(show, tt) == str
Expand All @@ -173,12 +173,12 @@ using TruthTables: TruthTable
│ p │ q │ r │ q ∨ r │ p ∧ (q ∨ r) │
├───┼───┼───┼───────┼─────────────┤
│ T │ T │ T │ T │ T │
│ F │ T │ T │ T │ F │
│ T │ F │ T │ T │ T │
│ F │ F │ T │ T │ F │
│ T │ T │ F │ T │ T │
FTF │ T │ F
TFT │ T │ T
│ T │ F │ F │ F │ F │
│ F │ T │ T │ T │ F │
│ F │ T │ F │ T │ F │
│ F │ F │ T │ T │ F │
│ F │ F │ F │ F │ F │
└───┴───┴───┴───────┴─────────────┘"""
@test sprint(show, tt) == str
Expand Down

0 comments on commit 1f7cf1d

Please sign in to comment.