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
Output
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.
721 Solvers
173 Solvers
Maintain shape of logical-index mask
53 Solvers
Matrix which contains the values of an other matrix A at the given locations.
196 Solvers
Set the array elements whose value is 13 to 0
753 Solvers
Solution 25396
Electrical Engineering Eduction FTW!
Nice! And since the eval-block, it's the only working solution for this problem so far.
Apparently they blocked inline too now :(