Truth table: Difference between revisions

Content added Content deleted
mNo edit summary
No edit summary
Line 2,875: Line 2,875:


Thank you</pre>
Thank you</pre>

=={{header|R}}==

<lang r>
truth_table <- function(x) {
vars <- unlist(strsplit(x, "[^a-zA-Z]+"))
perm <- data.frame(expand.grid(rep(list(c(TRUE, FALSE)), length(vars))))
names(perm) <- vars
perm[ , x] <- with(perm, eval(parse(text = x)))
perm
}

"%^%" <- xor # define unary xor operator

truth_table("A | B")
## A B A | B
## 1 TRUE TRUE TRUE
## 2 FALSE TRUE TRUE
## 3 TRUE FALSE TRUE
## 4 FALSE FALSE FALSE

truth_table("A & B")
## A B A & B
## 1 TRUE TRUE TRUE
## 2 FALSE TRUE FALSE
## 3 TRUE FALSE FALSE
## 4 FALSE FALSE FALSE

truth_table("A %^% B")
## A B A %^% B
## 1 TRUE TRUE FALSE
## 2 FALSE TRUE TRUE
## 3 TRUE FALSE TRUE
## 4 FALSE FALSE FALSE

truth_table("S | ( T %^% U )")
## S T U S | ( T %^% U )
## 1 TRUE TRUE TRUE TRUE
## 2 FALSE TRUE TRUE FALSE
## 3 TRUE FALSE TRUE TRUE
## 4 FALSE FALSE TRUE TRUE
## 5 TRUE TRUE FALSE TRUE
## 6 FALSE TRUE FALSE TRUE
## 7 TRUE FALSE FALSE TRUE
## 8 FALSE FALSE FALSE FALSE

truth_table("A %^% (B %^% (C %^% D))")
## A B C D A %^% (B %^% (C %^% D))
## 1 TRUE TRUE TRUE TRUE FALSE
## 2 FALSE TRUE TRUE TRUE TRUE
## 3 TRUE FALSE TRUE TRUE TRUE
## 4 FALSE FALSE TRUE TRUE FALSE
## 5 TRUE TRUE FALSE TRUE TRUE
## 6 FALSE TRUE FALSE TRUE FALSE
## 7 TRUE FALSE FALSE TRUE FALSE
## 8 FALSE FALSE FALSE TRUE TRUE
## 9 TRUE TRUE TRUE FALSE TRUE
## 10 FALSE TRUE TRUE FALSE FALSE
## 11 TRUE FALSE TRUE FALSE FALSE
## 12 FALSE FALSE TRUE FALSE TRUE
## 13 TRUE TRUE FALSE FALSE FALSE
## 14 FALSE TRUE FALSE FALSE TRUE
## 15 TRUE FALSE FALSE FALSE TRUE
## 16 FALSE FALSE FALSE FALSE FALSE
</lang>


=={{header|Racket}}==
=={{header|Racket}}==