Posted to tcl by aspect at Fri Sep 21 07:48:34 GMT 2012view raw
- proc unknown {var <- args} {
- foreach term $args {
- if {$term in [list & | ( )]} {
- lappend ex $term
- } elseif {$term == "~"} {
- lappend ex !
- } else {
- lappend ex "\${$term}"
- }
- }
- set ex [join $ex " "]
- uplevel 1 "set $var \[expr {$ex}\]"
- }
- proc 3not2 {a b c} {
- proc 3not2 {a b c} {
- 111 <- a & b & c
- any <- a | b | c
- # ~a <- ~ a
- a+c <- a | c
- a&c <- a & c
- a*b <- a & b
- a+b <- a | b
- ~a*b <- ~ a*b
- a^b <- a+b & ~a*b
- abodd <- a^b
- b*c <- b & c
- b+c <- b | c
- ~b*c <- ~ b*c
- b^c <- b+c & ~b*c
- bcodd <- b^c
- notall <- ~a*b | ~b*c
- 101/010 <- abodd & bcodd
- 101 <- 101/010 & a+c
- 010 <- ~a*b & ~b*c & b
- two <- ( abodd & c ) | ( bcodd & a ) | 101
- 011 <- two & b & c
- 110 <- two & a & b
- # these three are false
- 000 <- ~a*b & ~b*c
- 001 = ~a*b & c
- 100 = ~b*c & a
- ~b <- 001 | 100 | 101
- ~a <- 000 | 001 | 010 | 011
- ~c <- 000 | 010 | 100 | 110
- foreach var [info locals] {
- dict set res $var [set $var]
- }
- return $res
- }
- set cols [list a b c two 000 001 100]
- foreach v $cols {
- puts -nonewline $v\t
- }
- puts ""
- foreach a {0 1} {
- foreach b {0 1} {
- foreach c {0 1} {
- set d [3not2 $a $b $c]
- foreach v $cols {
- puts -nonewline [expr [dict get $d $v]?1:"."]\t
- }
- puts ""
- }
- }
- }