Problem 221. Boolean algebra
Your contractor from Elbonia has sent you the prototype of the new logical unit. It turns out that the only logical relation it understands is "nand":
nand(a,b) := ~(a&b)
Your team has been developing code using the usual logical operators following MATLAB syntax: ~,& and |. To save the project you need to write a translator that expresses MATLAB logical expressions using only the nand function.
Input
- expr: a string containing a valid logical expression in MATLAB, that relates the two logical variables a and b
Output
- out: a string containing an equivalent logical expression that may only use the function nand(a,b).
Example 1:
expr = 'a|(~b)' =>out = 'nand(nand(a,a),b)'
Example 2:
expr = '(a & ~a) | ~(a|b)' =>out = 'nand(nand(nand(a,a),nand(b,b)),nand(nand(a,a),nand(b,b)))'
Remarks:
It is not necessary to provide the shortest solution. A solution always exists. The input string is non-empty and always evaluates to true or false, if a and b are logical variables. All substrings in the output that are not 'a','b','0','1','true','false','(',')' or'nand' will be ignored.
Solution Stats
Problem Comments
Solution Comments
Show commentsProblem Recent Solvers9
Suggested Problems
-
Matrix indexing with two vectors of indices
721 Solvers
-
1210 Solvers
-
Matrix with different incremental runs
499 Solvers
-
302 Solvers
-
Magic is simple (for beginners)
9144 Solvers
More from this Author7
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!