00001 #include <fstream> 00002 #include <iostream> 00003 #include <iterator> 00004 #include <list> 00005 #include <vector> 00006 00007 #include "stats.hpp" 00008 tm_stats g_counter, c_counter; 00009 00010 #include "infinite_tape.hpp" 00011 #include "long_int.hpp" 00012 #include "state.hpp" 00013 #include "turing_machine.hpp" 00014 #include "non_halt_detection.hpp" 00015 #include "non_halt_data_structures.hpp" 00016 #include "machine_storage.hpp" 00017 #include "watch.hpp" 00018 00019 int main() 00020 { 00021 turing_machine<unsigned short> machine(5,0); 00022 00023 machine.set_halt_state(4); 00024 00025 machine.add_write_transition(0,0,1,0); 00026 machine.add_move_transition(0,1, turing_machine<unsigned short>::right, 1); 00027 machine.add_move_transition(1,0, turing_machine<unsigned short>::left, 2); 00028 machine.add_move_transition(1,1, turing_machine<unsigned short>::right, 3); 00029 machine.add_move_transition(2,1, turing_machine<unsigned short>::left, 3); 00030 machine.add_write_transition(3,0,1,0); 00031 machine.add_write_transition(3,1,0,1); 00032 00033 if(christmasTree(machine, 500)) 00034 std::cout << "yes" << std::endl; 00035 00036 turing_machine<unsigned short> machine2(5,0); 00037 00038 machine2.set_halt_state(4); 00039 00040 machine2.add_write_transition(0,0,1,1); 00041 machine2.add_move_transition(0,1, turing_machine<unsigned short>::left, 2); 00042 machine2.add_write_transition(1,0,1,0); 00043 machine2.add_move_transition(1,1, turing_machine<unsigned short>::right, 1); 00044 machine2.add_write_transition(2,0,1,1); 00045 machine2.add_move_transition(2,1, turing_machine<unsigned short>::left, 3); 00046 machine2.add_move_transition(3,0, turing_machine<unsigned short>::left, 1); 00047 00048 if(christmasTree(machine2, 500)) 00049 std::cout << "yes" << std::endl; 00050 00051 return 0; 00052 }