Posted to tcl by aspect at Fri Sep 21 07:48:34 GMT 2012view pretty
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 "" } } }