Design and test Turing machines to solve the following problems. Submit a your transition tables or a scan of your state-and-transition diagrams with short comments saying the purpose of each part, with your .tm files and an indication of what the expected input format is. Apart from start and stop, I recommend that you use different state names in each of your machine designs. That way it becomes very easy to join a number of smaller machines together to perform a larger task. Just like the sensible use of functions in normal programming. Whenever I say number, assume I mean positive integer in binary. A. Subtract one from a number (don't worry about zero). B. Find out whether a number is equal to zero or not. How to reveal the answer: maybe have two stop states called stop-yes and stop-no. C. Reverse a number, so #1110011110# becomes #0111100111# D. Add two numbers together the easy but boringly slow way - repeatedly increment one number and decrement the other until it is reduced to zero. E. Add two numbers together the good and sensible way, do it digit by digit as you would normally perform binary addition, creating the sum as a new third number. When finished, restore the two original numbers to their original state. e.g. #101#110# becomes #101#110#1011# (5+6=11)