Projeto de Informática Teórica II

    O objetivo deste projeto é implementar um simulador para máquinas de turing determinísticas.

Entrada (entrada.txt)

    Seu programa deverá  ler uma especificação de uma máquina de Turing de um arquivo chamado "entrada.txt". A codificação de uma Maquina de Turing(MT) é uma String da forma: T11T11T..., com cada transição "T" sendo separada por dois "1"s , sendo uma transição composta por:[estado atual].[próximo estado].[símbolo lido].[símbolo escrito].[movimento], onde o movimento indica se a cabeça se deslocará uma célula para a esquerda ou para a direita ou permanece na célula atual.Para os  campos estado atual e próximo estado , a codificação é a seguinte: 00->1, 000->2 e assim por diante.No campo movimento, a codificação é a seguinte: 0->permanece na célula, 00->desloca-se uma célula a esquerda, 000->desloca-se uma célula a direita.Nos campos restantes , temos que 0->Símbolo Branco, e qualquer outro símbolo utilizado, seguindo a codificação unária (0, 00, 000, 000...). A separação de cada campo, será dada por um "1". Exemplo de uma codificação para uma TM: 010100101000110101000101000. Observe que tal maquina possui apenas 2 transições, 1 estado e que troca 00 por 0,000 por 0 e se desloca sempre para a direita.

    O arquivo de entrada será formado pela especificação de uma máquina de turing seguida da descrição do conteúdo da fita no início da execução, de acordo com o alfabeto utilizado na codificação da máquina de turing.A fita é duplamente infinita, só será colocado no arquivo de entrada todo o menor subconjunto da fita envolvido por duas seqüências infinitas de posições em branco na fita. Segue um exemplo:

 

010100101000110101000101000

000

000

000

000

 

Saída (saida.txt)

    Seu programa deverá imprimir no arquivo de saída o estado final da fita. A fita deve ser descrita da mesma forma que no formato de entrada.

Exemplo:

(arquivo vazio)

Entrega do II Projeto

    O aluno terá até a meia-noite do dia estabelecido pelo professor para entregar o projeto via e-mail. A implementação deverá ser feita em Java e deverá ser entregue em um único arquivo chamado projeto.java( não será aceito arquivos zipados e muito menos arquivos zipados com senha,será aceito apenas o arquivo "projeto.java" na sua forma original ). A solução deverá ser enviada por e-mail para maurelio1234@gmail.com , o assunto do e-mail deverá ser "Segundo Projeto de Teoria (2004.2)" .

Observações sobre a Entrega do II Projeto

I) PROJETOS ENTREGUES FORA DA ESPECIFICAÇAO E/OU PARA MONITORES DIFERENTES E/OU COM O SUBJECT DIFERENTE TERÁ NOTA  ZERO;

II) NAO ACEITAREMOS PROJETOS ENTREGUES FORA DO PRAZO, SOB NENHUM PRETEXTO, PORTANTO CERTIFIQUE-SE DE QUE O ARQUIVO NO QUAL VOCE ESTARÁ ENVIADO  É  O CORRETO( ISSO NÃO QUER DIZER, É OBVIO, QUE VOCE NÃO PODERÁ ENVIAR NOVAS VERSOES ANTES DO PRAZO DE ENTREGA, MAS SE O PRAZO EXPIRAR, NÃO HA POSSIBILIDADE DE REENVIO);

III) O PROJETO  QUE  NÃO COMPILAR  TERÁ NOTA ZERO;

IV) PROJETOS COMPACTADOS OU PROJETOS COMPACTADOS E COM SENHA TERAO NOTA ZERO;

V) PROJETOS DEVERÃO SER AUTOCONTIDOS, OU SEJA, NÃO DEVEM DEPENDER DE NENHUMA CLASSE/BIBLIOTECA QUE NÃO ESTEJA CONTINA NO PRÓPRIO ARQUIVO ENTREGUE OU NA API PADRÃO JAVA