This console program will create a Finite State Automata which takes in a binary number as an input and outputs the remainder. Although not possible in this specific program (dividing by 3), if a result state does not exist in the list of final states, "Invalid Input" will be returned.
Assumptions: The input string has a length of at least 1 character and will only comprise of 1s and 0s. The input string is of a reasonable size (less than the maximum length of an Int32)
To run the program, either open the project in Visual Studio (tested in 2012) and click the "Start" button on the top toolbar, or download the BPIProjectFSA.zip file, unzip with 7zip (or any other zip tool) and run the exe.
This program took me approximately 2-3 hours to write.