Main Page | Modules | Alphabetical List | Compound List | File List | Compound Members | Related Pages

testChristmasTree.cpp

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,1);
00026         machine.add_move_transition(0,1, turing_machine<unsigned short>::left, 3);
00027         machine.add_move_transition(1,0, turing_machine<unsigned short>::left, 0);
00028         machine.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00029         machine.add_move_transition(2,0, turing_machine<unsigned short>::left, 3);
00030         machine.add_move_transition(2,1, turing_machine<unsigned short>::right, 1);
00031         machine.add_move_transition(3,1, turing_machine<unsigned short>::left, 0);
00032 
00033         if(alternateChristmasTree(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, 0);
00042         machine2.add_move_transition(1,0, turing_machine<unsigned short>::left, 0);
00043         machine2.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00044         machine2.add_write_transition(2,0,1,0);
00045         machine2.add_move_transition(2,1, turing_machine<unsigned short>::right, 3);
00046         machine2.add_move_transition(3,1, turing_machine<unsigned short>::right, 1);
00047 
00048         if(alternateChristmasTree(machine2, 500))
00049                 std::cout << "yes" << std::endl;
00050 
00051         turing_machine<unsigned short> machine3(5,0);
00052 
00053         machine3.set_halt_state(4);
00054 
00055         machine3.add_write_transition(0,0,1,1);
00056         machine3.add_move_transition(0,1, turing_machine<unsigned short>::left, 0);
00057         machine3.add_move_transition(1,1, turing_machine<unsigned short>::right, 2);
00058         machine3.add_move_transition(2,0, turing_machine<unsigned short>::right, 3);
00059         machine3.add_move_transition(2,1, turing_machine<unsigned short>::right, 3);
00060         machine3.add_write_transition(3,0,1,0);
00061         machine3.add_move_transition(3,1, turing_machine<unsigned short>::right, 1);
00062 
00063         if(alternateChristmasTree(machine3, 1000))
00064                 std::cout << "yes" << std::endl;
00065 
00066         turing_machine<unsigned short> machine4(6,0);
00067 
00068         machine4.set_halt_state(5);
00069 
00070         machine4.add_write_transition(0,0,1,0);
00071         machine4.add_move_transition(0,1, turing_machine<unsigned short>::right, 1);
00072         machine4.add_move_transition(1,0, turing_machine<unsigned short>::right, 2);
00073         machine4.add_move_transition(1,1, turing_machine<unsigned short>::left, 4);
00074         machine4.add_write_transition(2,0,1,3);
00075         machine4.add_write_transition(3,0,1,1);
00076         machine4.add_move_transition(3,1, turing_machine<unsigned short>::right, 3);
00077         machine4.add_move_transition(4,0, turing_machine<unsigned short>::right, 3);
00078         machine4.add_move_transition(4,1, turing_machine<unsigned short>::left, 4);
00079 
00080         if(christmasTree(machine4, 1000))
00081                 std::cout << "yes" << std::endl;
00082         else
00083                 std::cout << "no" << std::endl;
00084 
00085         return 0;
00086 }

Generated on Thu Nov 20 00:17:32 2003 for BusyBeaver by doxygen 1.3.3