icono letras

Lenguaje C--

Máquina de Turing en C--

Color:
    /* * Programa en C-- para ejecutar un procedimiento definido * como máquina de Turing. La máquina se define con quíntuplas * del siguiente modo: * * {mc, s, s2, m, mcf} donde: * mc - m-configuration actual. * s - símbolo leído. * s2 - símbolo escrito. * m - movimiento. * mcf - m-configuración a la que se pasa. */ #include cmmstd #define MOVE 1 /* Definición de la máquina. Este ejemplo ejecuta la primera máquina * de la sección 3 del 'On computable numbers' del maestro Turing, * que computa la secuencia 010101... */ unsigned int tmachine[] = {1, 0, '0', 'R', 2, 2, 0, '0', 'R', 3, 3, 0, '1', 'R', 4, 4, 0, '0', 'R', 1} /* Guarda la cantidad de configuraciones.*/ unsigned int configurations = 4; /* m-configuración actual.*/ unsigned int m_configuration = 1; /* Símbolo escaneado.*/ unsigned int scanned = 0; /* Fila que se comprueba de la tabla de definición.*/ unsigned int row; /* Posiciones que representan la cinta.*/ unsigned int tape; while(MOVE){ row = 0; while(row < configurations){ if(tmachine[row][0] != m_configuration || tmachine[row][1] != tape[scanned]){ row++; } else{ tape[scanned] = tmachine[row][2]; switch(tmachine[row][3]){ case 'R': scanned++; case 'L': scanned--; } mconfiguration = tmachine[row][4]; row = configurations + 1; } } if(row == configurations){ STOP } }