le has asked for the wisdom of the Perl Monks concerning the following question:
Hi,
it's been a long time since I posted my last question here, but I've started my studies of CS and don't find a lot of time anymore.
Well, one of our first courses at the university is called "Introduction to programming" where we do stuff in Modula2 (yeah). I always felt like "Hey how easy could this be done in Perl", but I resisted to annotate my thoughts in a comment in the source code :)
One of the first examples we had to solve was the simplification of a boolean expression. The input looks like this
Now boolean algebra says that one can simplify this expression if and only if the two partial expressions differ in just one negated variable, so the solution for the above example would be:
So I want to know if you guys (and ladies of course) can give a quick hack for this. (My Modula2 programm was 202 lines long, prettyformatted.)
it's been a long time since I posted my last question here, but I've started my studies of CS and don't find a lot of time anymore.
Well, one of our first courses at the university is called "Introduction to programming" where we do stuff in Modula2 (yeah). I always felt like "Hey how easy could this be done in Perl", but I resisted to annotate my thoughts in a comment in the source code :)
One of the first examples we had to solve was the simplification of a boolean expression. The input looks like this
which aliases two boolean expressions. The terms inside the expressions are ANDed together, and the two expressions are ORed together (a negation is expressed with ""), which means that the above string would be(abdc)(adcb)
(a AND b AND d AND c) OR (a AND d AND c AND NOT b)
Now boolean algebra says that one can simplify this expression if and only if the two partial expressions differ in just one negated variable, so the solution for the above example would be:
The specification for this example was rather strict:(adc)
 Each variable inside an expression may only occur once (the allowed characters were a..z, "(", ")" and "")
 If the expression could be simplified do so, else print something like "CANNOT BE SIMPLIFIED"
 If the input is wrong, print something like "WRONG INPUT"
 If the expression can be simplified, the solution was the first partial expression minus the differing variable.
 The order of variables in the output string had to be the same as the input string.
 If the two partial expressions are the same, the result is the first partial expression.
So I want to know if you guys (and ladies of course) can give a quick hack for this. (My Modula2 programm was 202 lines long, prettyformatted.)


Replies are listed 'Best First'.  

Re: Boolean algebra
by chromatic (Archbishop) on Nov 13, 2000 at 09:33 UTC  
by le (Friar) on Nov 13, 2000 at 17:57 UTC  
Re: Boolean algebra
by snowcrash (Friar) on Nov 13, 2000 at 12:15 UTC  
by le (Friar) on Nov 13, 2000 at 17:54 UTC  
Re: Boolean algebra
by merlyn (Sage) on Nov 13, 2000 at 18:14 UTC  
by le (Friar) on Nov 13, 2000 at 18:41 UTC  
by merlyn (Sage) on Nov 13, 2000 at 18:52 UTC  
by le (Friar) on Nov 13, 2000 at 19:09 UTC 
Back to
Seekers of Perl Wisdom